diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 729d248a9..2427e30b2 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -1121,6 +1121,18 @@
WildHasEscaped = False
Exit Sub
End If
+
+ 'Prevent turn count from resetting if battle just started
+ If BattleScreen.FieldEffects.OwnTurnCounts = 0 Then
+ HasSwitchedInOwn = False
+ End If
+ If BattleScreen.FieldEffects.OppTurnCounts = 0 Then
+ HasSwitchedInOpp = False
+ End If
+
+ TriggerItemEffect(BattleScreen, True)
+ TriggerItemEffect(BattleScreen, False)
+
'Transform Aegislash with Stance Change ability.
If p.Ability.Name.ToLower() = "stance change" AndAlso p.Number = 681 Then
If p.AdditionalData = "" Then
@@ -1169,7 +1181,7 @@
If p.Status = Pokemon.StatusProblems.Freeze Then
If Core.Random.Next(0, 100) < 20 Then
- CureStatusProblem(own, own, BattleScreen, p.GetDisplayName() & " thrawed out.", "own defrost")
+ CureStatusProblem(own, own, BattleScreen, p.GetDisplayName() & " thawed out.", "own defrost")
Else
BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\effect_ice1", False))
BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is frozen solid!"))
@@ -1221,7 +1233,7 @@
truantTurn = BattleScreen.FieldEffects.OppTruantRound
End If
If truantTurn = 1 Then
- BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " loafes around."))
+ BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is loafing around."))
Exit Sub
End If
End If
@@ -1297,7 +1309,7 @@
p.RemoveVolatileStatus(Pokemon.VolatileStatus.Confusion)
Else
BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is confused!"))
- 'Previously 'If Core.Random.Next(0, 2) = 0 Then' (Updated to gen 7's 33% instead of 50%)
+ 'Previously 'If Core.Random.Next(0, 2) = 0 Then' (Updated to gen 7's 33% instead of 50%)
If Core.Random.Next(0, 3) = 0 Then
Dim a As Attack = New ConfusionAttack()
Dim damage As Integer = BattleCalculation.CalculateDamage(a, False, True, True, BattleScreen)
@@ -1603,7 +1615,7 @@
If BattleScreen.FieldEffects.CanUseAbility(Not own, BattleScreen) = True Then
moveWorks = False
If oppHealblock > 0 Then
- ReduceHP(CInt(op.MaxHP / 4), Not own, own, BattleScreen, "Healblock blocked Volt Absorb!", "healblock")
+ ReduceHP(CInt(op.MaxHP / 4), Not own, own, BattleScreen, "Heal Block blocked Volt Absorb!", "healblock")
Else
If op.HP = op.MaxHP Then
BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & "'s Volt Absorb made " & moveUsed.Name & " useless!"))
@@ -1628,7 +1640,7 @@
If BattleScreen.FieldEffects.CanUseAbility(Not own, BattleScreen) = True Then
moveWorks = False
If oppHealblock > 0 Then
- ReduceHP(CInt(op.MaxHP / 4), Not own, own, BattleScreen, "Healblock blocked Water Absorb!", "healblock")
+ ReduceHP(CInt(op.MaxHP / 4), Not own, own, BattleScreen, "Heal Block blocked Water Absorb!", "healblock")
Else
If op.HP = op.MaxHP Then
BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & "'s Water Absorb made " & moveUsed.Name & " useless!"))
@@ -1642,7 +1654,7 @@
If BattleScreen.FieldEffects.CanUseAbility(Not own, BattleScreen) = True Then
moveWorks = False
If oppHealblock > 0 Then
- ReduceHP(CInt(op.MaxHP / 4), Not own, own, BattleScreen, "Healblock blocked Dry Skin!", "healblock")
+ ReduceHP(CInt(op.MaxHP / 4), Not own, own, BattleScreen, "Heal Block blocked Dry Skin!", "healblock")
Else
If op.HP = op.MaxHP Then
BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & "'s Dry Skin made " & moveUsed.Name & " useless!"))
@@ -1705,6 +1717,13 @@
BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & " prevents damage with its Bulletproof ability!"))
End If
+ If BattleScreen.FieldEffects.PsychicTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(Not own, BattleScreen) = True Then
+ If moveUsed.Priority > 0 Then
+ moveWorks = False
+ BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & " surrounds itself with Psychic Terrain!"))
+ End If
+ End If
+
If moveWorks = True Then
If op.HP > 0 And op.Status <> Pokemon.StatusProblems.Fainted Then
Dim protect As Integer = BattleScreen.FieldEffects.OppProtectCounter
@@ -1793,7 +1812,7 @@
Dim moveList As String() = {"endeavor",
"fling",
"explosion",
- "selfdestruct",
+ "self-destruct",
"final gambit",
"bounce",
"dig",
@@ -2007,7 +2026,7 @@
Dim PBmoveList As String() = {"secret power",
"bug bite",
"pluck",
- "smelling salt",
+ "smelling salts",
"wake-up slap",
"knock off",
"relic song",
@@ -2151,6 +2170,10 @@
If moveUsed.MakesContact = True Then
LowerStat(own, Not own, BattleScreen, "Speed", 1, "Gooey slowed down " & p.GetDisplayName() & "!", "gooey")
End If
+ Case "tangling hair"
+ If moveUsed.MakesContact = True Then
+ LowerStat(own, Not own, BattleScreen, "Speed", 1, "Tangling Hair slowed down " & p.GetDisplayName() & "!", "tangling hair")
+ End If
Case "weak armor"
If moveUsed.Category = Attack.Categories.Physical Then
RaiseStat(Not own, Not own, BattleScreen, "Speed", 2, "Weak Armor causes the Speed to increase!", "weakarmor")
@@ -2259,6 +2282,22 @@
End If
End If
End If
+ Case "kee"
+ If moveUsed.Category = Attack.Categories.Physical Then
+ If AllDamage > 0 Then
+ If RemoveHeldItem(Not own, Not own, BattleScreen, "", "berry:kee") = True Then
+ BattleScreen.Battle.RaiseStat(Not own, Not own, BattleScreen, "Defense", 1, "", "berry:kee")
+ End If
+ End If
+ End If
+ Case "maranga"
+ If moveUsed.Category = Attack.Categories.Special Then
+ If AllDamage > 0 Then
+ If RemoveHeldItem(Not own, Not own, BattleScreen, "", "berry:maranga") = True Then
+ BattleScreen.Battle.RaiseStat(Not own, Not own, BattleScreen, "Special Defense", 1, "", "berry:maranga")
+ End If
+ End If
+ End If
End Select
End If
End If
@@ -2485,6 +2524,16 @@
Return False
End If
+ If own = False Then
+ If BattleScreen.FieldEffects.OppTurnCounts > BattleScreen.FieldEffects.OwnTurnCounts Then
+ Return False
+ End If
+ Else
+ If BattleScreen.FieldEffects.OwnTurnCounts > BattleScreen.FieldEffects.OppTurnCounts Then
+ Return False
+ End If
+ End If
+
If p.HasVolatileStatus(Pokemon.VolatileStatus.Flinch) = True Then
Return False
End If
@@ -2541,6 +2590,11 @@
Return False
End If
+ If BattleScreen.FieldEffects.MistyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then
+ BattleScreen.BattleQuery.Add(New TextQueryObject("The mist prevented the burn."))
+ Return False
+ End If
+
Dim substitute As Integer = BattleScreen.FieldEffects.OwnSubstitute
If own = False Then
substitute = BattleScreen.FieldEffects.OppSubstitute
@@ -2637,6 +2691,11 @@
Return False
End If
+ If BattleScreen.FieldEffects.MistyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then
+ BattleScreen.BattleQuery.Add(New TextQueryObject("The mist prevented the freeze."))
+ Return False
+ End If
+
Dim substitute As Integer = BattleScreen.FieldEffects.OwnSubstitute
If own = False Then
substitute = BattleScreen.FieldEffects.OppSubstitute
@@ -2749,6 +2808,11 @@
Return False
End If
+ If BattleScreen.FieldEffects.MistyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then
+ BattleScreen.BattleQuery.Add(New TextQueryObject("The mist prevented the paralysis."))
+ Return False
+ End If
+
Dim substitute As Integer = BattleScreen.FieldEffects.OwnSubstitute
If own = False Then
substitute = BattleScreen.FieldEffects.OppSubstitute
@@ -2831,6 +2895,16 @@
Return False
End If
+ If BattleScreen.FieldEffects.ElectricTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then
+ BattleScreen.BattleQuery.Add(New TextQueryObject("The electricity prevented the sleep."))
+ Return False
+ End If
+
+ If BattleScreen.FieldEffects.MistyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then
+ BattleScreen.BattleQuery.Add(New TextQueryObject("The mist prevented the sleep."))
+ Return False
+ End If
+
Dim SleepTurns As Integer = turnsPreset
If SleepTurns < 0 Then
SleepTurns = Core.Random.Next(1, 4)
@@ -2973,6 +3047,11 @@
Return False
End If
+ If BattleScreen.FieldEffects.MistyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then
+ BattleScreen.BattleQuery.Add(New TextQueryObject("The mist prevented the poison."))
+ Return False
+ End If
+
Dim substitute As Integer = BattleScreen.FieldEffects.OwnSubstitute
If own = False Then
substitute = BattleScreen.FieldEffects.OppSubstitute
@@ -3083,6 +3162,11 @@
Return False
End If
+ If BattleScreen.FieldEffects.MistyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then
+ BattleScreen.BattleQuery.Add(New TextQueryObject("The mist prevented the confusion."))
+ Return False
+ End If
+
Dim confusionTurns As Integer = Core.Random.Next(1, 5)
Dim substitute As Integer = BattleScreen.FieldEffects.OwnSubstitute
If own = False Then
@@ -4050,9 +4134,9 @@
Select Case message
Case "" 'Print default message only
If cause.StartsWith("berry:") = True Then
- BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " ate the " & lostItem.Name & "berry!"))
+ BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " ate the " & lostItem.Name & " Berry!"))
Else
- BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " lost the item " & lostItem.Name & "!"))
+ BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " lost the " & lostItem.Name & "!"))
End If
Case "-1" 'Print no message at all
'Do nothing
@@ -4060,9 +4144,9 @@
BattleScreen.BattleQuery.Add(New TextQueryObject(message))
If cause.StartsWith("berry:") = True Then
- BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " ate the " & lostItem.Name & "berry!"))
+ BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " ate the " & lostItem.Name & " Berry!"))
Else
- BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " lost the item " & lostItem.Name & "!"))
+ BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " lost the " & lostItem.Name & "!"))
End If
End Select
End If
@@ -4206,6 +4290,38 @@
ChangeWeather(own, own, BattleWeather.WeatherTypes.Sunny, turns, BattleScreen, "The sunlight turned harsh!", "drought")
Case "air lock"
ChangeWeather(own, own, BattleWeather.WeatherTypes.Clear, 0, BattleScreen, "", "airlock")
+ Case "electric surge"
+ If .FieldEffects.ElectricTerrain <= 0 Then
+ .FieldEffects.ElectricTerrain = turns
+ .FieldEffects.GrassyTerrain = 0
+ .FieldEffects.PsychicTerrain = 0
+ .FieldEffects.MistyTerrain = 0
+ .BattleQuery.Add(New TextQueryObject("An electric current runs across the battlefield!"))
+ End If
+ Case "grassy surge"
+ If .FieldEffects.GrassyTerrain <= 0 Then
+ .FieldEffects.ElectricTerrain = 0
+ .FieldEffects.GrassyTerrain = turns
+ .FieldEffects.PsychicTerrain = 0
+ .FieldEffects.MistyTerrain = 0
+ .BattleQuery.Add(New TextQueryObject("Grass grew to cover the battlefield!"))
+ End If
+ Case "misty surge"
+ If .FieldEffects.MistyTerrain <= 0 Then
+ .FieldEffects.ElectricTerrain = 0
+ .FieldEffects.GrassyTerrain = 0
+ .FieldEffects.PsychicTerrain = 0
+ .FieldEffects.MistyTerrain = turns
+ .BattleQuery.Add(New TextQueryObject("Mist swirls around the battlefield!"))
+ End If
+ Case "psychic surge"
+ If .FieldEffects.PsychicTerrain <= 0 Then
+ .FieldEffects.ElectricTerrain = 0
+ .FieldEffects.GrassyTerrain = 0
+ .FieldEffects.PsychicTerrain = turns
+ .FieldEffects.MistyTerrain = 0
+ .BattleQuery.Add(New TextQueryObject("The battlefield got weird!"))
+ End If
Case "download"
If op.Defense < op.SpDefense Then
RaiseStat(own, own, BattleScreen, "Attack", 1, "Download analyzed the foe!", "download")
@@ -4365,6 +4481,62 @@
End If
End With
End Sub
+
+ Public Sub TriggerItemEffect(ByVal BattleScreen As BattleScreen, ByVal own As Boolean)
+ With BattleScreen
+ Dim p, op As Pokemon
+ If own Then
+ p = .OwnPokemon
+ op = .OppPokemon
+ Else
+ p = .OppPokemon
+ op = .OwnPokemon
+ End If
+ If Not p.Item Is Nothing Then
+ If .FieldEffects.CanUseItem(own) = True And .FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
+ Select Case p.Item.Name.ToLower()
+ Case "electric seed"
+ If .FieldEffects.ElectricTerrain > 0 And p.StatDefense < 6 Then
+ If RemoveHeldItem(own, own, BattleScreen, "-1", "") = True Then
+ .BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & "'s Electric Seed activated!"))
+ RaiseStat(own, own, BattleScreen, "Defense", 1, "", "item:electricseed")
+ End If
+ End If
+ Case "grassy seed"
+ If .FieldEffects.GrassyTerrain > 0 And p.StatDefense < 6 Then
+ If RemoveHeldItem(own, own, BattleScreen, "-1", "") = True Then
+ .BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & "'s Grassy Seed activated!"))
+ RaiseStat(own, own, BattleScreen, "Defense", 1, "", "item:grassyseed")
+ End If
+ End If
+ Case "misty seed"
+ If .FieldEffects.MistyTerrain > 0 And p.StatSpDefense < 6 Then
+ If RemoveHeldItem(own, own, BattleScreen, "-1", "") = True Then
+ .BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & "'s Misty Seed activated!"))
+ RaiseStat(own, own, BattleScreen, "Special Defense", 1, "", "item:mistyseed")
+ End If
+ End If
+ Case "psychic seed"
+ If .FieldEffects.PsychicTerrain > 0 And p.StatSpDefense < 6 Then
+ If RemoveHeldItem(own, own, BattleScreen, "-1", "") = True Then
+ .BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & "'s Psychic Seed activated!"))
+ RaiseStat(own, own, BattleScreen, "Special Defense", 1, "", "item:psychicseed")
+ End If
+ End If
+ Case "berserk gene"
+ If p.StatAttack <> 6 OrElse p.StatSpAttack <> 6 Then
+ If RemoveHeldItem(own, own, BattleScreen, "-1", "") = True Then
+ InflictConfusion(own, own, BattleScreen, p.GetDisplayName() & " went berserk due to the Berserk Gene!", "item:berserkgene")
+ RaiseStat(own, own, BattleScreen, "Attack", 1, "", "item:berserkgene")
+ RaiseStat(own, own, BattleScreen, "Special Attack", 1, "", "item:berserkgene")
+ End If
+ End If
+ End Select
+ End If
+ End If
+ End With
+ End Sub
+
Private Sub ApplyForecast(ByVal BattleScreen As BattleScreen)
With BattleScreen
Dim p As Pokemon = .OwnPokemon
@@ -4522,6 +4694,32 @@
End If
End If
+ 'Terrains
+ If .FieldEffects.ElectricTerrain > 0 Then
+ .FieldEffects.ElectricTerrain -= 1
+ If .FieldEffects.ElectricTerrain = 0 Then
+ .BattleQuery.Add(New TextQueryObject("The electricity disappeared from the battlefield."))
+ End If
+ End If
+ If .FieldEffects.GrassyTerrain > 0 Then
+ .FieldEffects.GrassyTerrain -= 1
+ If .FieldEffects.GrassyTerrain = 0 Then
+ .BattleQuery.Add(New TextQueryObject("The grass disappeared from the battlefield."))
+ End If
+ End If
+ If .FieldEffects.MistyTerrain > 0 Then
+ .FieldEffects.MistyTerrain -= 1
+ If .FieldEffects.MistyTerrain = 0 Then
+ .BattleQuery.Add(New TextQueryObject("The mist disappeared from the battlefield."))
+ End If
+ End If
+ If .FieldEffects.PsychicTerrain > 0 Then
+ .FieldEffects.PsychicTerrain -= 1
+ If .FieldEffects.PsychicTerrain = 0 Then
+ .BattleQuery.Add(New TextQueryObject("The weirdness disappeared from the battlefield."))
+ End If
+ End If
+
'Water Sport
If .FieldEffects.WaterSport > 0 Then
.FieldEffects.WaterSport -= 1
@@ -4656,8 +4854,10 @@
'Turn count since battle started
.FieldEffects.OwnTurnCounts += 1
- 'Turn count since pokemon switched in(currently used for Fake Out only)
+ 'Turn count since pokemon switched in (currently used for Fake Out, First Impression, Slow Start)
.FieldEffects.OwnPokemonTurns += 1
+
+ 'Reset turn count for pokemon switching in
If HasSwitchedInOwn Then
.FieldEffects.OwnPokemonTurns = 0
HasSwitchedInOwn = False
@@ -4686,17 +4886,17 @@
End If
If .FieldEffects.OwnTaunt > 0 Then
.FieldEffects.OwnTaunt = 0
- .BattleQuery.Add(New TextQueryObject(.OwnPokemon.GetDisplayName() & " got healed from the taunt" & Environment.NewLine & "due to Mental Herb!"))
+ .BattleQuery.Add(New TextQueryObject(.OwnPokemon.GetDisplayName() & " got healed from the Taunt" & Environment.NewLine & "due to Mental Herb!"))
usedMentalHerb = True
End If
If .FieldEffects.OwnEncore > 0 Then
.FieldEffects.OwnEncore = 0
- .BattleQuery.Add(New TextQueryObject(.OwnPokemon.GetDisplayName() & " got healed from the encore" & Environment.NewLine & "due to Mental Herb!"))
+ .BattleQuery.Add(New TextQueryObject(.OwnPokemon.GetDisplayName() & " got healed from the Encore" & Environment.NewLine & "due to Mental Herb!"))
usedMentalHerb = True
End If
If .FieldEffects.OwnTorment > 0 Then
.FieldEffects.OwnTorment = 0
- .BattleQuery.Add(New TextQueryObject(.OwnPokemon.GetDisplayName() & " got healed from the torment" & Environment.NewLine & "due to Mental Herb!"))
+ .BattleQuery.Add(New TextQueryObject(.OwnPokemon.GetDisplayName() & " got healed from the Torment" & Environment.NewLine & "due to Mental Herb!"))
usedMentalHerb = True
End If
'Remove disable
@@ -4754,6 +4954,8 @@
If Me.PlayerWonBattle(BattleScreen) = True Then
Exit Sub
End If
+ TriggerItemEffect(BattleScreen, True)
+ TriggerItemEffect(BattleScreen, False)
ChangeCameraAngel(0, True, BattleScreen)
If IsAfterFaint = True Then
Exit Sub
@@ -4840,12 +5042,19 @@
If hailAbilities.Contains(.OwnPokemon.Ability.Name.ToLower()) = False Then
If .OwnPokemon.HP > 0 Then
Dim hailHP As Integer = CInt(.OwnPokemon.MaxHP / 16)
- ReduceHP(hailHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " took damage from the hailstorm!", "sandstorm")
+ ReduceHP(hailHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " took damage from the hailstorm!", "hail")
End If
End If
End If
End If
+ 'Grassy Terrain
+ If .FieldEffects.GrassyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(True, BattleScreen) = True Then
+ If .OwnPokemon.HP > 0 Then
+ GainHP(CInt(.OwnPokemon.MaxHP / 16), True, True, BattleScreen, .OwnPokemon.GetDisplayName() & " restored some HP due to the Grassy Terrain!", "grassyterrain")
+ End If
+ End If
+
If .OwnPokemon.HP > 0 Then
Dim HPChange As Integer = 0 'Use DrySkin/Rain Dish/Hydration/Ice Body
Dim HPMessage As String = ""
@@ -5219,21 +5428,21 @@
If .FieldEffects.OwnTaunt > 0 And .OwnPokemon.HP > 0 Then 'Taunt
.FieldEffects.OwnTaunt -= 1
If .FieldEffects.OwnTaunt = 0 Then
- .BattleQuery.Add(New TextQueryObject("The own taunt effect wore off"))
+ .BattleQuery.Add(New TextQueryObject("The Taunt effect wore off."))
End If
End If
If .FieldEffects.OwnMagnetRise > 0 And .OwnPokemon.HP > 0 Then 'Magnetrise
.FieldEffects.OwnMagnetRise -= 1
If .FieldEffects.OwnMagnetRise = 0 Then
- .BattleQuery.Add(New TextQueryObject("Own Magnet Rise effect faded."))
+ .BattleQuery.Add(New TextQueryObject("The Magnet Rise effect faded."))
End If
End If
If .FieldEffects.OwnHealBlock > 0 Then 'Healblock
.FieldEffects.OwnHealBlock -= 1
If .FieldEffects.OwnHealBlock = 0 Then
- .BattleQuery.Add(New TextQueryObject("The effect of the own heal block faded."))
+ .BattleQuery.Add(New TextQueryObject("The effects of Heal Block faded."))
End If
End If
@@ -5283,7 +5492,7 @@
If .OwnPokemon.HP > 0 And .OwnPokemon.Status = Pokemon.StatusProblems.None Then
If Not .OwnPokemon.Item Is Nothing Then
If .OwnPokemon.Item.Name.ToLower() = "flame orb" And .FieldEffects.CanUseItem(True) = True And BattleScreen.FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
- InflictBurn(True, True, BattleScreen, "Flame orb inflicts a burn!", "flameorb")
+ InflictBurn(True, True, BattleScreen, "Flame Orb inflicts a burn!", "flameorb")
End If
End If
End If
@@ -5291,7 +5500,7 @@
If .OwnPokemon.HP > 0 And .OwnPokemon.Status = Pokemon.StatusProblems.None Then
If Not .OwnPokemon.Item Is Nothing Then
If .OwnPokemon.Item.Name.ToLower() = "toxic orb" And .FieldEffects.CanUseItem(True) = True And BattleScreen.FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
- InflictPoison(True, True, BattleScreen, True, "Toxic orb inflicts a poisoning!", "toxicorb")
+ InflictPoison(True, True, BattleScreen, True, "Toxic Orb inflicts a poisoning!", "toxicorb")
End If
End If
End If
@@ -5399,8 +5608,10 @@
'Turn count since battle started
.FieldEffects.OppTurnCounts += 1
- 'Turn count (Currently used for Fake Out only)
+ 'Turn count since pokemon switched in (currently used for Fake Out, First Impression, Slow Start)
.FieldEffects.OppPokemonTurns += 1
+
+ 'Reset turn count for pokemon switching in
If HasSwitchedInOpp Then
.FieldEffects.OppPokemonTurns = 0
HasSwitchedInOpp = False
@@ -5429,17 +5640,17 @@
End If
If .FieldEffects.OppTaunt > 0 Then
.FieldEffects.OppTaunt = 0
- .BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & " got healed from the taunt" & Environment.NewLine & "due to Mental Herb!"))
+ .BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & " got healed from the Taunt" & Environment.NewLine & "due to Mental Herb!"))
usedMentalHerb = True
End If
If .FieldEffects.OppEncore > 0 Then
.FieldEffects.OppEncore = 0
- .BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & " got healed from the encore" & Environment.NewLine & "due to Mental Herb!"))
+ .BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & " got healed from the Encore" & Environment.NewLine & "due to Mental Herb!"))
usedMentalHerb = True
End If
If .FieldEffects.OppTorment > 0 Then
.FieldEffects.OppTorment = 0
- .BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & " got healed from the torment" & Environment.NewLine & "due to Mental Herb!"))
+ .BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & " got healed from the Torment" & Environment.NewLine & "due to Mental Herb!"))
usedMentalHerb = True
End If
'Remove disable
@@ -5496,6 +5707,8 @@
If IsAfterFaint = True Then
Exit Sub
End If
+ TriggerItemEffect(BattleScreen, True)
+ TriggerItemEffect(BattleScreen, False)
With BattleScreen
If .FieldEffects.OppReflect > 0 Then 'Stop reflect
.FieldEffects.OppReflect -= 1
@@ -5584,6 +5797,13 @@
End If
End If
+ 'Grassy Terrain
+ If .FieldEffects.GrassyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(False, BattleScreen) = True Then
+ If .OppPokemon.HP > 0 Then
+ GainHP(CInt(.OppPokemon.MaxHP / 16), False, False, BattleScreen, .OppPokemon.GetDisplayName() & " restored some HP due to the Grassy Terrain!", "grassyterrain")
+ End If
+ End If
+
If .OppPokemon.HP > 0 Then
Dim HPChange As Integer = 0 'Use DrySkin/Rain Dish/Hydration/Ice Body
Dim HPMessage As String = ""
@@ -5958,7 +6178,7 @@
If .FieldEffects.OppTaunt > 0 And .OppPokemon.HP > 0 Then 'Taunt
.FieldEffects.OppTaunt -= 1
If .FieldEffects.OppTaunt = 0 Then
- .BattleQuery.Add(New TextQueryObject("The opponent's taunt effect wore off"))
+ .BattleQuery.Add(New TextQueryObject("The opponent's Taunt effect wore off"))
End If
End If
@@ -5972,7 +6192,7 @@
If .FieldEffects.OppHealBlock > 0 Then 'Healblock
.FieldEffects.OppHealBlock -= 1
If .FieldEffects.OppHealBlock = 0 Then
- .BattleQuery.Add(New TextQueryObject("The effect of the opponent's heal block faded."))
+ .BattleQuery.Add(New TextQueryObject("The effect of the opponent's Heal Block faded."))
End If
End If
@@ -5998,7 +6218,7 @@
.FieldEffects.OppFutureSightTurns -= 1
If .FieldEffects.OppFutureSightTurns = 0 Then
If .OwnPokemon.HP > 0 Then
- ReduceHP(.FieldEffects.OppFutureSightDamage, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & "took the " & futureSight & " attack!", futureSight.Replace(" ", "").ToLower())
+ ReduceHP(.FieldEffects.OppFutureSightDamage, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " took the " & futureSight & " attack!", futureSight.Replace(" ", "").ToLower())
Else
.BattleQuery.Add(New TextQueryObject("The " & futureSight & " failed!"))
End If
@@ -6021,7 +6241,7 @@
If .OppPokemon.HP > 0 And .OppPokemon.Status <> Pokemon.StatusProblems.Burn Then
If Not .OppPokemon.Item Is Nothing Then
If .OppPokemon.Item.Name.ToLower() = "flame orb" And .FieldEffects.CanUseItem(False) = True And BattleScreen.FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
- InflictBurn(False, False, BattleScreen, "Flame orb inflicts a burn!", "flameorb")
+ InflictBurn(False, False, BattleScreen, "Flame Orb inflicts a burn!", "flameorb")
End If
End If
End If
@@ -6029,7 +6249,7 @@
If .OppPokemon.HP > 0 And .OppPokemon.Status <> Pokemon.StatusProblems.Poison And .OppPokemon.Status <> Pokemon.StatusProblems.BadPoison Then
If Not .OppPokemon.Item Is Nothing Then
If .OppPokemon.Item.Name.ToLower() = "toxic orb" And .FieldEffects.CanUseItem(False) = True And BattleScreen.FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
- InflictPoison(False, False, BattleScreen, True, "Toxic orb inflicts a poisoning!", "toxicorb")
+ InflictPoison(False, False, BattleScreen, True, "Toxic Orb inflicts a poisoning!", "toxicorb")
End If
End If
End If
@@ -6176,6 +6396,7 @@
.OwnSleepTurns = 0
.OwnTruantRound = 0
.OwnTaunt = 0
+ .OwnSmacked = 0
.OwnRageCounter = 0
.OwnUproar = 0
If .OwnUsedBatonPass = False Then .OwnFocusEnergy = 0
@@ -6376,22 +6597,7 @@
Dim spikeAffected As Boolean = True
Dim rockAffected As Boolean = True
- If p.Type1.Type = Element.Types.Flying Or p.Type2.Type = Element.Types.Flying Or p.Ability.Name.ToLower() = "levitate" And BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen) = True Then
- spikeAffected = False
- End If
-
- If .FieldEffects.Gravity > 0 Then
- spikeAffected = True
- Else
- If Not p.Item Is Nothing Then
- If p.Item.Name.ToLower() = "air ballon" And .FieldEffects.CanUseItem(False) = True And .FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
- spikeAffected = False
- End If
- If p.Item.Name.ToLower() = "iron ball" And .FieldEffects.CanUseItem(False) = True And .FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
- spikeAffected = True
- End If
- End If
- End If
+ spikeAffected = BattleScreen.FieldEffects.IsGrounded(True, BattleScreen)
'Spikes
If spikeAffected = True Then
@@ -6413,7 +6619,7 @@
If spikeAffected = True Then
If .FieldEffects.OppStickyWeb > 0 Then
- LowerStat(True, True, BattleScreen, "Speed", 1, "Your pokemon was caught in a sticky web!", "sticky web")
+ LowerStat(True, True, BattleScreen, "Speed", 1, "Your pokemon was caught in a Sticky Web!", "stickyweb")
End If
@@ -6461,6 +6667,7 @@
End If
TriggerAbilityEffect(BattleScreen, True)
+ TriggerItemEffect(BattleScreen, True)
If .OwnPokemon.Status = Pokemon.StatusProblems.Sleep Then
.FieldEffects.OwnSleepTurns = Core.Random.Next(1, 4)
@@ -6470,7 +6677,7 @@
BattleScreen.FieldEffects.OwnHealingWish = False
If .OwnPokemon.HP < .OwnPokemon.MaxHP Or .OwnPokemon.Status <> Pokemon.StatusProblems.None Then
- GainHP(.OwnPokemon.MaxHP - .OwnPokemon.HP, True, True, BattleScreen, "The healing wish came true for " & .OwnPokemon.GetDisplayName() & "!", "move:healingwish")
+ GainHP(.OwnPokemon.MaxHP - .OwnPokemon.HP, True, True, BattleScreen, "The Healing Wish came true for " & .OwnPokemon.GetDisplayName() & "!", "move:healingwish")
CureStatusProblem(True, True, BattleScreen, "", "move:healingwish")
End If
End If
@@ -6515,6 +6722,7 @@
.OppSleepTurns = 0
.OppTruantRound = 0
.OppTaunt = 0
+ .OppSmacked = 0
.OppRageCounter = 0
.OppUproar = 0
If .OppUsedBatonPass = False Then .OppFocusEnergy = 0
@@ -6705,22 +6913,7 @@
Dim spikeAffected As Boolean = True
Dim rockAffected As Boolean = True
- If p.Type1.Type = Element.Types.Flying Or p.Type2.Type = Element.Types.Flying Or p.Ability.Name.ToLower() = "levitate" Then
- spikeAffected = False
- End If
-
- If .FieldEffects.Gravity > 0 Then
- spikeAffected = True
- Else
- If Not p.Item Is Nothing Then
- If p.Item.Name.ToLower() = "air ballon" And .FieldEffects.CanUseItem(False) = True And .FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
- spikeAffected = False
- End If
- If p.Item.Name.ToLower() = "iron ball" And .FieldEffects.CanUseItem(False) = True And .FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
- spikeAffected = True
- End If
- End If
- End If
+ spikeAffected = BattleScreen.FieldEffects.IsGrounded(False, BattleScreen)
If spikeAffected = True Then
If .FieldEffects.OwnSpikes > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
@@ -6740,7 +6933,7 @@
If spikeAffected = True Then
If .FieldEffects.OwnStickyWeb > 0 Then
- LowerStat(False, False, BattleScreen, "Speed", 1, "The opposing pokemon was caught in a sticky web!", "sticky web")
+ LowerStat(False, False, BattleScreen, "Speed", 1, "The opposing pokemon was caught in a Sticky Web!", "stickyweb")
End If
@@ -6785,6 +6978,7 @@
End If
TriggerAbilityEffect(BattleScreen, False)
+ TriggerItemEffect(BattleScreen, False)
If .OppPokemon.Status = Pokemon.StatusProblems.Sleep Then
.FieldEffects.OppSleepTurns = Core.Random.Next(1, 4)
@@ -6794,7 +6988,7 @@
BattleScreen.FieldEffects.OppHealingWish = False
If .OppPokemon.HP < .OppPokemon.MaxHP Or .OppPokemon.Status <> Pokemon.StatusProblems.None Then
- GainHP(.OppPokemon.MaxHP - .OppPokemon.HP, False, False, BattleScreen, "The healing wish came true for " & .OppPokemon.GetDisplayName() & "!", "move:healingwish")
+ GainHP(.OppPokemon.MaxHP - .OppPokemon.HP, False, False, BattleScreen, "The Healing Wish came true for " & .OppPokemon.GetDisplayName() & "!", "move:healingwish")
CureStatusProblem(False, False, BattleScreen, "", "move:healingwish")
End If
End If
diff --git a/P3D/Battle/BattleSystemV2/BattleCalculation.vb b/P3D/Battle/BattleSystemV2/BattleCalculation.vb
index 3b64e9f46..c72f3a861 100644
--- a/P3D/Battle/BattleSystemV2/BattleCalculation.vb
+++ b/P3D/Battle/BattleSystemV2/BattleCalculation.vb
@@ -33,6 +33,12 @@
If moveName = "light screen" Or moveName = "reflect" Then
turns = 8
End If
+ Case "terrain extender"
+ If moveName = "electric terrain" Or moveName = "grassy terrain" Or moveName = "misty terrain" Or moveName = "psychic terrain" Then
+ turns = 8
+ ElseIf ability = "electric surge" Or ability = "grassy surge" Or ability = "misty surge" Or ability = "psychic surge" Then
+ turns = 8
+ End If
End Select
End If
Return turns
@@ -272,6 +278,14 @@
If BattleScreen.FieldEffects.Weather = BattleWeather.WeatherTypes.Sandstorm Then
speed *= 2
End If
+ Case "slush rush"
+ If BattleScreen.FieldEffects.Weather = BattleWeather.WeatherTypes.Hailstorm Then
+ speed *= 2
+ End If
+ Case "surge surfer"
+ If BattleScreen.FieldEffects.ElectricTerrain > 0 Then
+ speed *= 2
+ End If
End Select
Dim grassPledge As Integer = BattleScreen.FieldEffects.OppGrassPledge
@@ -291,11 +305,11 @@
If p.Ability.Name.ToLower() = "slow start" Then
If own = True Then
- If BattleScreen.FieldEffects.OwnTurnCounts < 5 Then
+ If BattleScreen.FieldEffects.OwnPokemonTurns < 5 Then
speed = CInt(speed / 2)
End If
Else
- If BattleScreen.FieldEffects.OppTurnCounts < 5 Then
+ If BattleScreen.FieldEffects.OppPokemonTurns < 5 Then
speed = CInt(speed / 2)
End If
End If
@@ -371,11 +385,11 @@
If p.Ability.Name.ToLower() = "slow start" Then
If own = True Then
- If BattleScreen.FieldEffects.OwnTurnCounts < 5 Then
+ If BattleScreen.FieldEffects.OwnPokemonTurns < 5 Then
attack = CInt(attack / 2)
End If
Else
- If BattleScreen.FieldEffects.OppTurnCounts < 5 Then
+ If BattleScreen.FieldEffects.OppPokemonTurns < 5 Then
attack = CInt(attack / 2)
End If
End If
@@ -491,7 +505,7 @@
result = INIT * ACCM
If Not op.Item Is Nothing And BattleScreen.FieldEffects.CanUseItem(Not own) = True Then
- If op.Item.Name.ToLower() = "brightpowder" Or op.Item.Name.ToLower() = "lax incense" Then
+ If op.Item.Name.ToLower() = "bright powder" Or op.Item.Name.ToLower() = "lax incense" Then
result *= 0.9F
End If
End If
@@ -674,31 +688,46 @@
op = BattleScreen.OwnPokemon
End If
+ If p.Type1.Type = Element.Types.Ghost Or p.Type2.Type = Element.Types.Ghost Then
+ Return True
+ End If
+
If p.Ability.Name.ToLower() = "run away" Then
Return True
End If
- If op.Ability.Name.ToLower() = "shadow tag" And p.Ability.Name.ToLower() <> "shadow tag" Then
+ If Not p.Item Is Nothing Then
+ If p.Item.Name.ToLower() = "smoke ball" And BattleScreen.FieldEffects.CanUseItem(own) = True And BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
+ Return True
+ End If
+ End If
+
+ If op.Ability.Name.ToLower() = "shadow tag" And p.Ability.Name.ToLower() <> "shadow tag" And op.HP > 0 Then
Return False
End If
- If op.Ability.Name.ToLower() = "arena trap" Then
- Dim magnetRise As Integer = BattleScreen.FieldEffects.OwnMagnetRise
- If own = False Then
- magnetRise = BattleScreen.FieldEffects.OppMagnetRise
- End If
-
- If p.Type1.Type <> Element.Types.Flying And p.Type2.Type <> Element.Types.Flying And p.Ability.Name.ToLower() <> "levitate" And magnetRise = 0 Then
- Return False
- End If
+ If op.Ability.Name.ToLower() = "arena trap" And op.HP > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then
+ Return False
End If
- If op.Ability.Name.ToLower() = "magnet pull" Then
+ If op.Ability.Name.ToLower() = "magnet pull" And op.HP > 0 Then
If p.Type1.Type = Element.Types.Steel Or p.Type2.Type = Element.Types.Steel Then
Return False
End If
End If
+ With BattleScreen.FieldEffects
+ If own = True Then
+ If .OwnWrap > 0 Or .OwnBind > 0 Or .OwnClamp > 0 Or .OwnFireSpin > 0 Or .OwnMagmaStorm > 0 Or .OwnSandTomb > 0 Or .OwnWhirlpool > 0 Or .OwnInfestation > 0 Then
+ Return False
+ End If
+ Else
+ If .OppWrap > 0 Or .OppBind > 0 Or .OppClamp > 0 Or .OppFireSpin > 0 Or .OppMagmaStorm > 0 Or .OppSandTomb > 0 Or .OppWhirlpool > 0 Or .OppInfestation > 0 Then
+ Return False
+ End If
+ End If
+ End With
+
Dim ingrain As Integer = BattleScreen.FieldEffects.OwnIngrain
If own = False Then
ingrain = BattleScreen.FieldEffects.OppIngrain
@@ -710,13 +739,6 @@
If p.Speed > op.Speed Then
Return True
Else
- If Not p.Item Is Nothing And BattleScreen.FieldEffects.CanUseItem(own) = True Then
- If p.Item.Name.ToLower() = "smoke ball" Then
- BattleScreen.FieldEffects.RunTries += 1
- Return True
- End If
- End If
-
Dim A As Integer = p.Speed
Dim B As Integer = op.Speed
If B = 0 Then
@@ -772,37 +794,84 @@
'Sheer Cold
If move.ID = 329 Then
If op.IsType(Element.Types.Ice) Then
- effectiveness = 0
- End If
- End If
-
- Dim _targetHasIronBall As Boolean = False
- If Not op.Item Is Nothing Then
- If op.Item.Name.ToLower() = "iron ball" And BattleScreen.FieldEffects.CanUseItem(own) = True And BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
- _targetHasIronBall = True
- End If
- End If
-
- If op.Ability.Name.ToLower() = "levitate" And move.GetAttackType(own, BattleScreen).Type = Element.Types.Ground And BattleScreen.FieldEffects.Gravity = 0 And _targetHasIronBall = False Then
- If BattleScreen.FieldEffects.CanUseAbility(Not own, BattleScreen) = True Then
effectiveness = 0.0F
End If
End If
- Dim ingrain As Integer = BattleScreen.FieldEffects.OppIngrain
- If own = False Then
- ingrain = BattleScreen.FieldEffects.OwnIngrain
+ Dim digHit As Boolean = False
+ Dim airHit As Boolean = False
+ Dim regHit As Boolean = False
+
+ 'Grounded condition
+ If move.GetAttackType(own, BattleScreen).Type = Element.Types.Ground And BattleScreen.FieldEffects.IsGrounded(Not own, BattleScreen) = False Then
+ Dim targetDig As Boolean = False
+ Dim targetAir As Boolean = False
+
+ With BattleScreen.FieldEffects
+ If own = True Then
+ If .OppDigCounter > 0 Then
+ targetDig = True
+ End If
+ If .OppFlyCounter > 0 Or .OppBounceCounter > 0 Or .OppSkyDropCounter > 0 Then
+ targetAir = True
+ End If
+ Else
+ If .OwnDigCounter > 0 Then
+ targetDig = True
+ End If
+ If .OwnFlyCounter > 0 Or .OwnBounceCounter > 0 Or .OwnSkyDropCounter > 0 Then
+ targetAir = True
+ End If
+ End If
+ End With
+
+ Select Case move.ID
+ Case 89, 90, 222 'Earthquake, Fissure, Magnitude
+ effectiveness = 0.0F
+ If targetDig = True Then
+ digHit = True
+ End If
+ Case 614 'Thousand Arrows
+ airHit = True
+ If targetAir = True Then
+ If own = True Then
+ BattleScreen.FieldEffects.OppFlyCounter = 0
+ BattleScreen.FieldEffects.OppBounceCounter = 0
+ Else
+ BattleScreen.FieldEffects.OwnFlyCounter = 0
+ BattleScreen.FieldEffects.OwnBounceCounter = 0
+ End If
+ End If
+ Case Else
+ effectiveness = 0.0F
+ End Select
+ ElseIf move.GetAttackType(own, BattleScreen).Type = Element.Types.Ground And BattleScreen.FieldEffects.IsGrounded(Not own, BattleScreen) = True Then
+ regHit = True
End If
- If move.GetAttackType(own, BattleScreen).Type = Element.Types.Ground Then
- If BattleScreen.FieldEffects.Gravity = 0 And ingrain = 0 And _targetHasIronBall = False Then
- Dim magnetRise As Integer = BattleScreen.FieldEffects.OppMagnetRise
- If own = False Then
- magnetRise = BattleScreen.FieldEffects.OwnMagnetRise
- End If
- If magnetRise > 0 Then
- effectiveness = 0.0F
- End If
+ 'Grounded hit effectiveness
+ If digHit = True Or airHit = True Or regHit = True Then
+ effectiveness = 1.0F
+ If op.IsType(Element.Types.Electric) Then
+ effectiveness *= 2
+ End If
+ If op.IsType(Element.Types.Fire) Then
+ effectiveness *= 2
+ End If
+ If op.IsType(Element.Types.Poison) Then
+ effectiveness *= 2
+ End If
+ If op.IsType(Element.Types.Rock) Then
+ effectiveness *= 2
+ End If
+ If op.IsType(Element.Types.Steel) Then
+ effectiveness *= 2
+ End If
+ If op.IsType(Element.Types.Bug) Then
+ effectiveness /= 2
+ End If
+ If op.IsType(Element.Types.Grass) Then
+ effectiveness /= 2
End If
End If
@@ -832,7 +901,6 @@
End If
End If
-
If op.IsType(Element.Types.Ghost) = True Then
Dim CanHitGhost = False
Dim Foresight As Integer = 0
@@ -1018,28 +1086,37 @@
Return True
End If
+ If BattleScreen.OwnPokemon.Type1.Type = Element.Types.Ghost Or BattleScreen.OwnPokemon.Type2.Type = Element.Types.Ghost Then
+ Return True
+ End If
+
+ With BattleScreen
+ If Not .OwnPokemon.Item Is Nothing Then
+ If .OwnPokemon.Item.Name.ToLower() = "shed shell" And .FieldEffects.CanUseItem(True) = True And .FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
+ Return True
+ End If
+ End If
+ End With
+
If BattleScreen.IsRemoteBattle AndAlso BattleScreen.IsPVPBattle AndAlso Not BattleScreen.IsHost Then
If BattleScreen.FieldEffects.ClientCanSwitch = False Then
Return False
End If
End If
- If BattleScreen.OppPokemon.Ability.Name.ToLower() = "shadow tag" And BattleScreen.OwnPokemon.Ability.Name.ToLower() <> "shadow tag" Then
+ If BattleScreen.OppPokemon.Ability.Name.ToLower() = "shadow tag" And BattleScreen.OwnPokemon.Ability.Name.ToLower() <> "shadow tag" And BattleScreen.OppPokemon.HP > 0 Then
Return False
End If
+
If BattleScreen.FieldEffects.OwnTrappedCounter > 0 Then
Return False
End If
- If BattleScreen.OppPokemon.Ability.Name.ToLower() = "arena trap" Then
- Dim magnetRise As Integer = BattleScreen.FieldEffects.OwnMagnetRise
-
- If BattleScreen.OwnPokemon.IsType(Element.Types.Flying) = False And BattleScreen.OwnPokemon.Ability.Name.ToLower() <> "levitate" And magnetRise = 0 Then
- Return False
- End If
+ If BattleScreen.OppPokemon.Ability.Name.ToLower() = "arena trap" And BattleScreen.OppPokemon.HP > 0 And BattleScreen.FieldEffects.IsGrounded(True, BattleScreen) = True Then
+ Return False
End If
- If BattleScreen.OppPokemon.Ability.Name.ToLower() = "magnet pull" And BattleScreen.OwnPokemon.IsType(Element.Types.Ghost) = False And BattleScreen.OwnPokemon.IsType(Element.Types.Steel) = True Then
+ If BattleScreen.OppPokemon.Ability.Name.ToLower() = "magnet pull" And BattleScreen.OwnPokemon.IsType(Element.Types.Steel) = True And BattleScreen.OppPokemon.HP > 0 Then
Return False
End If
@@ -1056,22 +1133,32 @@
If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Fainted Or BattleScreen.OppPokemon.HP <= 0 Then
Return True
End If
- If BattleScreen.OwnPokemon.Ability.Name.ToLower() = "shadow tag" And BattleScreen.OppPokemon.Ability.Name.ToLower() <> "shadow tag" Then
+
+ If BattleScreen.OppPokemon.Type1.Type = Element.Types.Ghost Or BattleScreen.OppPokemon.Type2.Type = Element.Types.Ghost Then
+ Return True
+ End If
+
+ With BattleScreen
+ If Not .OppPokemon.Item Is Nothing Then
+ If .OppPokemon.Item.Name.ToLower() = "shed shell" And .FieldEffects.CanUseItem(False) = True And .FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
+ Return True
+ End If
+ End If
+ End With
+
+ If BattleScreen.OwnPokemon.Ability.Name.ToLower() = "shadow tag" And BattleScreen.OppPokemon.Ability.Name.ToLower() <> "shadow tag" And BattleScreen.OwnPokemon.HP > 0 Then
Return False
End If
+
If BattleScreen.FieldEffects.OppTrappedCounter > 0 Then
Return False
End If
- If BattleScreen.OwnPokemon.Ability.Name.ToLower() = "arena trap" Then
- Dim magnetRise As Integer = BattleScreen.FieldEffects.OppMagnetRise
-
- If BattleScreen.OppPokemon.IsType(Element.Types.Flying) = False And BattleScreen.OppPokemon.Ability.Name.ToLower() <> "levitate" And magnetRise = 0 Then
- Return False
- End If
+ If BattleScreen.OwnPokemon.Ability.Name.ToLower() = "arena trap" And BattleScreen.OwnPokemon.HP > 0 And BattleScreen.FieldEffects.IsGrounded(False, BattleScreen) = True Then
+ Return False
End If
- If BattleScreen.OwnPokemon.Ability.Name.ToLower() = "magnet pull" And BattleScreen.OppPokemon.IsType(Element.Types.Ghost) = False And BattleScreen.OppPokemon.IsType(Element.Types.Steel) = True Then
+ If BattleScreen.OwnPokemon.Ability.Name.ToLower() = "magnet pull" And BattleScreen.OppPokemon.IsType(Element.Types.Steel) = True And BattleScreen.OwnPokemon.HP > 0 Then
Return False
End If
@@ -1308,10 +1395,6 @@
If Attack.IsJawMove = True Then
UA = 1.5F
End If
- Case "fur coat"
- If Attack.Category = Attack.Categories.Physical Then
- UA = 0.5F
- End If
Case "refrigerate"
If Attack.Type.Type = Element.Types.Normal Then
UA = 1.2F
@@ -1436,11 +1519,11 @@
AM = 1.5F
Case "slow start"
If Own = True Then
- If BattleScreen.FieldEffects.OwnTurnCounts < 5 Then
+ If BattleScreen.FieldEffects.OwnPokemonTurns < 5 Then
AM = 0.5F
End If
Else
- If BattleScreen.FieldEffects.OppTurnCounts < 5 Then
+ If BattleScreen.FieldEffects.OppPokemonTurns < 5 Then
AM = 0.5F
End If
End If
@@ -1580,7 +1663,7 @@
DSM = 1.0F
End If
- If Attack.Name.ToLower() = "selfdestruct" Or Attack.Name.ToLower() = "explosion" Then
+ If Attack.Name.ToLower() = "self-destruct" Or Attack.Name.ToLower() = "explosion" Then
SX = 1.0F
End If
@@ -1590,6 +1673,10 @@
If Op.Number = 132 Then
DMod = 1.5F
End If
+ Case "eviolite"
+ If Op.IsFullyEvolved = False Then
+ DMod = 1.5F
+ End If
End Select
End If
@@ -1600,6 +1687,15 @@
End If
End If
End If
+
+ If Op.Ability.Name.ToLower() = "fur coat" And BattleScreen.FieldEffects.CanUseAbility(Not Own, BattleScreen) = True Then
+ DMod = 2.0F
+ End If
+
+ If BattleScreen.FieldEffects.GrassyTerrain > 0 And Op.Ability.Name.ToLower() = "grass pelt" And BattleScreen.FieldEffects.CanUseAbility(Not Own, BattleScreen) = True Then
+ DMod = 1.5F
+ End If
+
ElseIf Attack.Category = Attack.Categories.Special Then
DStat = Attack.GetUseDefenseStat(Op)
DSM = GetMultiplierFromStat(Op.StatSpDefense)
@@ -1719,6 +1815,18 @@
If BattleScreen.FieldEffects.Weather = BattleWeather.WeatherTypes.Snow Then
SR = 1.5F
End If
+ Case Element.Types.Electric
+ If BattleScreen.FieldEffects.ElectricTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(Own, BattleScreen) = True Then
+ SR = 1.5F
+ End If
+ Case Element.Types.Grass
+ If BattleScreen.FieldEffects.GrassyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(Own, BattleScreen) = True Then
+ SR = 1.5F
+ End If
+ Case Element.Types.Psychic
+ If BattleScreen.FieldEffects.PsychicTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(Own, BattleScreen) = True Then
+ SR = 1.5F
+ End If
End Select
If p.Ability.Name.ToLower() = "flash fire" Then
@@ -1904,6 +2012,12 @@
TRB = 0.5F
End If
End If
+ Case "roseli"
+ If Attack.Type.Type = Element.Types.Fairy Then
+ If BattleScreen.Battle.RemoveHeldItem(Not Own, Not Own, BattleScreen, "The Roseli Berry weakened the effect of " & Attack.Name & " on " & Op.GetDisplayName() & "!", "berry:roseli") = True Then
+ TRB = 0.5F
+ End If
+ End If
End Select
End If
End If
@@ -1935,6 +2049,19 @@
damage = CInt(damage / 2)
End If
+ If BattleScreen.FieldEffects.MistyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(Own, BattleScreen) = True Then
+ If Attack.Type.Type = Element.Types.Dragon Then
+ damage = CInt(damage / 2)
+ End If
+ End If
+
+ If BattleScreen.FieldEffects.GrassyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(Own, BattleScreen) = True Then
+ 'Earthquake, Bulldoze, Magnitude
+ If Attack.ID = 89 Or Attack.ID = 523 Or Attack.ID = 222 Then
+ damage = CInt(damage / 2)
+ End If
+ End If
+
If Attack.IsOneHitKOMove = True Then
damage = Op.HP
End If
diff --git a/P3D/Battle/BattleSystemV2/BattleMenu.vb b/P3D/Battle/BattleSystemV2/BattleMenu.vb
index bee180309..ced62ba8a 100644
--- a/P3D/Battle/BattleSystemV2/BattleMenu.vb
+++ b/P3D/Battle/BattleSystemV2/BattleMenu.vb
@@ -50,7 +50,41 @@
If y > -1 Then
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\WeatherIcons"), New Rectangle(22, Core.windowSize.Height - 90, 176, 68), New Rectangle(x, y, 88, 34), Color.White)
- Core.SpriteBatch.DrawString(FontManager.MiniFont, t, New Vector2(110 - FontManager.MiniFont.MeasureString(t).X / 2, Core.windowSize.Height - 42), Color.Black)
+ Core.SpriteBatch.DrawString(FontManager.MiniFont, t, New Vector2(110 - FontManager.MiniFont.MeasureString(t).X / 2, Core.windowSize.Height - 44), Color.Black)
+ End If
+ End Sub
+
+ Private Sub DrawTerrain(ByVal BattleScreen As BattleScreen)
+ Dim y As Integer = -1
+ Dim x As Integer = 0
+ Dim t As String = ""
+
+ With BattleScreen.FieldEffects
+ If .ElectricTerrain > 0 Then
+ x = 352
+ y = 0
+ t = "Electric Terrain"
+ End If
+ If .GrassyTerrain > 0 Then
+ x = 352
+ y = 34
+ t = "Grassy Terrain"
+ End If
+ If .MistyTerrain > 0 Then
+ x = 352
+ y = 68
+ t = "Misty Terrain"
+ End If
+ If .PsychicTerrain > 0 Then
+ x = 352
+ y = 102
+ t = "Psychic Terrain"
+ End If
+ End With
+
+ If y > -1 Then
+ Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\WeatherIcons"), New Rectangle(222, Core.windowSize.Height - 90, 176, 68), New Rectangle(x, y, 88, 34), Color.White)
+ Core.SpriteBatch.DrawString(FontManager.MiniFont, t, New Vector2(310 - FontManager.MiniFont.MeasureString(t).X / 2, Core.windowSize.Height - 44), Color.Black)
End If
End Sub
@@ -268,6 +302,7 @@
End Select
DrawWeather(BattleScreen)
+ DrawTerrain(BattleScreen)
End If
End Sub
diff --git a/P3D/Battle/BattleSystemV2/BattleScreen.vb b/P3D/Battle/BattleSystemV2/BattleScreen.vb
index e8237dd9c..d51444de8 100644
--- a/P3D/Battle/BattleSystemV2/BattleScreen.vb
+++ b/P3D/Battle/BattleSystemV2/BattleScreen.vb
@@ -8,6 +8,10 @@
Public OwnFaint As Boolean = False
Public OppFaint As Boolean = False
+ 'Used for moves like U-turn (self-switch)
+ Public OwnSelfSwitch As Boolean = False
+ Public OppSelfSwitch As Boolean = False
+
'Used for lead picking in PvP Battles
Public Shared OwnLeadIndex As Integer = 0
Public Shared OppLeadIndex As Integer = 0
@@ -284,7 +288,7 @@
q3.PassThis = True
Dim q31 As New PlaySoundQueryObject(OwnPokemon.Number.ToString(), True, 3.0F)
- Dim q4 As TextQueryObject = New TextQueryObject("GO, " & Me.OwnPokemon.GetDisplayName() & "!")
+ Dim q4 As TextQueryObject = New TextQueryObject("Go, " & Me.OwnPokemon.GetDisplayName() & "!")
Dim q5 As ToggleMenuQueryObject = New ToggleMenuQueryObject(Me.BattleMenu.Visible)
@@ -428,7 +432,7 @@
q3.PassThis = True
Dim q31 As New PlaySoundQueryObject(OwnPokemon.Number.ToString(), True, 3.0F)
- Dim q4 As TextQueryObject = New TextQueryObject("GO, " & Me.OwnPokemon.GetDisplayName() & "!")
+ Dim q4 As TextQueryObject = New TextQueryObject("Go, " & Me.OwnPokemon.GetDisplayName() & "!")
Dim q5 As ToggleMenuQueryObject = New ToggleMenuQueryObject(Me.BattleMenu.Visible)
@@ -680,7 +684,7 @@
q3.PassThis = True
Dim q31 As New PlaySoundQueryObject(OwnPokemon.Number.ToString(), True, 3.0F)
- Dim q4 As TextQueryObject = New TextQueryObject("GO, " & Me.OwnPokemon.GetDisplayName() & "!")
+ Dim q4 As TextQueryObject = New TextQueryObject("Go, " & Me.OwnPokemon.GetDisplayName() & "!")
Dim q5 As ToggleMenuQueryObject = New ToggleMenuQueryObject(Me.BattleMenu.Visible)
diff --git a/P3D/Battle/BattleSystemV2/FieldEffects.vb b/P3D/Battle/BattleSystemV2/FieldEffects.vb
index daaabc88d..99e85c7e5 100644
--- a/P3D/Battle/BattleSystemV2/FieldEffects.vb
+++ b/P3D/Battle/BattleSystemV2/FieldEffects.vb
@@ -10,13 +10,20 @@
Public OwnTruantRound As Integer = 0 'Truant move counter
Public OwnImprison As Integer = 0 'Imprison move counter
Public OwnTaunt As Integer = 0 'Taunt move counter
+ Public OwnTelekinesis As Integer = 0 'Telekinesis move counter
Public OwnRageCounter As Integer = 0 'Rage move counter
Public OwnUproar As Integer = 0 'Uproar move counter
Public OwnFocusEnergy As Integer = 0 'Focus energy move counter
Public OwnEndure As Integer = 0 'Endure move counter
Public OwnProtectCounter As Integer = 0 'Protect move counter
Public OwnKingsShieldCounter As Integer = 0 'Kings Shield move counter
+ Public OwnSpikyShieldCounter As Integer = 0 'Spiky Shield move counter
Public OwnDetectCounter As Integer = 0 'Detect move counter
+ Public OwnBanefulBunkerCounter As Integer = 0 'Baneful Bunker move counter
+ Public OwnCraftyShieldCounter As Integer = 0 'Crafty Shield move counter
+ Public OwnMatBlockCounter As Integer = 0 'Mat Block move counter
+ Public OwnWideGuardCounter As Integer = 0 'Wide Guard move counter
+ Public OwnQuickGuardCounter As Integer = 0 'Quick Guard move counter
Public OwnIngrain As Integer = 0 'Ingrain move counter
Public OwnSubstitute As Integer = 0 'Substitute HP left
Public OwnLuckyChant As Integer = 0 'Lucky chant move counter
@@ -92,6 +99,7 @@
Public OwnUsedMoves As New List(Of Integer)
Public OwnMagicCoat As Integer = 0
Public OwnConsumedItem As Item = Nothing
+ Public OwnSmacked As Integer = 0 'Smack Down effect condition
Public OwnPursuit As Boolean = False
Public OwnMegaEvolved As Boolean = False
Public OwnRoostUsed As Boolean = False 'If roost got used, this is true and will get set false and revert types at the end of a turn.
@@ -134,13 +142,20 @@
Public OppImprison As Integer = 0
Public OppHealBlock As Integer = 0
Public OppTaunt As Integer = 0
+ Public OppTelekinesis As Integer = 0
Public OppRageCounter As Integer = 0
Public OppUproar As Integer = 0
Public OppFocusEnergy As Integer = 0
Public OppEndure As Integer = 0
Public OppProtectCounter As Integer = 0
Public OppKingsShieldCounter As Integer = 0
+ Public OppSpikyShieldCounter As Integer = 0
Public OppDetectCounter As Integer = 0
+ Public OppBanefulBunkerCounter As Integer = 0
+ Public OppCraftyShieldCounter As Integer = 0
+ Public OppMatBlockCounter As Integer = 0
+ Public OppWideGuardCounter As Integer = 0
+ Public OppQuickGuardCounter As Integer = 0
Public OppIngrain As Integer = 0
Public OppSubstitute As Integer = 0
Public OppSafeguard As Integer = 0
@@ -204,6 +219,7 @@
Public OppPokemonDamagedLastTurn As Boolean = False
Public OppMagicCoat As Integer = 0
Public OppConsumedItem As Item = Nothing
+ Public OppSmacked As Integer = 0
Public OppPursuit As Boolean = False
Public OppMegaEvolved As Boolean = False
Public OppRoostUsed As Boolean = False
@@ -253,6 +269,11 @@
Public Rounds As Integer = 0
Public AmuletCoin As Integer = 0
+ Public ElectricTerrain As Integer = 0
+ Public GrassyTerrain As Integer = 0
+ Public MistyTerrain As Integer = 0
+ Public PsychicTerrain As Integer = 0
+
'Special stuff
Public RunTries As Integer = 0
Public UsedPokemon As New List(Of Integer)
@@ -325,6 +346,63 @@
Return True
End Function
+ Public Function IsGrounded(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Boolean
+ Dim p As Pokemon = BattleScreen.OwnPokemon
+ Dim grounded As Boolean = True
+ If own = True Then
+ If p.Type1.Type = Element.Types.Flying Or p.Type2.Type = Element.Types.Flying Or p.Ability.Name.ToLower() = "levitate" And BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen) = True Then
+ grounded = False
+ End If
+ If BattleScreen.FieldEffects.Gravity > 0 Or BattleScreen.FieldEffects.OwnSmacked > 0 Or BattleScreen.FieldEffects.OwnIngrain > 0 Then
+ grounded = True
+ Else
+ If BattleScreen.FieldEffects.OwnTelekinesis > 0 Or BattleScreen.FieldEffects.OwnMagnetRise > 0 Then
+ grounded = False
+ End If
+ If Not p.Item Is Nothing Then
+ If p.Item.Name.ToLower() = "air balloon" And BattleScreen.FieldEffects.CanUseItem(True) = True And BattleScreen.FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
+ grounded = False
+ End If
+ If p.Item.Name.ToLower() = "iron ball" And BattleScreen.FieldEffects.CanUseItem(True) = True And BattleScreen.FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
+ grounded = True
+ End If
+ End If
+ End If
+ If OwnBounceCounter > 0 Or OwnDigCounter > 0 Or OwnDiveCounter > 0 Or OwnFlyCounter > 0 Or OwnPhantomForceCounter > 0 Or OwnShadowForceCounter > 0 Or OwnSkyDropCounter > 0 Then
+ grounded = False
+ End If
+ Else
+ p = BattleScreen.OppPokemon
+ If p.Type1.Type = Element.Types.Flying Or p.Type2.Type = Element.Types.Flying Or p.Ability.Name.ToLower() = "levitate" And BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen) = True Then
+ grounded = False
+ End If
+ If BattleScreen.FieldEffects.Gravity > 0 Or BattleScreen.FieldEffects.OppSmacked > 0 Or BattleScreen.FieldEffects.OppIngrain > 0 Then
+ grounded = True
+ Else
+ If BattleScreen.FieldEffects.OppTelekinesis > 0 Or BattleScreen.FieldEffects.OppMagnetRise > 0 Then
+ grounded = False
+ End If
+ If Not p.Item Is Nothing Then
+ If p.Item.Name.ToLower() = "air balloon" And BattleScreen.FieldEffects.CanUseItem(False) = True And BattleScreen.FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
+ grounded = False
+ End If
+ If p.Item.Name.ToLower() = "iron ball" And BattleScreen.FieldEffects.CanUseItem(False) = True And BattleScreen.FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
+ grounded = True
+ End If
+ End If
+ End If
+ If OppBounceCounter > 0 Or OppDigCounter > 0 Or OppDiveCounter > 0 Or OppFlyCounter > 0 Or OppPhantomForceCounter > 0 Or OppShadowForceCounter > 0 Or OppSkyDropCounter > 0 Then
+ grounded = False
+ End If
+ End If
+
+ If grounded = True Then
+ Return True
+ Else
+ Return False
+ End If
+ End Function
+
Public Function GetPokemonWeight(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Single
Dim p As Pokemon = BattleScreen.OwnPokemon
Dim op As Pokemon = BattleScreen.OppPokemon
diff --git a/P3D/Battle/BattleSystemV2/PokemonProfile.vb b/P3D/Battle/BattleSystemV2/PokemonProfile.vb
index 985c65511..d1b20a3fd 100644
--- a/P3D/Battle/BattleSystemV2/PokemonProfile.vb
+++ b/P3D/Battle/BattleSystemV2/PokemonProfile.vb
@@ -117,6 +117,10 @@
'''
Public Taunted As Integer = 0
'''
+ ''' Telekinesis move counter, if true, Pokémon will always be hit.
+ '''
+ Public Telekinesis As Integer = 0
+ '''
''' If the Pokémon is affected by Embargo.
'''
Public Embargo As Integer = 0
@@ -353,6 +357,30 @@
''' King's Shield move counter.
'''
Public KingsShield As Integer = 0
+ '''
+ ''' Spiky Shield move counter.
+ '''
+ Public SpikyShield As Integer = 0
+ '''
+ ''' Baneful Bunker move counter.
+ '''
+ Public BanefulBunker As Integer = 0
+ '''
+ ''' Crafty Shield move counter.
+ '''
+ Public CraftyShield As Integer = 0
+ '''
+ ''' Mat Block move counter.
+ '''
+ Public MatBlock As Integer = 0
+ '''
+ ''' Wide Guard move counter.
+ '''
+ Public WideGuard As Integer = 0
+ '''
+ ''' Quick Guard move counter.
+ '''
+ Public QuickGuard As Integer = 0
'''
''' Ingrain move counter.
@@ -375,6 +403,10 @@
'''
Public Cursed As Integer = 0
'''
+ ''' If the Pokémon is affected by Grounding.
+ '''
+ Public Smacked As Integer = 0
+ '''
''' Turns until Perish Song faints Pokémon.
'''
Public PerishSong As Integer = 0
@@ -436,12 +468,19 @@
Me.SleepTurns = 0
Me.TruantRound = 0
Me.Taunted = 0
+ Me.Telekinesis = 0
Me.Rage = 0
Me.Uproar = 0
Me.Endure = 0
Me.Protect = 0
Me.Detect = 0
Me.KingsShield = 0
+ Me.SpikyShield = 0
+ Me.BanefulBunker = 0
+ Me.CraftyShield = 0
+ Me.MatBlock = 0
+ Me.WideGuard = 0
+ Me.QuickGuard = 0
Me.ProtectMoveCounter = 0
Me.ToxicRound = 0
Me.Nightmare = 0
@@ -495,6 +534,7 @@
Me.Bide = 0
Me.BideDamage = 0
Me.Roost = 0
+ Me.Smacked = 0
'If Baton Pass is not used to switch, also reset these variables:
If BatonPassed = False Then
diff --git a/P3D/Content/Data/Scripts/center_script.dat b/P3D/Content/Data/Scripts/center_script.dat
index 0c5ec3916..aca43284f 100644
Binary files a/P3D/Content/Data/Scripts/center_script.dat and b/P3D/Content/Data/Scripts/center_script.dat differ
diff --git a/P3D/Content/Pokemon/Overworld/Normal/330.png b/P3D/Content/Pokemon/Overworld/Normal/330.png
index 2d61ce1f3..83b3ce827 100644
Binary files a/P3D/Content/Pokemon/Overworld/Normal/330.png and b/P3D/Content/Pokemon/Overworld/Normal/330.png differ
diff --git a/P3D/Content/Pokemon/Overworld/Shiny/330.png b/P3D/Content/Pokemon/Overworld/Shiny/330.png
index 50689104f..b45d45e10 100644
Binary files a/P3D/Content/Pokemon/Overworld/Shiny/330.png and b/P3D/Content/Pokemon/Overworld/Shiny/330.png differ
diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index 0a16403ec..01a6497f7 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -10999,6 +10999,15 @@
PreserveNewest
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
PreserveNewest
@@ -26097,6 +26106,10 @@
PreserveNewest
+
+
+
+
@@ -26116,6 +26129,8 @@
+
+
@@ -26132,6 +26147,7 @@
+
@@ -26161,6 +26177,7 @@
+
@@ -26172,6 +26189,9 @@
+
+
+
@@ -26184,6 +26204,12 @@
+
+
+
+
+
+
@@ -27099,15 +27125,15 @@
-
-
+
+
-
+
@@ -27117,7 +27143,7 @@
-
+
@@ -27186,7 +27212,7 @@
-
+
@@ -27299,7 +27325,7 @@
-
+
@@ -27322,7 +27348,7 @@
-
+
@@ -27356,7 +27382,7 @@
-
+
@@ -27417,7 +27443,7 @@
-
+
@@ -27445,7 +27471,7 @@
-
+
@@ -27455,11 +27481,11 @@
-
-
+
+
-
+
@@ -27473,7 +27499,7 @@
-
+
@@ -27582,7 +27608,7 @@
-
+
@@ -27595,18 +27621,18 @@
-
+
-
+
-
+
-
+
@@ -28135,7 +28161,7 @@
-
+
diff --git a/P3D/Pokemon/Attacks/Attack.vb b/P3D/Pokemon/Attacks/Attack.vb
index e7a6ba831..be18ab2f7 100644
--- a/P3D/Pokemon/Attacks/Attack.vb
+++ b/P3D/Pokemon/Attacks/Attack.vb
@@ -459,7 +459,7 @@
Case 107
returnMove = New Moves.Normal.Minimize()
Case 108
- returnMove = New Moves.Normal.SmokeScreen()
+ returnMove = New Moves.Normal.Smokescreen()
Case 109
returnMove = New Moves.Ghost.ConfuseRay()
Case 110
@@ -483,7 +483,7 @@
Case 119
returnMove = New Moves.Flying.MirrorMove()
Case 120
- returnMove = New Moves.Normal.Selfdestruct()
+ returnMove = New Moves.Normal.SelfDestruct()
Case 121
returnMove = New Moves.Normal.EggBomb()
Case 122
@@ -513,9 +513,9 @@
Case 134
returnMove = New Moves.Psychic.Kinesis()
Case 135
- returnMove = New Moves.Normal.Softboiled()
+ returnMove = New Moves.Normal.SoftBoiled()
Case 136
- returnMove = New Moves.Fighting.HiJumpKick()
+ returnMove = New Moves.Fighting.HighJumpKick()
Case 137
returnMove = New Moves.Normal.Glare()
Case 138
@@ -613,9 +613,9 @@
Case 184
returnMove = New Moves.Normal.ScaryFace()
Case 185
- returnMove = New Moves.Dark.FaintAttack()
+ returnMove = New Moves.Dark.FeintAttack()
Case 186
- returnMove = New Moves.Normal.SweetKiss()
+ returnMove = New Moves.Fairy.SweetKiss()
Case 187
returnMove = New Moves.Normal.BellyDrum()
Case 188
@@ -651,7 +651,7 @@
Case 203
returnMove = New Moves.Normal.Endure()
Case 204
- returnMove = New Moves.Normal.Charm()
+ returnMove = New Moves.Fairy.Charm()
Case 205
returnMove = New Moves.Rock.Rollout()
Case 206
@@ -715,7 +715,7 @@
Case 235
returnMove = New Moves.Grass.Synthesis()
Case 236
- returnMove = New Moves.Normal.Moonlight()
+ returnMove = New Moves.Fairy.Moonlight()
Case 237
returnMove = New Moves.Normal.HiddenPower()
Case 238
@@ -773,7 +773,7 @@
Case 264
returnMove = New Moves.Fighting.FocusPunch()
Case 265
- returnMove = New Moves.Normal.SmellingSalt()
+ returnMove = New Moves.Normal.SmellingSalts()
'Case 266
'Follow me - Double Battles
Case 267
diff --git a/P3D/Pokemon/Attacks/Bug/BugBite.vb b/P3D/Pokemon/Attacks/Bug/BugBite.vb
index 009317269..96281df8d 100644
--- a/P3D/Pokemon/Attacks/Bug/BugBite.vb
+++ b/P3D/Pokemon/Attacks/Bug/BugBite.vb
@@ -14,7 +14,7 @@
Me.Power = 60
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Tough
+ Me.ContestCategory = ContestCategories.Cute
Me.Name = "Bug Bite"
Me.Description = "The user bites the target. If the target is holding a Berry, the user eats it and gains its effect."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Bug/BugBuzz.vb b/P3D/Pokemon/Attacks/Bug/BugBuzz.vb
index 16fb84a0a..a21195ebc 100644
--- a/P3D/Pokemon/Attacks/Bug/BugBuzz.vb
+++ b/P3D/Pokemon/Attacks/Bug/BugBuzz.vb
@@ -14,7 +14,7 @@
Me.Power = 90
Me.Accuracy = 100
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Cute
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Bug Buzz"
Me.Description = "The user vibrates its wings to generate a damaging sound wave. This may also lower the target's Sp. Def stat."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Bug/SpiderWeb.vb b/P3D/Pokemon/Attacks/Bug/SpiderWeb.vb
index f58c84655..8f4c7277c 100644
--- a/P3D/Pokemon/Attacks/Bug/SpiderWeb.vb
+++ b/P3D/Pokemon/Attacks/Bug/SpiderWeb.vb
@@ -26,7 +26,7 @@
'#SpecialDefinitions
Me.MakesContact = False
- Me.ProtectAffected = True
+ Me.ProtectAffected = False
Me.MagicCoatAffected = True
Me.SnatchAffected = False
Me.MirrorMoveAffected = True
diff --git a/P3D/Pokemon/Attacks/Bug/UTurn.vb b/P3D/Pokemon/Attacks/Bug/U-Turn.vb
similarity index 100%
rename from P3D/Pokemon/Attacks/Bug/UTurn.vb
rename to P3D/Pokemon/Attacks/Bug/U-Turn.vb
diff --git a/P3D/Pokemon/Attacks/Bug/Xscissor.vb b/P3D/Pokemon/Attacks/Bug/Xscissor.vb
index e975345bb..e6d78ff57 100644
--- a/P3D/Pokemon/Attacks/Bug/Xscissor.vb
+++ b/P3D/Pokemon/Attacks/Bug/Xscissor.vb
@@ -1,6 +1,6 @@
Namespace BattleSystem.Moves.Bug
- Public Class Xscissor
+ Public Class XScissor
Inherits Attack
@@ -14,7 +14,7 @@
Me.Power = 80
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Cool
Me.Name = "X-Scissor"
Me.Description = "The user slashes at the target by crossing its scythes or claws as if they were a pair of scissors."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Dark/Assurance.vb b/P3D/Pokemon/Attacks/Dark/Assurance.vb
index 7839049d7..190460604 100644
--- a/P3D/Pokemon/Attacks/Dark/Assurance.vb
+++ b/P3D/Pokemon/Attacks/Dark/Assurance.vb
@@ -14,7 +14,7 @@
Me.Power = 60
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Smart
Me.Name = "Assurance"
Me.Description = "If the target has already taken some damage in the same turn, this attack's power is doubled."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Dark/Embargo.vb b/P3D/Pokemon/Attacks/Dark/Embargo.vb
index 8f67879f9..a200e6893 100644
--- a/P3D/Pokemon/Attacks/Dark/Embargo.vb
+++ b/P3D/Pokemon/Attacks/Dark/Embargo.vb
@@ -14,7 +14,7 @@
Me.Power = 0
Me.Accuracy = 100
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Cute
+ Me.ContestCategory = ContestCategories.Smart
Me.Name = "Embargo"
Me.Description = "This move prevents the target from using its held item. Its Trainer is also prevented from using items on it."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Dark/FakeTears.vb b/P3D/Pokemon/Attacks/Dark/FakeTears.vb
index ee524b5ad..bb50f5a9f 100644
--- a/P3D/Pokemon/Attacks/Dark/FakeTears.vb
+++ b/P3D/Pokemon/Attacks/Dark/FakeTears.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Dark
Me.Power = 0
Me.Accuracy = 100
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Cute
Me.Name = "Fake Tears"
Me.Description = "The user feigns crying to fluster the target, harshly lowering its Sp. Def stat."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Dark/FaintAttack.vb b/P3D/Pokemon/Attacks/Dark/FeintAttack.vb
similarity index 96%
rename from P3D/Pokemon/Attacks/Dark/FaintAttack.vb
rename to P3D/Pokemon/Attacks/Dark/FeintAttack.vb
index 5d694e3ae..3227532ce 100644
--- a/P3D/Pokemon/Attacks/Dark/FaintAttack.vb
+++ b/P3D/Pokemon/Attacks/Dark/FeintAttack.vb
@@ -1,6 +1,6 @@
Namespace BattleSystem.Moves.Dark
- Public Class FaintAttack
+ Public Class FeintAttack
Inherits Attack
@@ -15,7 +15,7 @@
Me.Accuracy = 0
Me.Category = Categories.Physical
Me.ContestCategory = ContestCategories.Smart
- Me.Name = "Faint Attack"
+ Me.Name = "Feint Attack"
Me.Description = "The user approaches the target disarmingly, then throws a sucker punch. It hits without fail."
Me.CriticalChance = 1
Me.IsHMMove = False
diff --git a/P3D/Pokemon/Attacks/Dark/Fling.vb b/P3D/Pokemon/Attacks/Dark/Fling.vb
index 96e57ffdc..d42588999 100644
--- a/P3D/Pokemon/Attacks/Dark/Fling.vb
+++ b/P3D/Pokemon/Attacks/Dark/Fling.vb
@@ -14,7 +14,7 @@
Me.Power = 0
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Tough
+ Me.ContestCategory = ContestCategories.Cute
Me.Name = "Fling"
Me.Description = "The user flings its held item at the target to attack. This move's power and effects depend on the item."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Dark/NastyPlot.vb b/P3D/Pokemon/Attacks/Dark/NastyPlot.vb
index 60b649488..e6f1f1125 100644
--- a/P3D/Pokemon/Attacks/Dark/NastyPlot.vb
+++ b/P3D/Pokemon/Attacks/Dark/NastyPlot.vb
@@ -14,7 +14,7 @@
Me.Power = 0
Me.Accuracy = 0
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Cute
+ Me.ContestCategory = ContestCategories.Smart
Me.Name = "Nasty Plot"
Me.Description = "The user stimulates its brain by thinking bad thoughts. It sharply raises the user's Sp. Atk."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Dark/Nightslash.vb b/P3D/Pokemon/Attacks/Dark/Nightslash.vb
index 9d1df5432..5e53dd49e 100644
--- a/P3D/Pokemon/Attacks/Dark/Nightslash.vb
+++ b/P3D/Pokemon/Attacks/Dark/Nightslash.vb
@@ -1,6 +1,6 @@
Namespace BattleSystem.Moves.Dark
- Public Class Nightslash
+ Public Class NightSlash
Inherits Attack
@@ -14,7 +14,7 @@
Me.Power = 70
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Cool
Me.Name = "Night Slash"
Me.Description = "The user slashes the target the instant an opportunity arises. Critical hits land more easily."
Me.CriticalChance = 2
diff --git a/P3D/Pokemon/Attacks/Dark/PartingShot.vb b/P3D/Pokemon/Attacks/Dark/PartingShot.vb
index fb476ee5c..50ca1aec3 100644
--- a/P3D/Pokemon/Attacks/Dark/PartingShot.vb
+++ b/P3D/Pokemon/Attacks/Dark/PartingShot.vb
@@ -48,14 +48,14 @@
Me.IsAffectedBySubstitute = True
Me.IsOneHitKOMove = False
- Me.IsWonderGuardAffected = True
+ Me.IsWonderGuardAffected = False
'#End
End Sub
Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen)
Dim b As Boolean = BattleScreen.Battle.LowerStat(Not own, own, BattleScreen, "Attack", 1, "", "move:partingshot")
Dim d As Boolean = BattleScreen.Battle.LowerStat(Not own, own, BattleScreen, "Special Attack", 1, "", "move:partingshot")
- If b = False Or d = False Then
+ If b = False And d = False Then
BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!"))
End If
End Sub
diff --git a/P3D/Pokemon/Attacks/Dark/Payback.vb b/P3D/Pokemon/Attacks/Dark/Payback.vb
index 964795160..4cd3250be 100644
--- a/P3D/Pokemon/Attacks/Dark/Payback.vb
+++ b/P3D/Pokemon/Attacks/Dark/Payback.vb
@@ -14,7 +14,7 @@
Me.Power = 50
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Cool
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Payback"
Me.Description = "If the user moves after the target, this attack's power will be doubled"
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Dark/Punishment.vb b/P3D/Pokemon/Attacks/Dark/Punishment.vb
index a86d73f8c..3d847790e 100644
--- a/P3D/Pokemon/Attacks/Dark/Punishment.vb
+++ b/P3D/Pokemon/Attacks/Dark/Punishment.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Dark
Me.Power = 0
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Cool
Me.Name = "Punishment"
Me.Description = "This attack's power increases the more the target has powered up with stat changes."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Dark/Switcheroo.vb b/P3D/Pokemon/Attacks/Dark/Switcheroo.vb
index f00a3b528..897acc640 100644
--- a/P3D/Pokemon/Attacks/Dark/Switcheroo.vb
+++ b/P3D/Pokemon/Attacks/Dark/Switcheroo.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Dark
Me.Power = 0
Me.Accuracy = 100
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Cool
+ Me.ContestCategory = ContestCategories.Smart
Me.Name = "Switcheroo"
Me.Description = "The user trades held items with the target faster than the eye can follow."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Dragon/DracoMeteor.vb b/P3D/Pokemon/Attacks/Dragon/DracoMeteor.vb
index a0b306a69..28ec008a8 100644
--- a/P3D/Pokemon/Attacks/Dragon/DracoMeteor.vb
+++ b/P3D/Pokemon/Attacks/Dragon/DracoMeteor.vb
@@ -14,7 +14,7 @@
Me.Power = 130
Me.Accuracy = 90
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Draco Meteor"
Me.Description = "Comets are summoned down from the sky onto the target. The attack's recoil harshly reduces the user's Sp. Atk stat."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Dragon/DragonPulse.vb b/P3D/Pokemon/Attacks/Dragon/DragonPulse.vb
index fb5fcd9b6..4a41d4ac8 100644
--- a/P3D/Pokemon/Attacks/Dragon/DragonPulse.vb
+++ b/P3D/Pokemon/Attacks/Dragon/DragonPulse.vb
@@ -14,7 +14,7 @@
Me.Power = 85
Me.Accuracy = 100
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Dragon Pulse"
Me.Description = "The target is attacked with a shock wave generated by the user's gaping mouth."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Dragon/DragonRush.vb b/P3D/Pokemon/Attacks/Dragon/DragonRush.vb
index 4f95beec6..e89ed7b19 100644
--- a/P3D/Pokemon/Attacks/Dragon/DragonRush.vb
+++ b/P3D/Pokemon/Attacks/Dragon/DragonRush.vb
@@ -14,7 +14,7 @@
Me.Power = 100
Me.Accuracy = 75
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Cool
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Dragon Rush"
Me.Description = "The user tackles the target while exhibiting overwhelming menace. It may also make the target flinch."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Dragon/RoarOfTime.vb b/P3D/Pokemon/Attacks/Dragon/RoarOfTime.vb
index e97353d68..6ca73e7b1 100644
--- a/P3D/Pokemon/Attacks/Dragon/RoarOfTime.vb
+++ b/P3D/Pokemon/Attacks/Dragon/RoarOfTime.vb
@@ -14,7 +14,7 @@
Me.Power = 150
Me.Accuracy = 90
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Cool
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Roar of Time"
Me.Description = "The user blasts the target with power that distorts even time. The user can't move on the next turn."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Dragon/SpacialRend.vb b/P3D/Pokemon/Attacks/Dragon/SpacialRend.vb
index c6735f8e0..a86a38f01 100644
--- a/P3D/Pokemon/Attacks/Dragon/SpacialRend.vb
+++ b/P3D/Pokemon/Attacks/Dragon/SpacialRend.vb
@@ -14,7 +14,7 @@
Me.Power = 100
Me.Accuracy = 95
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Tough
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Spacial Rend"
Me.Description = "The user tears the target along with the space around it. Critical hits land more easily."
Me.CriticalChance = 2
diff --git a/P3D/Pokemon/Attacks/Electric/Discharge.vb b/P3D/Pokemon/Attacks/Electric/Discharge.vb
index db1576e0a..9bdd34948 100644
--- a/P3D/Pokemon/Attacks/Electric/Discharge.vb
+++ b/P3D/Pokemon/Attacks/Electric/Discharge.vb
@@ -14,7 +14,7 @@
Me.Power = 80
Me.Accuracy = 100
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Cool
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Discharge"
Me.Description = "The user strikes everything around it by letting loose a flare of electricity. This may also cause paralysis."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Electric/MagnetRise.vb b/P3D/Pokemon/Attacks/Electric/MagnetRise.vb
index 3cbfeb95a..ad399d3cf 100644
--- a/P3D/Pokemon/Attacks/Electric/MagnetRise.vb
+++ b/P3D/Pokemon/Attacks/Electric/MagnetRise.vb
@@ -14,7 +14,7 @@
Me.Power = 0
Me.Accuracy = 0
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Cute
+ Me.ContestCategory = ContestCategories.Smart
Me.Name = "Magnet Rise"
Me.Description = "The user levitates using electrically generated magnetism for five turns."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Normal/Charm.vb b/P3D/Pokemon/Attacks/Fairy/Charm.vb
similarity index 98%
rename from P3D/Pokemon/Attacks/Normal/Charm.vb
rename to P3D/Pokemon/Attacks/Fairy/Charm.vb
index e7b9ddeee..9b79cfc00 100644
--- a/P3D/Pokemon/Attacks/Normal/Charm.vb
+++ b/P3D/Pokemon/Attacks/Fairy/Charm.vb
@@ -1,4 +1,4 @@
-Namespace BattleSystem.Moves.Normal
+Namespace BattleSystem.Moves.Fairy
Public Class Charm
diff --git a/P3D/Pokemon/Attacks/Normal/Moonlight.vb b/P3D/Pokemon/Attacks/Fairy/Moonlight.vb
similarity index 98%
rename from P3D/Pokemon/Attacks/Normal/Moonlight.vb
rename to P3D/Pokemon/Attacks/Fairy/Moonlight.vb
index df544156f..e5f1816e3 100644
--- a/P3D/Pokemon/Attacks/Normal/Moonlight.vb
+++ b/P3D/Pokemon/Attacks/Fairy/Moonlight.vb
@@ -1,4 +1,4 @@
-Namespace BattleSystem.Moves.Normal
+Namespace BattleSystem.Moves.Fairy
Public Class Moonlight
diff --git a/P3D/Pokemon/Attacks/Normal/SweetKiss.vb b/P3D/Pokemon/Attacks/Fairy/SweetKiss.vb
similarity index 98%
rename from P3D/Pokemon/Attacks/Normal/SweetKiss.vb
rename to P3D/Pokemon/Attacks/Fairy/SweetKiss.vb
index 296acb765..da0b4c97c 100644
--- a/P3D/Pokemon/Attacks/Normal/SweetKiss.vb
+++ b/P3D/Pokemon/Attacks/Fairy/SweetKiss.vb
@@ -1,4 +1,4 @@
-Namespace BattleSystem.Moves.Normal
+Namespace BattleSystem.Moves.Fairy
Public Class SweetKiss
diff --git a/P3D/Pokemon/Attacks/Fighting/BulkUp.vb b/P3D/Pokemon/Attacks/Fighting/BulkUp.vb
index 2591b803d..526c17672 100644
--- a/P3D/Pokemon/Attacks/Fighting/BulkUp.vb
+++ b/P3D/Pokemon/Attacks/Fighting/BulkUp.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Fighting
Me.Power = 0
Me.Accuracy = 100
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Cool
Me.Name = "Bulk Up"
Me.Description = "The user tenses its muscles to bulk up its body, raising both its Attack and Defense stats."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Fighting/CloseCombat.vb b/P3D/Pokemon/Attacks/Fighting/CloseCombat.vb
index 8da1c7d5c..13e93318e 100644
--- a/P3D/Pokemon/Attacks/Fighting/CloseCombat.vb
+++ b/P3D/Pokemon/Attacks/Fighting/CloseCombat.vb
@@ -14,7 +14,7 @@
Me.Power = 120
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Close Combat"
Me.Description = "The user fights the target up close without guarding itself. It also cuts the user's Defense and Sp. Def."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Fighting/DrainPunch.vb b/P3D/Pokemon/Attacks/Fighting/DrainPunch.vb
index 6c3d63c00..08d44716a 100644
--- a/P3D/Pokemon/Attacks/Fighting/DrainPunch.vb
+++ b/P3D/Pokemon/Attacks/Fighting/DrainPunch.vb
@@ -14,7 +14,7 @@
Me.Power = 75
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Drain Punch"
Me.Description = "An energy-draining punch. The user's HP is restored by half the damage taken by the target."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Fighting/FinalGambit.vb b/P3D/Pokemon/Attacks/Fighting/FinalGambit.vb
index 5b6c70f91..8c8888d5b 100644
--- a/P3D/Pokemon/Attacks/Fighting/FinalGambit.vb
+++ b/P3D/Pokemon/Attacks/Fighting/FinalGambit.vb
@@ -42,7 +42,7 @@
Me.IsHealingMove = False
Me.IsRecoilMove = False
Me.IsPunchingMove = False
- Me.IsDamagingMove = True
+ Me.IsDamagingMove = False
Me.IsProtectMove = False
Me.IsSoundMove = False
@@ -55,14 +55,23 @@
Me.AIField2 = AIField.Selfdestruct
End Sub
+ Dim dmg As Integer
+
+ Public Overrides Sub PreAttack(Own As Boolean, BattleScreen As BattleScreen)
+ Dim p As Pokemon = BattleScreen.OwnPokemon
+ If Own = False Then
+ p = BattleScreen.OppPokemon
+ End If
+ dmg = p.HP
+ BattleScreen.Battle.ReduceHP(dmg, Own, Own, BattleScreen, p.GetDisplayName() & " risked everything!", "move:finalgambit")
+ End Sub
+
Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen)
Dim p As Pokemon = BattleScreen.OwnPokemon
If own = False Then
p = BattleScreen.OppPokemon
End If
- Dim dmg As Integer = p.HP
- BattleScreen.Battle.ReduceHP(p.HP, own, own, BattleScreen, "", "move:finalgambit")
- BattleScreen.Battle.ReduceHP(p.HP, Not own, own, BattleScreen, "", "move:finalgambit")
+ BattleScreen.Battle.ReduceHP(dmg, Not own, own, BattleScreen, "", "move:finalgambit")
End Sub
End Class
diff --git a/P3D/Pokemon/Attacks/Fighting/HammerArm.vb b/P3D/Pokemon/Attacks/Fighting/HammerArm.vb
index d590044dc..47d2ac2a2 100644
--- a/P3D/Pokemon/Attacks/Fighting/HammerArm.vb
+++ b/P3D/Pokemon/Attacks/Fighting/HammerArm.vb
@@ -14,7 +14,7 @@
Me.Power = 100
Me.Accuracy = 90
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Cool
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Hammer Arm"
Me.Description = "The user swings and hits with its strong and heavy fist. It lowers the user’s Speed, however."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Fighting/HiJumpKick.vb b/P3D/Pokemon/Attacks/Fighting/HighJumpKick.vb
similarity index 97%
rename from P3D/Pokemon/Attacks/Fighting/HiJumpKick.vb
rename to P3D/Pokemon/Attacks/Fighting/HighJumpKick.vb
index 6775e6a38..0cc6e55b0 100644
--- a/P3D/Pokemon/Attacks/Fighting/HiJumpKick.vb
+++ b/P3D/Pokemon/Attacks/Fighting/HighJumpKick.vb
@@ -1,6 +1,6 @@
Namespace BattleSystem.Moves.Fighting
- Public Class HiJumpKick
+ Public Class HighJumpKick
Inherits Attack
@@ -15,7 +15,7 @@
Me.Accuracy = 90
Me.Category = Categories.Physical
Me.ContestCategory = ContestCategories.Cool
- Me.Name = "Hi Jump Kick"
+ Me.Name = "High Jump Kick"
Me.Description = "The target is attacked with a knee kick from a jump. If it misses, the user is hurt instead."
Me.CriticalChance = 1
Me.IsHMMove = False
diff --git a/P3D/Pokemon/Attacks/Fighting/VacuumWave.vb b/P3D/Pokemon/Attacks/Fighting/VacuumWave.vb
index 33686c473..7d5e82130 100644
Binary files a/P3D/Pokemon/Attacks/Fighting/VacuumWave.vb and b/P3D/Pokemon/Attacks/Fighting/VacuumWave.vb differ
diff --git a/P3D/Pokemon/Attacks/Fighting/WakeUpSlap.vb b/P3D/Pokemon/Attacks/Fighting/WakeUpSlap.vb
index f6f7ab82d..12205fbeb 100644
--- a/P3D/Pokemon/Attacks/Fighting/WakeUpSlap.vb
+++ b/P3D/Pokemon/Attacks/Fighting/WakeUpSlap.vb
@@ -14,7 +14,7 @@
Me.Power = 70
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Wake-Up Slap"
Me.Description = "This attack inflicts big damage on a sleeping target. It also wakes the target up, however."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Fire/BlazeKick.vb b/P3D/Pokemon/Attacks/Fire/BlazeKick.vb
index 58607ec76..79e237f9f 100644
--- a/P3D/Pokemon/Attacks/Fire/BlazeKick.vb
+++ b/P3D/Pokemon/Attacks/Fire/BlazeKick.vb
@@ -14,7 +14,7 @@
Me.Power = 85
Me.Accuracy = 90
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Cool
Me.Name = "Blaze Kick"
Me.Description = "The user launches a kick that lands a critical hit more easily. It may also leave the target with a burn."
Me.CriticalChance = 2
diff --git a/P3D/Pokemon/Attacks/Fire/Ember.vb b/P3D/Pokemon/Attacks/Fire/Ember.vb
index a995442e7..48a698f0d 100644
--- a/P3D/Pokemon/Attacks/Fire/Ember.vb
+++ b/P3D/Pokemon/Attacks/Fire/Ember.vb
@@ -14,7 +14,7 @@
Me.Power = 40
Me.Accuracy = 100
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Cute
Me.Name = "Ember"
Me.Description = "The target is attacked with small flames. It may also leave the target with a burn."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Fire/FireFang.vb b/P3D/Pokemon/Attacks/Fire/FireFang.vb
index 5c6685494..253167605 100644
--- a/P3D/Pokemon/Attacks/Fire/FireFang.vb
+++ b/P3D/Pokemon/Attacks/Fire/FireFang.vb
@@ -14,7 +14,7 @@
Me.Power = 65
Me.Accuracy = 95
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Cool
Me.Name = "Fire Fang"
Me.Description = "The user bites with flame cloaked fangs. It may also make the target flinch or leave it burned."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Fire/FirePunch.vb b/P3D/Pokemon/Attacks/Fire/FirePunch.vb
index 723a6a574..e89cc785d 100644
--- a/P3D/Pokemon/Attacks/Fire/FirePunch.vb
+++ b/P3D/Pokemon/Attacks/Fire/FirePunch.vb
@@ -14,7 +14,7 @@
Me.Power = 75
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Fire Punch"
Me.Description = "The target is punched with a fiery fist. It may also leave the target with a burn."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Fire/FlareBlitz.vb b/P3D/Pokemon/Attacks/Fire/FlareBlitz.vb
index 2c0deed32..c0d9081b9 100644
--- a/P3D/Pokemon/Attacks/Fire/FlareBlitz.vb
+++ b/P3D/Pokemon/Attacks/Fire/FlareBlitz.vb
@@ -14,7 +14,7 @@
Me.Power = 120
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Cool
Me.Name = "Flare Blitz"
Me.Description = "The user cloaks itself in fire and charges at the target. The user sustains serious damage and may leave the target burned."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Flying/BraveBird.vb b/P3D/Pokemon/Attacks/Flying/BraveBird.vb
index 0fb659f0b..e30611c8e 100644
--- a/P3D/Pokemon/Attacks/Flying/BraveBird.vb
+++ b/P3D/Pokemon/Attacks/Flying/BraveBird.vb
@@ -14,7 +14,7 @@
Me.Power = 120
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Cute
+ Me.ContestCategory = ContestCategories.Cool
Me.Name = "Brave Bird"
Me.Description = "The user tucks in its wings and charges from a low altitude. The user also takes serious damage."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Flying/Chatter.vb b/P3D/Pokemon/Attacks/Flying/Chatter.vb
index 771c21314..2abc85a14 100644
Binary files a/P3D/Pokemon/Attacks/Flying/Chatter.vb and b/P3D/Pokemon/Attacks/Flying/Chatter.vb differ
diff --git a/P3D/Pokemon/Attacks/Flying/Defog.vb b/P3D/Pokemon/Attacks/Flying/Defog.vb
index fb7656f33..7e1abc87c 100644
--- a/P3D/Pokemon/Attacks/Flying/Defog.vb
+++ b/P3D/Pokemon/Attacks/Flying/Defog.vb
@@ -14,7 +14,7 @@
Me.Power = 0
Me.Accuracy = 0
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Cool
Me.Name = "Defog"
Me.Description = "A strong wind blows away the target's barriers such as Reflect or Light Screen. This also lowers the target's evasiveness."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Flying/Hurricane.vb b/P3D/Pokemon/Attacks/Flying/Hurricane.vb
index 8648e8215..b3c225de0 100644
--- a/P3D/Pokemon/Attacks/Flying/Hurricane.vb
+++ b/P3D/Pokemon/Attacks/Flying/Hurricane.vb
@@ -60,7 +60,7 @@
Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen)
If Core.Random.Next(0, 100) < Me.GetEffectChance(0, own, BattleScreen) Then
- BattleScreen.Battle.InflictConfusion(Not own, own, BattleScreen, "", "move:hurrican")
+ BattleScreen.Battle.InflictConfusion(Not own, own, BattleScreen, "", "move:hurricane")
End If
End Sub
diff --git a/P3D/Pokemon/Attacks/Flying/Roost.vb b/P3D/Pokemon/Attacks/Flying/Roost.vb
index 78e9908a8..5632ec0a0 100644
--- a/P3D/Pokemon/Attacks/Flying/Roost.vb
+++ b/P3D/Pokemon/Attacks/Flying/Roost.vb
@@ -14,7 +14,7 @@
Me.Power = 0
Me.Accuracy = 0
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Cool
+ Me.ContestCategory = ContestCategories.Smart
Me.Name = "Roost"
Me.Description = "The user lands and rests its body. It restores the user's HP by up to half of its max HP."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Flying/Tailwind.vb b/P3D/Pokemon/Attacks/Flying/Tailwind.vb
index 486acc68e..f3c209440 100644
--- a/P3D/Pokemon/Attacks/Flying/Tailwind.vb
+++ b/P3D/Pokemon/Attacks/Flying/Tailwind.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Flying
Me.Power = 0
Me.Accuracy = 0
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Cool
Me.Name = "Tailwind"
Me.Description = "The user whips up a turbulent whirlwind that ups the Speed stat of the user and its allies for four turns."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Ghost/Astonish.vb b/P3D/Pokemon/Attacks/Ghost/Astonish.vb
index f8b4f8112..dba859b04 100644
--- a/P3D/Pokemon/Attacks/Ghost/Astonish.vb
+++ b/P3D/Pokemon/Attacks/Ghost/Astonish.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Ghost
Me.Power = 30
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Cute
Me.Name = "Astonish"
Me.Description = "The user attacks the target while shouting in a startling fashion. This may also make the target flinch."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Ghost/Lick.vb b/P3D/Pokemon/Attacks/Ghost/Lick.vb
index 7cd1c433e..609f2e296 100644
--- a/P3D/Pokemon/Attacks/Ghost/Lick.vb
+++ b/P3D/Pokemon/Attacks/Ghost/Lick.vb
@@ -14,7 +14,7 @@
Me.Power = 30
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Tough
+ Me.ContestCategory = ContestCategories.Cute
Me.Name = "Lick"
Me.Description = "The target is licked with a long tongue, causing damage. It may also leave the target with paralysis."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Ghost/OminousWind.vb b/P3D/Pokemon/Attacks/Ghost/OminousWind.vb
index 63a554725..776fa2e79 100644
--- a/P3D/Pokemon/Attacks/Ghost/OminousWind.vb
+++ b/P3D/Pokemon/Attacks/Ghost/OminousWind.vb
@@ -14,7 +14,7 @@
Me.Power = 60
Me.Accuracy = 100
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Ominous Wind"
Me.Description = "The user blasts the target with a gust of repulsive wind. It may also raise all the user's stats at once."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Ghost/ShadowClaw.vb b/P3D/Pokemon/Attacks/Ghost/ShadowClaw.vb
index 64f796edc..d9e321205 100644
--- a/P3D/Pokemon/Attacks/Ghost/ShadowClaw.vb
+++ b/P3D/Pokemon/Attacks/Ghost/ShadowClaw.vb
@@ -14,7 +14,7 @@
Me.Power = 70
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Cute
+ Me.ContestCategory = ContestCategories.Cool
Me.Name = "Shadow Claw"
Me.Description = "The user slashes with a sharp claw made from shadows. Critical hits land more easily."
Me.CriticalChance = 2
diff --git a/P3D/Pokemon/Attacks/Ghost/ShadowForce.vb b/P3D/Pokemon/Attacks/Ghost/ShadowForce.vb
index b0b029489..5f36b72b0 100644
--- a/P3D/Pokemon/Attacks/Ghost/ShadowForce.vb
+++ b/P3D/Pokemon/Attacks/Ghost/ShadowForce.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Ghost
Me.Power = 120
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Cool
Me.Name = "Shadow Force"
Me.Description = "The user disappears, then strikes the target on the next turn. This move hits even if the target protects itself."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Grass/CottonSpore.vb b/P3D/Pokemon/Attacks/Grass/CottonSpore.vb
index ef83744f8..b86ef09fd 100644
--- a/P3D/Pokemon/Attacks/Grass/CottonSpore.vb
+++ b/P3D/Pokemon/Attacks/Grass/CottonSpore.vb
@@ -19,7 +19,7 @@
Me.Description = "The user releases cotton-like spores that cling to the target, harshly reducing its Speed stat."
Me.CriticalChance = 0
Me.IsHMMove = False
- Me.Target = Targets.OneAdjacentTarget
+ Me.Target = Targets.AllAdjacentFoes
Me.Priority = 0
Me.TimesToAttack = 1
'#End
diff --git a/P3D/Pokemon/Attacks/Grass/GrassKnot.vb b/P3D/Pokemon/Attacks/Grass/GrassKnot.vb
index 21635b698..8d2d6b0ef 100644
Binary files a/P3D/Pokemon/Attacks/Grass/GrassKnot.vb and b/P3D/Pokemon/Attacks/Grass/GrassKnot.vb differ
diff --git a/P3D/Pokemon/Attacks/Grass/LeafStorm.vb b/P3D/Pokemon/Attacks/Grass/LeafStorm.vb
index c7e830d0e..2483c6e2f 100644
--- a/P3D/Pokemon/Attacks/Grass/LeafStorm.vb
+++ b/P3D/Pokemon/Attacks/Grass/LeafStorm.vb
@@ -14,7 +14,7 @@
Me.Power = 130
Me.Accuracy = 90
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Leaf Storm"
Me.Description = "The user whips up a storm of leaves around the target. The attack's recoil harshly lowers the user's Sp. Atk stat."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Grass/PowerWhip.vb b/P3D/Pokemon/Attacks/Grass/PowerWhip.vb
index fb88d573b..9f304b969 100644
Binary files a/P3D/Pokemon/Attacks/Grass/PowerWhip.vb and b/P3D/Pokemon/Attacks/Grass/PowerWhip.vb differ
diff --git a/P3D/Pokemon/Attacks/Grass/SeedBomb.vb b/P3D/Pokemon/Attacks/Grass/SeedBomb.vb
index 04892cbca..f8f7fa748 100644
--- a/P3D/Pokemon/Attacks/Grass/SeedBomb.vb
+++ b/P3D/Pokemon/Attacks/Grass/SeedBomb.vb
@@ -14,7 +14,7 @@
Me.Power = 80
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Seed Bomb"
Me.Description = "The user slams a barrage of hard-shelled seeds on the target from above."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Grass/Seedflare.vb b/P3D/Pokemon/Attacks/Grass/Seedflare.vb
index a73d34240..a21043e36 100644
--- a/P3D/Pokemon/Attacks/Grass/Seedflare.vb
+++ b/P3D/Pokemon/Attacks/Grass/Seedflare.vb
@@ -1,6 +1,6 @@
Namespace BattleSystem.Moves.Grass
- Public Class Seedflare
+ Public Class SeedFlare
Inherits Attack
@@ -14,7 +14,7 @@
Me.Power = 120
Me.Accuracy = 85
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Cool
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Seed Flare"
Me.Description = "The user emits a shock wave from its body to attack its target. It may harshly lower the target's Sp. Def."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Grass/Strength Sap.vb b/P3D/Pokemon/Attacks/Grass/Strength Sap.vb
index d8fc283b0..62627ac3d 100644
--- a/P3D/Pokemon/Attacks/Grass/Strength Sap.vb
+++ b/P3D/Pokemon/Attacks/Grass/Strength Sap.vb
@@ -60,11 +60,11 @@
op = BattleScreen.OwnPokemon
End If
- Dim op_Attack As Integer = BattleCalculation.DetermineBattleAttack(Not own, BattleScreen)
+ Dim b As Boolean = BattleScreen.Battle.LowerStat(Not own, own, BattleScreen, "Attack", 1, "", "move:strengthsap")
+ Dim op_Attack As Integer = BattleCalculation.DetermineBattleAttack(Not own, BattleScreen)
Dim heal As Integer = op_Attack
- Dim b As Boolean = BattleScreen.Battle.LowerStat(Not own, own, BattleScreen, "Attack", 1, "", "move:strengthsap")
If b = True Then
If op.Ability.Name.ToLower() = "liquid ooze" And BattleScreen.FieldEffects.CanUseAbility(Not own, BattleScreen) = True Then
BattleScreen.Battle.ReduceHP(heal, own, own, BattleScreen, "Liquid Ooze damaged " & p.GetDisplayName() & "!", "liquidooze")
diff --git a/P3D/Pokemon/Attacks/Grass/WorrySeed.vb b/P3D/Pokemon/Attacks/Grass/WorrySeed.vb
index f80bcf1f1..1e3e2ee63 100644
--- a/P3D/Pokemon/Attacks/Grass/WorrySeed.vb
+++ b/P3D/Pokemon/Attacks/Grass/WorrySeed.vb
@@ -14,7 +14,7 @@
Me.Power = 0
Me.Accuracy = 100
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Smart
Me.Name = "Worry Seed"
Me.Description = "A seed that causes worry is planted on the target. It prevents sleep by making the target's Ability Insomnia."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Ground/Dig.vb b/P3D/Pokemon/Attacks/Ground/Dig.vb
index d0322a85f..997c83cd6 100644
--- a/P3D/Pokemon/Attacks/Ground/Dig.vb
+++ b/P3D/Pokemon/Attacks/Ground/Dig.vb
@@ -14,7 +14,7 @@
Me.Power = 80
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Dig"
Me.Description = "The user burrows, then attacks on the second turn. It can also be used to exit dungeons. "
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Ground/EarthPower.vb b/P3D/Pokemon/Attacks/Ground/EarthPower.vb
index 340b00f06..cfe20f5e4 100644
--- a/P3D/Pokemon/Attacks/Ground/EarthPower.vb
+++ b/P3D/Pokemon/Attacks/Ground/EarthPower.vb
@@ -14,7 +14,7 @@
Me.Power = 90
Me.Accuracy = 100
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Earth Power"
Me.Description = "The user makes the ground under the target erupt with power. This may also lower the target's Sp. Def."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Ground/MudBomb.vb b/P3D/Pokemon/Attacks/Ground/MudBomb.vb
index aecb44562..007bb2241 100644
--- a/P3D/Pokemon/Attacks/Ground/MudBomb.vb
+++ b/P3D/Pokemon/Attacks/Ground/MudBomb.vb
@@ -14,7 +14,7 @@
Me.Power = 65
Me.Accuracy = 85
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Cute
Me.Name = "Mud Bomb"
Me.Description = "The user launches a hard-packed mud ball to attack. This may also lower the target's accuracy."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Ground/Sand-Attack.vb b/P3D/Pokemon/Attacks/Ground/SandAttack.vb
similarity index 98%
rename from P3D/Pokemon/Attacks/Ground/Sand-Attack.vb
rename to P3D/Pokemon/Attacks/Ground/SandAttack.vb
index 1e4b14d6a..7113a6d0c 100644
--- a/P3D/Pokemon/Attacks/Ground/Sand-Attack.vb
+++ b/P3D/Pokemon/Attacks/Ground/SandAttack.vb
@@ -15,7 +15,7 @@
Me.Accuracy = 100
Me.Category = Categories.Status
Me.ContestCategory = ContestCategories.Cute
- Me.Name = "Sand-Attack"
+ Me.Name = "Sand Attack"
Me.Description = "Sand is hurled in the target's face, reducing its accuracy."
Me.CriticalChance = 0
Me.IsHMMove = False
diff --git a/P3D/Pokemon/Attacks/Ground/ThousandArrows.vb b/P3D/Pokemon/Attacks/Ground/ThousandArrows.vb
index 468786a7a..e5620471b 100644
--- a/P3D/Pokemon/Attacks/Ground/ThousandArrows.vb
+++ b/P3D/Pokemon/Attacks/Ground/ThousandArrows.vb
@@ -35,7 +35,7 @@
Me.DisabledWhileGravity = False
Me.UseEffectiveness = True
- Me.ImmunityAffected = False
+ Me.ImmunityAffected = True
Me.HasSecondaryEffect = False
Me.RemovesFrozen = False
@@ -53,6 +53,25 @@
'#End
End Sub
+ Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen)
+ Dim op As Pokemon = BattleScreen.OppPokemon
+ If own = False Then
+ op = BattleScreen.OwnPokemon
+ End If
+
+ If own = True Then
+ If BattleScreen.FieldEffects.OppSmacked = 0 Then
+ BattleScreen.FieldEffects.OppSmacked = 1
+ BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & " fell straight down."))
+ End If
+ Else
+ If BattleScreen.FieldEffects.OwnSmacked = 0 Then
+ BattleScreen.FieldEffects.OwnSmacked = 1
+ BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & " fell straight down."))
+ End If
+ End If
+ End Sub
+
End Class
End Namespace
\ No newline at end of file
diff --git a/P3D/Pokemon/Attacks/Normal/Acupressure.vb b/P3D/Pokemon/Attacks/Normal/Acupressure.vb
index 555b519dc..b2de0d637 100644
--- a/P3D/Pokemon/Attacks/Normal/Acupressure.vb
+++ b/P3D/Pokemon/Attacks/Normal/Acupressure.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Normal
Me.Power = 0
Me.Accuracy = 0
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Cool
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Acupressure"
Me.Description = "The user applies pressure to stress points, sharply boosting one of its or its allies' stats."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Normal/Barrage.vb b/P3D/Pokemon/Attacks/Normal/Barrage.vb
index 279df1d0c..c16264221 100644
--- a/P3D/Pokemon/Attacks/Normal/Barrage.vb
+++ b/P3D/Pokemon/Attacks/Normal/Barrage.vb
@@ -14,7 +14,7 @@
Me.Power = 15
Me.Accuracy = 85
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Tough
+ Me.ContestCategory = ContestCategories.Cute
Me.Name = "Barrage"
Me.Description = "Round objects are hurled at the target to strike two to five times in a row."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Normal/Bestow.vb b/P3D/Pokemon/Attacks/Normal/Bestow.vb
index 373233f42..b3617b7fc 100644
--- a/P3D/Pokemon/Attacks/Normal/Bestow.vb
+++ b/P3D/Pokemon/Attacks/Normal/Bestow.vb
@@ -64,40 +64,50 @@
op = BattleScreen.OwnPokemon
End If
- If p.Item Is Nothing Then
- Exit Sub
- End If
- If p.Item.IsMegaStone = True Then
- Exit Sub
- End If
- If p.Ability.Name.ToLower() = "multitype" AndAlso p.Item.Name.ToLower().EndsWith(" plate") Then
- Exit Sub
- End If
- If p.Ability.Name.ToLower() = "rks system" AndAlso p.Item.Name.ToLower().EndsWith(" memory") Then
- Exit Sub
- End If
- If p.Item.Name.ToLower() = "griseous orb" And p.Number = 487 Then
- Exit Sub
- End If
- If p.Item.Name.ToLower().EndsWith(" drive") = True AndAlso p.Number = 649 Then
- Exit Sub
- End If
- If p.Item.Name.ToLower().EndsWith(" mail") = True Then
+ Dim a As Boolean = False
+ Dim b As Boolean = False
+
+ If Not p.Item Is Nothing Then
+ a = True
+ If p.Item.IsMegaStone = True Then
+ b = True
+ End If
+ If p.Ability.Name.ToLower() = "multitype" AndAlso p.Item.Name.ToLower().EndsWith(" plate") Then
+ b = True
+ End If
+ If p.Ability.Name.ToLower() = "rks system" AndAlso p.Item.Name.ToLower().EndsWith(" memory") Then
+ b = True
+ End If
+ 'Giratina
+ If p.Item.Name.ToLower() = "griseous orb" And p.Number = 487 Then
+ b = True
+ End If
+ 'Genesect
+ If p.Item.Name.ToLower().EndsWith(" drive") = True AndAlso p.Number = 649 Then
+ b = True
+ End If
+ If p.Item.Name.ToLower().EndsWith(" mail") = True Then
+ b = True
+ End If
+ Else
+ BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!"))
Exit Sub
End If
- If op.Item Is Nothing Then
+ If op.Item Is Nothing And a = True And b = False Then
Dim ItemID As Integer = p.Item.ID
p.OriginalItem = Item.GetItemByID(p.Item.ID)
p.OriginalItem.AdditionalData = p.Item.AdditionalData
If BattleScreen.Battle.RemoveHeldItem(own, own, BattleScreen, op.GetDisplayName() & " received the item " & p.Item.Name & " from " & p.GetDisplayName() & "!", "move:bestow") Then
- If own = False Then
+ If own = True Then
BattleScreen.FieldEffects.StolenItemIDs.Add(ItemID)
End If
op.Item = Item.GetItemByID(ItemID)
End If
+ Else
+ BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!"))
End If
End Sub
diff --git a/P3D/Pokemon/Attacks/Normal/Block.vb b/P3D/Pokemon/Attacks/Normal/Block.vb
index d47baa53a..2c49c0d51 100644
--- a/P3D/Pokemon/Attacks/Normal/Block.vb
+++ b/P3D/Pokemon/Attacks/Normal/Block.vb
@@ -26,7 +26,7 @@ Namespace BattleSystem.Moves.Normal
'#SpecialDefinitions
Me.MakesContact = False
- Me.ProtectAffected = True
+ Me.ProtectAffected = False
Me.MagicCoatAffected = True
Me.SnatchAffected = False
Me.MirrorMoveAffected = True
diff --git a/P3D/Pokemon/Attacks/Normal/DizzyPunch.vb b/P3D/Pokemon/Attacks/Normal/DizzyPunch.vb
index eda24e772..dc22752b8 100644
--- a/P3D/Pokemon/Attacks/Normal/DizzyPunch.vb
+++ b/P3D/Pokemon/Attacks/Normal/DizzyPunch.vb
@@ -14,7 +14,7 @@
Me.Power = 70
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Tough
+ Me.ContestCategory = ContestCategories.Cute
Me.Name = "Pound"
Me.Description = "The target is physically pounded with a long tail or a foreleg, etc."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Normal/DoubleHit.vb b/P3D/Pokemon/Attacks/Normal/DoubleHit.vb
index 18f0980c2..3243e4056 100644
Binary files a/P3D/Pokemon/Attacks/Normal/DoubleHit.vb and b/P3D/Pokemon/Attacks/Normal/DoubleHit.vb differ
diff --git a/P3D/Pokemon/Attacks/Normal/DoubleSlap.vb b/P3D/Pokemon/Attacks/Normal/DoubleSlap.vb
index 8b613cda0..c423461db 100644
--- a/P3D/Pokemon/Attacks/Normal/DoubleSlap.vb
+++ b/P3D/Pokemon/Attacks/Normal/DoubleSlap.vb
@@ -14,7 +14,7 @@
Me.Power = 15
Me.Accuracy = 85
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Tough
+ Me.ContestCategory = ContestCategories.Cute
Me.Name = "Double Slap"
Me.Description = "The target is slapped repeatedly, back and forth, two to five times in a row."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Normal/EggBomb.vb b/P3D/Pokemon/Attacks/Normal/EggBomb.vb
index ac939cfe7..3c53cb353 100644
--- a/P3D/Pokemon/Attacks/Normal/EggBomb.vb
+++ b/P3D/Pokemon/Attacks/Normal/EggBomb.vb
@@ -14,7 +14,7 @@
Me.Power = 100
Me.Accuracy = 75
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Tough
+ Me.ContestCategory = ContestCategories.Cute
Me.Name = "Egg Bomb"
Me.Description = "A large egg is hurled at the target with maximum force to inflict damage."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Normal/Feint.vb b/P3D/Pokemon/Attacks/Normal/Feint.vb
index 2a7ae36a5..62a239f47 100644
--- a/P3D/Pokemon/Attacks/Normal/Feint.vb
+++ b/P3D/Pokemon/Attacks/Normal/Feint.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Normal
Me.Power = 30
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Smart
Me.Name = "Feint"
Me.Description = "An attack that hits a target using Protect or Detect. This also lifts the effects of those moves."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Normal/GigaImpact.vb b/P3D/Pokemon/Attacks/Normal/GigaImpact.vb
index b20fe3b5c..3819dc45e 100644
--- a/P3D/Pokemon/Attacks/Normal/GigaImpact.vb
+++ b/P3D/Pokemon/Attacks/Normal/GigaImpact.vb
@@ -14,7 +14,7 @@
Me.Power = 150
Me.Accuracy = 90
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Giga Impact"
Me.Description = "The user charges at the target using every bit of its power. The user can't move on the next turn."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Normal/Judgement.vb b/P3D/Pokemon/Attacks/Normal/Judgement.vb
index 335f998ea..8c4dbdc81 100644
--- a/P3D/Pokemon/Attacks/Normal/Judgement.vb
+++ b/P3D/Pokemon/Attacks/Normal/Judgement.vb
@@ -14,7 +14,7 @@
Me.Power = 100
Me.Accuracy = 100
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Judgement"
Me.Description = "The user releases countless shots of light at the target. This move's type varies depending on the kind of Plate the user is holding."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Normal/MeanLook.vb b/P3D/Pokemon/Attacks/Normal/MeanLook.vb
index d90ee00be..6150ec438 100644
--- a/P3D/Pokemon/Attacks/Normal/MeanLook.vb
+++ b/P3D/Pokemon/Attacks/Normal/MeanLook.vb
@@ -26,7 +26,7 @@ Namespace BattleSystem.Moves.Normal
'#SpecialDefinitions
Me.MakesContact = False
- Me.ProtectAffected = True
+ Me.ProtectAffected = False
Me.MagicCoatAffected = True
Me.SnatchAffected = False
Me.MirrorMoveAffected = True
diff --git a/P3D/Pokemon/Attacks/Normal/NaturalGift.vb b/P3D/Pokemon/Attacks/Normal/NaturalGift.vb
index 0063a79bc..3570b8dd3 100644
--- a/P3D/Pokemon/Attacks/Normal/NaturalGift.vb
+++ b/P3D/Pokemon/Attacks/Normal/NaturalGift.vb
@@ -64,15 +64,19 @@ Namespace BattleSystem.Moves.Normal
End If
If 1999 < itemID And itemID < 2016 Then
- Return 60
+ Return 80
ElseIf 2034 < itemID And itemID < 2052 Then
- Return 60
- ElseIf 2015 < itemID And itemID < 2031 Then
- Return 70
- ElseIf 2031 < itemID And itemID < 2036 Then
Return 80
+ ElseIf 2063 < itemID And itemID < 2065 Then
+ Return 80
+ ElseIf 2015 < itemID And itemID < 2032 Then
+ Return 90
+ ElseIf 2031 < itemID And itemID < 2035 Then
+ Return 100
ElseIf 2051 < itemID And itemID < 2064 Then
- Return 80
+ Return 100
+ ElseIf 2064 < itemID And itemID < 2067 Then
+ Return 100
Else
Return 0
End If
@@ -89,6 +93,7 @@ Namespace BattleSystem.Moves.Normal
Return New Element(CType(p.Item, Items.Berry).Type)
End If
End If
+
Return New Element(Element.Types.Normal)
End Function
@@ -101,18 +106,22 @@ Namespace BattleSystem.Moves.Normal
End If
If p.Item Is Nothing Then
+ BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!"))
Return True
Else
If p.Item.isBerry = False Then
+ BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!"))
Return True
End If
End If
If op.Ability.Name.ToLower() = "unnerve" And BattleScreen.FieldEffects.CanUseAbility(Not Own, BattleScreen) = True Then
+ BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!"))
Return True
End If
If BattleScreen.FieldEffects.CanUseItem(Own) = False Or BattleScreen.FieldEffects.CanUseOwnItem(Own, BattleScreen) = False Then
+ BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!"))
Return True
End If
diff --git a/P3D/Pokemon/Attacks/Normal/NaturePower.vb b/P3D/Pokemon/Attacks/Normal/NaturePower.vb
index 82e6fb7ac..fa57407cc 100644
--- a/P3D/Pokemon/Attacks/Normal/NaturePower.vb
+++ b/P3D/Pokemon/Attacks/Normal/NaturePower.vb
@@ -19,7 +19,7 @@
Me.Description = "An attack that makes use of nature’s power. Its effects vary depending on the user’s environment."
Me.CriticalChance = 0
Me.IsHMMove = False
- Me.Target = Targets.Self
+ Me.Target = Targets.OneAdjacentTarget
Me.Priority = 0
Me.TimesToAttack = 1
'#End
diff --git a/P3D/Pokemon/Attacks/Normal/RockClimb.vb b/P3D/Pokemon/Attacks/Normal/RockClimb.vb
index d5b435888..acbd85326 100644
Binary files a/P3D/Pokemon/Attacks/Normal/RockClimb.vb and b/P3D/Pokemon/Attacks/Normal/RockClimb.vb differ
diff --git a/P3D/Pokemon/Attacks/Normal/Selfdestruct.vb b/P3D/Pokemon/Attacks/Normal/Self-Destruct.vb
similarity index 96%
rename from P3D/Pokemon/Attacks/Normal/Selfdestruct.vb
rename to P3D/Pokemon/Attacks/Normal/Self-Destruct.vb
index 201ef42e9..2e68d9984 100644
--- a/P3D/Pokemon/Attacks/Normal/Selfdestruct.vb
+++ b/P3D/Pokemon/Attacks/Normal/Self-Destruct.vb
@@ -1,6 +1,6 @@
Namespace BattleSystem.Moves.Normal
- Public Class Selfdestruct
+ Public Class SelfDestruct
Inherits Attack
@@ -15,7 +15,7 @@
Me.Accuracy = 100
Me.Category = Categories.Physical
Me.ContestCategory = ContestCategories.Beauty
- Me.Name = "Selfdestruct"
+ Me.Name = "Self-Destruct"
Me.Description = "The user attacks everything around it by causing an explosion. The user faints upon using this move."
Me.CriticalChance = 1
Me.IsHMMove = False
diff --git a/P3D/Pokemon/Attacks/Normal/SmellingSalt.vb b/P3D/Pokemon/Attacks/Normal/SmellingSalts.vb
similarity index 95%
rename from P3D/Pokemon/Attacks/Normal/SmellingSalt.vb
rename to P3D/Pokemon/Attacks/Normal/SmellingSalts.vb
index da0102e1f..efe7b9040 100644
--- a/P3D/Pokemon/Attacks/Normal/SmellingSalt.vb
+++ b/P3D/Pokemon/Attacks/Normal/SmellingSalts.vb
@@ -1,6 +1,6 @@
Namespace BattleSystem.Moves.Normal
- Public Class SmellingSalt
+ Public Class SmellingSalts
Inherits Attack
@@ -14,8 +14,8 @@
Me.Power = 70
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Smart
- Me.Name = "Smelling Salt"
+ Me.ContestCategory = ContestCategories.Tough
+ Me.Name = "Smelling Salts"
Me.Description = "This attack inflicts double damage on a target with paralysis. It also cures the target's paralysis, however."
Me.CriticalChance = 1
Me.IsHMMove = False
diff --git a/P3D/Pokemon/Attacks/Normal/SmokeScreen.vb b/P3D/Pokemon/Attacks/Normal/SmokeScreen.vb
index b277db900..48011cb36 100644
--- a/P3D/Pokemon/Attacks/Normal/SmokeScreen.vb
+++ b/P3D/Pokemon/Attacks/Normal/SmokeScreen.vb
@@ -1,6 +1,6 @@
Namespace BattleSystem.Moves.Normal
- Public Class SmokeScreen
+ Public Class Smokescreen
Inherits Attack
@@ -15,7 +15,7 @@
Me.Accuracy = 100
Me.Category = Categories.Status
Me.ContestCategory = ContestCategories.Smart
- Me.Name = "Smoke Screen"
+ Me.Name = "Smokescreen"
Me.Description = "The user releases an obscuring cloud of smoke or ink. It reduces the target's accuracy."
Me.CriticalChance = 0
Me.IsHMMove = False
diff --git a/P3D/Pokemon/Attacks/Normal/Softboiled.vb b/P3D/Pokemon/Attacks/Normal/Soft-Boiled.vb
similarity index 95%
rename from P3D/Pokemon/Attacks/Normal/Softboiled.vb
rename to P3D/Pokemon/Attacks/Normal/Soft-Boiled.vb
index 17d0c9e1a..3a961b395 100644
--- a/P3D/Pokemon/Attacks/Normal/Softboiled.vb
+++ b/P3D/Pokemon/Attacks/Normal/Soft-Boiled.vb
@@ -1,6 +1,6 @@
Namespace BattleSystem.Moves.Normal
- Public Class Softboiled
+ Public Class SoftBoiled
Inherits Attack
@@ -14,8 +14,8 @@
Me.Power = 0
Me.Accuracy = 0
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Beauty
- Me.Name = "Softboiled"
+ Me.ContestCategory = ContestCategories.Cute
+ Me.Name = "Soft-Boiled"
Me.Description = "The user restores its own HP by up to half of its maximum HP. May also be used in the field to heal HP."
Me.CriticalChance = 0
Me.IsHMMove = False
diff --git a/P3D/Pokemon/Attacks/Normal/Struggle.vb b/P3D/Pokemon/Attacks/Normal/Struggle.vb
index 19b152b9a..25e0d7228 100644
--- a/P3D/Pokemon/Attacks/Normal/Struggle.vb
+++ b/P3D/Pokemon/Attacks/Normal/Struggle.vb
@@ -14,7 +14,7 @@
Me.Power = 50
Me.Accuracy = 0
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Cool
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Struggle"
Me.Description = "An attack that is used in desperation only if the user has no PP. It also hurts the user slightly."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Normal/Substitute.vb b/P3D/Pokemon/Attacks/Normal/Substitute.vb
index 243b95f93..d4e29827e 100644
--- a/P3D/Pokemon/Attacks/Normal/Substitute.vb
+++ b/P3D/Pokemon/Attacks/Normal/Substitute.vb
@@ -14,7 +14,7 @@
Me.Power = 0
Me.Accuracy = 0
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Cute
Me.Name = "Substitute"
Me.Description = "The user makes a copy of itself using some of its HP. The copy serves as the user’s decoy."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Normal/ViceGrip.vb b/P3D/Pokemon/Attacks/Normal/ViceGrip.vb
index fa13ff7da..985275b72 100644
--- a/P3D/Pokemon/Attacks/Normal/ViceGrip.vb
+++ b/P3D/Pokemon/Attacks/Normal/ViceGrip.vb
@@ -15,7 +15,7 @@
Me.Accuracy = 100
Me.Category = Categories.Physical
Me.ContestCategory = ContestCategories.Tough
- Me.Name = "ViceGrip"
+ Me.Name = "Vice Grip"
Me.Description = "The target is gripped and squeezed from both sides to inflict damage."
Me.CriticalChance = 1
Me.IsHMMove = False
diff --git a/P3D/Pokemon/Attacks/Normal/WeatherBall.vb b/P3D/Pokemon/Attacks/Normal/WeatherBall.vb
index 9357c0c41..d9668f6ff 100644
--- a/P3D/Pokemon/Attacks/Normal/WeatherBall.vb
+++ b/P3D/Pokemon/Attacks/Normal/WeatherBall.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Normal
Me.Power = 50
Me.Accuracy = 100
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Weather Ball"
Me.Description = "An attack move that varies in power and type depending on the weather."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Normal/WringOut.vb b/P3D/Pokemon/Attacks/Normal/WringOut.vb
index 25fa868b9..cad6ab44d 100644
--- a/P3D/Pokemon/Attacks/Normal/WringOut.vb
+++ b/P3D/Pokemon/Attacks/Normal/WringOut.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Normal
Me.Power = 0
Me.Accuracy = 100
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Wring Out"
Me.Description = "The user powerfully wrings the target. The more HP the target has, the greater the move's power."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Poison/GunkShot.vb b/P3D/Pokemon/Attacks/Poison/GunkShot.vb
index 42a9c8613..f4f5ed94a 100644
--- a/P3D/Pokemon/Attacks/Poison/GunkShot.vb
+++ b/P3D/Pokemon/Attacks/Poison/GunkShot.vb
@@ -14,7 +14,7 @@
Me.Power = 120
Me.Accuracy = 80
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Cool
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Gunk Shot"
Me.Description = "The user shoots filthy garbage at the target to attack. It may also poison the target."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Poison/PoisonFang.vb b/P3D/Pokemon/Attacks/Poison/PoisonFang.vb
index ea474861a..47983700e 100644
--- a/P3D/Pokemon/Attacks/Poison/PoisonFang.vb
+++ b/P3D/Pokemon/Attacks/Poison/PoisonFang.vb
@@ -55,7 +55,7 @@
Me.AIField1 = AIField.Damage
Me.AIField2 = AIField.CanPoison
- Me.EffectChances.Add(30)
+ Me.EffectChances.Add(50)
End Sub
Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen)
diff --git a/P3D/Pokemon/Attacks/Poison/PoisonJab.vb b/P3D/Pokemon/Attacks/Poison/PoisonJab.vb
index f6eb82741..6891fdcde 100644
--- a/P3D/Pokemon/Attacks/Poison/PoisonJab.vb
+++ b/P3D/Pokemon/Attacks/Poison/PoisonJab.vb
@@ -14,7 +14,7 @@
Me.Power = 80
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Poison Jab"
Me.Description = "The target is stabbed with a tentacle or arm steeped in poison. It may also poison the target."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Psychic/CosmicPower.vb b/P3D/Pokemon/Attacks/Psychic/CosmicPower.vb
index a58c28588..56b59a6c9 100644
--- a/P3D/Pokemon/Attacks/Psychic/CosmicPower.vb
+++ b/P3D/Pokemon/Attacks/Psychic/CosmicPower.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Psychic
Me.Power = 0
Me.Accuracy = 0
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Cool
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Cosmic Power"
Me.Description = "The user absorbs a mystical power from space to raise its Defense and Sp. Def stats."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Psychic/Gravity.vb b/P3D/Pokemon/Attacks/Psychic/Gravity.vb
index 5783bbfb7..001f37e01 100644
--- a/P3D/Pokemon/Attacks/Psychic/Gravity.vb
+++ b/P3D/Pokemon/Attacks/Psychic/Gravity.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Psychic
Me.Power = 0
Me.Accuracy = 0
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Smart
Me.Name = "Gravity"
Me.Description = "Gravity is intensified for five turns, making moves involving flying unusable and negating Levitate."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Psychic/GuardSwap.vb b/P3D/Pokemon/Attacks/Psychic/GuardSwap.vb
index eba06e78e..aaa9cd345 100644
Binary files a/P3D/Pokemon/Attacks/Psychic/GuardSwap.vb and b/P3D/Pokemon/Attacks/Psychic/GuardSwap.vb differ
diff --git a/P3D/Pokemon/Attacks/Psychic/HealBlock.vb b/P3D/Pokemon/Attacks/Psychic/HealBlock.vb
index 6ac2aca1d..d9255c2f9 100644
--- a/P3D/Pokemon/Attacks/Psychic/HealBlock.vb
+++ b/P3D/Pokemon/Attacks/Psychic/HealBlock.vb
@@ -14,7 +14,7 @@
Me.Power = 0
Me.Accuracy = 0
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Cute
+ Me.ContestCategory = ContestCategories.Smart
Me.Name = "Heal Block"
Me.Description = "For five turns, the user prevents the opposing team from using any moves, Abilities, or held items that recover HP."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Psychic/HealingWish.vb b/P3D/Pokemon/Attacks/Psychic/HealingWish.vb
index bf06e844e..53ff7448a 100644
--- a/P3D/Pokemon/Attacks/Psychic/HealingWish.vb
+++ b/P3D/Pokemon/Attacks/Psychic/HealingWish.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Psychic
Me.Power = 0
Me.Accuracy = 0
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Cute
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Healing Wish"
Me.Description = "The user faints. In return, the Pokemon taking its place will have its HP restored and status conditions cured."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Psychic/HeartSwap.vb b/P3D/Pokemon/Attacks/Psychic/HeartSwap.vb
index 62443a8c0..81ae359d2 100644
Binary files a/P3D/Pokemon/Attacks/Psychic/HeartSwap.vb and b/P3D/Pokemon/Attacks/Psychic/HeartSwap.vb differ
diff --git a/P3D/Pokemon/Attacks/Psychic/MiracleEye.vb b/P3D/Pokemon/Attacks/Psychic/MiracleEye.vb
index 06780301a..ba7a089ad 100644
--- a/P3D/Pokemon/Attacks/Psychic/MiracleEye.vb
+++ b/P3D/Pokemon/Attacks/Psychic/MiracleEye.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Psychic
Me.Power = 0
Me.Accuracy = 0
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Cute
+ Me.ContestCategory = ContestCategories.Smart
Me.Name = "Miracle Eye"
Me.Description = "Enables a Dark-type target to be hit by Psychic-type attacks. This also enables an evasive target to be hit."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Psychic/PowerSwap.vb b/P3D/Pokemon/Attacks/Psychic/PowerSwap.vb
index 07020f5ce..b2148ea9f 100644
Binary files a/P3D/Pokemon/Attacks/Psychic/PowerSwap.vb and b/P3D/Pokemon/Attacks/Psychic/PowerSwap.vb differ
diff --git a/P3D/Pokemon/Attacks/Psychic/PowerTrick.vb b/P3D/Pokemon/Attacks/Psychic/PowerTrick.vb
index 3bb278f85..e44088087 100644
--- a/P3D/Pokemon/Attacks/Psychic/PowerTrick.vb
+++ b/P3D/Pokemon/Attacks/Psychic/PowerTrick.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Psychic
Me.Power = 0
Me.Accuracy = 0
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Cool
+ Me.ContestCategory = ContestCategories.Smart
Me.Name = "Power Trick"
Me.Description = "The user employs its psychic power to switch its Attack with its Defense stat."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Psychic/PsychoShift.vb b/P3D/Pokemon/Attacks/Psychic/PsychoShift.vb
index aaf9c2be3..8b8c2bfdd 100644
--- a/P3D/Pokemon/Attacks/Psychic/PsychoShift.vb
+++ b/P3D/Pokemon/Attacks/Psychic/PsychoShift.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Psychic
Me.Power = 0
Me.Accuracy = 100
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Cool
+ Me.ContestCategory = ContestCategories.Smart
Me.Name = "Psycho Shift"
Me.Description = "Using its psychic power of suggestion, the user transfers its status conditions to the target."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Psychic/Synchronoise.vb b/P3D/Pokemon/Attacks/Psychic/Synchronoise.vb
index a2d26ec05..6ca3bbd7b 100644
--- a/P3D/Pokemon/Attacks/Psychic/Synchronoise.vb
+++ b/P3D/Pokemon/Attacks/Psychic/Synchronoise.vb
@@ -68,16 +68,16 @@
If op.Type1.Type = p.Type1.Type OrElse op.Type1.Type = p.Type2.Type Then
Return False
Else
- Return True
BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!"))
+ Return True
End If
Else
'Dual type
If op.Type1.Type = p.Type1.Type OrElse op.Type1.Type = p.Type2.Type OrElse op.Type2.Type = p.Type1.Type OrElse op.Type2.Type = p.Type2.Type Then
Return False
Else
- Return True
BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!"))
+ Return True
End If
End If
diff --git a/P3D/Pokemon/Attacks/Psychic/Teleport.vb b/P3D/Pokemon/Attacks/Psychic/Teleport.vb
index e4d6f680d..83f886c49 100644
Binary files a/P3D/Pokemon/Attacks/Psychic/Teleport.vb and b/P3D/Pokemon/Attacks/Psychic/Teleport.vb differ
diff --git a/P3D/Pokemon/Attacks/Psychic/TrickRoom.vb b/P3D/Pokemon/Attacks/Psychic/TrickRoom.vb
index 37d356435..89efafee7 100644
--- a/P3D/Pokemon/Attacks/Psychic/TrickRoom.vb
+++ b/P3D/Pokemon/Attacks/Psychic/TrickRoom.vb
@@ -14,7 +14,7 @@
Me.Power = 0
Me.Accuracy = 0
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Cute
+ Me.ContestCategory = ContestCategories.Smart
Me.Name = "Trick Room"
Me.Description = "The user creates a bizarre area in which slower Pokémon get to move first for five turns."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Psychic/ZenHeadbutt.vb b/P3D/Pokemon/Attacks/Psychic/ZenHeadbutt.vb
index 5e7c9b2d2..5937c8482 100644
Binary files a/P3D/Pokemon/Attacks/Psychic/ZenHeadbutt.vb and b/P3D/Pokemon/Attacks/Psychic/ZenHeadbutt.vb differ
diff --git a/P3D/Pokemon/Attacks/Rock/Rollout.vb b/P3D/Pokemon/Attacks/Rock/Rollout.vb
index 8691fae87..7e6e0d824 100644
--- a/P3D/Pokemon/Attacks/Rock/Rollout.vb
+++ b/P3D/Pokemon/Attacks/Rock/Rollout.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Rock
Me.Power = 30
Me.Accuracy = 90
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Tough
+ Me.ContestCategory = ContestCategories.Cute
Me.Name = "Rollout"
Me.Description = "The user continually rolls into the target over five turns. It becomes stronger each time it hits."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Rock/SmackDown.vb b/P3D/Pokemon/Attacks/Rock/SmackDown.vb
index 1a82676f5..2d053dda9 100644
--- a/P3D/Pokemon/Attacks/Rock/SmackDown.vb
+++ b/P3D/Pokemon/Attacks/Rock/SmackDown.vb
@@ -53,6 +53,25 @@
'#End
End Sub
+ Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen)
+ Dim op As Pokemon = BattleScreen.OppPokemon
+ If own = False Then
+ op = BattleScreen.OwnPokemon
+ End If
+
+ If own = True Then
+ If BattleScreen.FieldEffects.OppSmacked = 0 Then
+ BattleScreen.FieldEffects.OppSmacked = 1
+ BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & " fell straight down."))
+ End If
+ Else
+ If BattleScreen.FieldEffects.OwnSmacked = 0 Then
+ BattleScreen.FieldEffects.OwnSmacked = 1
+ BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & " fell straight down."))
+ End If
+ End If
+ End Sub
+
End Class
End Namespace
\ No newline at end of file
diff --git a/P3D/Pokemon/Attacks/Steel/BulletPunch.vb b/P3D/Pokemon/Attacks/Steel/BulletPunch.vb
index 78454b1fe..cb5bf334b 100644
--- a/P3D/Pokemon/Attacks/Steel/BulletPunch.vb
+++ b/P3D/Pokemon/Attacks/Steel/BulletPunch.vb
@@ -14,7 +14,7 @@
Me.Power = 40
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Bullet Punch"
Me.Description = "The user strikes the target with tough punches as fast as bullets. This move always goes first."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Steel/DoomDesire.vb b/P3D/Pokemon/Attacks/Steel/DoomDesire.vb
index b88475c8c..1eaadfe41 100644
--- a/P3D/Pokemon/Attacks/Steel/DoomDesire.vb
+++ b/P3D/Pokemon/Attacks/Steel/DoomDesire.vb
@@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Steel
Me.Power = 140
Me.Accuracy = 100
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Cool
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Doom Desire"
Me.Description = "Two turns after this move is used, the user blasts the target with a concentrated bundle of light."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Steel/FlashCannon.vb b/P3D/Pokemon/Attacks/Steel/FlashCannon.vb
index be78ad69b..30d7c43f4 100644
Binary files a/P3D/Pokemon/Attacks/Steel/FlashCannon.vb and b/P3D/Pokemon/Attacks/Steel/FlashCannon.vb differ
diff --git a/P3D/Pokemon/Attacks/Steel/GearUp.vb b/P3D/Pokemon/Attacks/Steel/GearUp.vb
index bacba2b6f..0c9045831 100644
--- a/P3D/Pokemon/Attacks/Steel/GearUp.vb
+++ b/P3D/Pokemon/Attacks/Steel/GearUp.vb
@@ -61,9 +61,16 @@
If own = False Then
p = BattleScreen.OppPokemon
End If
+ 'Plus and Minus
If p.Ability.ID = 57 OrElse p.Ability.ID = 58 Then
- BattleScreen.Battle.RaiseStat(own, own, BattleScreen, "Attack", 1, "", "move:gearup")
- BattleScreen.Battle.RaiseStat(own, own, BattleScreen, "Special Attack", 1, "", "move:gearup")
+ Dim a As Boolean = BattleScreen.Battle.RaiseStat(own, own, BattleScreen, "Attack", 1, "", "move:gearup")
+ Dim b As Boolean = BattleScreen.Battle.RaiseStat(own, own, BattleScreen, "Special Attack", 1, "", "move:gearup")
+
+ If a = False And b = False Then
+ BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!"))
+ End If
+ Else
+ BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!"))
End If
End Sub
diff --git a/P3D/Pokemon/Attacks/Steel/GyroBall.vb b/P3D/Pokemon/Attacks/Steel/GyroBall.vb
index 686223ba3..2a50baac1 100644
--- a/P3D/Pokemon/Attacks/Steel/GyroBall.vb
+++ b/P3D/Pokemon/Attacks/Steel/GyroBall.vb
@@ -14,7 +14,7 @@
Me.Power = 0
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Cool
Me.Name = "Gyro Ball"
Me.Description = "The user tackles the target with a high-speed spin. The slower the user, the greater the damage."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Steel/MetalBurst.vb b/P3D/Pokemon/Attacks/Steel/MetalBurst.vb
index abcd61352..a2ab18547 100644
--- a/P3D/Pokemon/Attacks/Steel/MetalBurst.vb
+++ b/P3D/Pokemon/Attacks/Steel/MetalBurst.vb
@@ -14,7 +14,7 @@
Me.Power = 0
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Cool
Me.Name = "Metal Burst"
Me.Description = "The user retaliates with much greater power against the target that last inflicted damage on it."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Steel/MirrorShot.vb b/P3D/Pokemon/Attacks/Steel/MirrorShot.vb
index 9783adb21..a474bf902 100644
--- a/P3D/Pokemon/Attacks/Steel/MirrorShot.vb
+++ b/P3D/Pokemon/Attacks/Steel/MirrorShot.vb
@@ -14,7 +14,7 @@
Me.Power = 65
Me.Accuracy = 100
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Cute
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Mirror Shot"
Me.Description = "The user lets loose a flash of energy at the target from its polished body. This may also lower the target's accuracy."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Water/Aquajet.vb b/P3D/Pokemon/Attacks/Water/Aquajet.vb
index bfe413686..7a462e2d9 100644
--- a/P3D/Pokemon/Attacks/Water/Aquajet.vb
+++ b/P3D/Pokemon/Attacks/Water/Aquajet.vb
@@ -1,6 +1,6 @@
Namespace BattleSystem.Moves.Water
- Public Class Aquajet
+ Public Class AquaJet
Inherits Attack
@@ -14,7 +14,7 @@
Me.Power = 40
Me.Accuracy = 100
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Beauty
+ Me.ContestCategory = ContestCategories.Cool
Me.Name = "Aqua Jet"
Me.Description = "The user lunges at the target speed that makes it almost invisible. This move always goes first."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Water/Aquatail.vb b/P3D/Pokemon/Attacks/Water/Aquatail.vb
index 3b42f85ff..ae3759e44 100644
--- a/P3D/Pokemon/Attacks/Water/Aquatail.vb
+++ b/P3D/Pokemon/Attacks/Water/Aquatail.vb
@@ -1,6 +1,6 @@
Namespace BattleSystem.Moves.Water
- Public Class Aquatail
+ Public Class AquaTail
Inherits Attack
@@ -14,7 +14,7 @@
Me.Power = 90
Me.Accuracy = 90
Me.Category = Categories.Physical
- Me.ContestCategory = ContestCategories.Cute
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Aqua Tail"
Me.Description = "The user attacks by swinging its tail as if it were a vicious wave in a raging storm."
Me.CriticalChance = 1
diff --git a/P3D/Pokemon/Attacks/Water/Brine.vb b/P3D/Pokemon/Attacks/Water/Brine.vb
index ca9f2e6e7..c7bbf816c 100644
--- a/P3D/Pokemon/Attacks/Water/Brine.vb
+++ b/P3D/Pokemon/Attacks/Water/Brine.vb
@@ -14,7 +14,7 @@
Me.Power = 65
Me.Accuracy = 100
Me.Category = Categories.Special
- Me.ContestCategory = ContestCategories.Smart
+ Me.ContestCategory = ContestCategories.Tough
Me.Name = "Brine"
Me.Description = "If the target's HP is down to about half, this attack will hit with double the power."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Water/Hydrocannon.vb b/P3D/Pokemon/Attacks/Water/Hydrocannon.vb
index 45c70fc28..27f78a3ff 100644
--- a/P3D/Pokemon/Attacks/Water/Hydrocannon.vb
+++ b/P3D/Pokemon/Attacks/Water/Hydrocannon.vb
@@ -1,6 +1,6 @@
Namespace BattleSystem.Moves.Water
- Public Class Hydrocannon
+ Public Class HydroCannon
Inherits Attack
diff --git a/P3D/Pokemon/Attacks/Water/Muddywater.vb b/P3D/Pokemon/Attacks/Water/Muddywater.vb
index 5ccad1323..d2966964c 100644
--- a/P3D/Pokemon/Attacks/Water/Muddywater.vb
+++ b/P3D/Pokemon/Attacks/Water/Muddywater.vb
@@ -1,6 +1,6 @@
Namespace BattleSystem.Moves.Water
- Public Class Muddywater
+ Public Class MuddyWater
Inherits Attack
diff --git a/P3D/Pokemon/Attacks/Water/RainDance.vb b/P3D/Pokemon/Attacks/Water/RainDance.vb
index 4bd376985..664cde91e 100644
--- a/P3D/Pokemon/Attacks/Water/RainDance.vb
+++ b/P3D/Pokemon/Attacks/Water/RainDance.vb
@@ -14,7 +14,7 @@
Me.Power = 0
Me.Accuracy = 0
Me.Category = Categories.Status
- Me.ContestCategory = ContestCategories.Tough
+ Me.ContestCategory = ContestCategories.Beauty
Me.Name = "Rain Dance"
Me.Description = "The user summons a heavy rain that falls for five turns, powering up Water-type moves."
Me.CriticalChance = 0
diff --git a/P3D/Pokemon/Attacks/Water/Whirlpool.vb b/P3D/Pokemon/Attacks/Water/Whirlpool.vb
index b6de948e2..d40914b55 100644
--- a/P3D/Pokemon/Attacks/Water/Whirlpool.vb
+++ b/P3D/Pokemon/Attacks/Water/Whirlpool.vb
@@ -55,6 +55,19 @@ Namespace BattleSystem.Moves.Water
Me.AIField2 = AIField.Trap
End Sub
+ Public Overrides Function GetBasePower(own As Boolean, BattleScreen As BattleScreen) As Integer
+ Dim dive As Integer = BattleScreen.FieldEffects.OppDiveCounter
+ If own = False Then
+ dive = BattleScreen.FieldEffects.OwnDiveCounter
+ End If
+
+ If dive > 0 Then
+ Return Me.Power * 2
+ Else
+ Return Me.Power
+ End If
+ End Function
+
Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen)
Dim p As Pokemon = BattleScreen.OwnPokemon
Dim op As Pokemon = BattleScreen.OppPokemon
diff --git a/P3D/Pokemon/Items/Berries/ChilanBerry.vb b/P3D/Pokemon/Items/Berries/ChilanBerry.vb
index c31290c13..4a2233ed4 100644
--- a/P3D/Pokemon/Items/Berries/ChilanBerry.vb
+++ b/P3D/Pokemon/Items/Berries/ChilanBerry.vb
@@ -1,6 +1,6 @@
Namespace Items.Berries
- -
+
-
Public Class ChilanBerry
Inherits Berry
diff --git a/P3D/Pokemon/Items/Berry.vb b/P3D/Pokemon/Items/Berry.vb
index 44b133278..111a8392f 100644
--- a/P3D/Pokemon/Items/Berry.vb
+++ b/P3D/Pokemon/Items/Berry.vb
@@ -32,7 +32,7 @@
Public FallGrow As Integer = 1
Public Type As Element.Types
- Public Power As Integer = 60
+ Public Power As Integer = 80
Public Overrides ReadOnly Property PokeDollarPrice As Integer = 100
Public Overrides ReadOnly Property FlingDamage As Integer = 10
diff --git a/P3D/Pokemon/Items/Machines/HM01.vb b/P3D/Pokemon/Items/Machines/HM01.vb
index b72fbb990..73edb4d45 100644
--- a/P3D/Pokemon/Items/Machines/HM01.vb
+++ b/P3D/Pokemon/Items/Machines/HM01.vb
@@ -7,6 +7,7 @@ Namespace Items.Machines
Public Sub New()
MyBase.New(False, 100, 15)
+ _textureRectangle = New Rectangle(48, 192, 24, 24)
End Sub
End Class
diff --git a/P3D/Pokemon/Items/Machines/HM02.vb b/P3D/Pokemon/Items/Machines/HM02.vb
index cfa6ea338..538007d77 100644
--- a/P3D/Pokemon/Items/Machines/HM02.vb
+++ b/P3D/Pokemon/Items/Machines/HM02.vb
@@ -7,6 +7,7 @@ Namespace Items.Machines
Public Sub New()
MyBase.New(False, 100, 19)
+ _textureRectangle = New Rectangle(73, 192, 24, 24)
End Sub
End Class
diff --git a/P3D/Pokemon/Items/Machines/HM03.vb b/P3D/Pokemon/Items/Machines/HM03.vb
index 24e75b102..9bc3d39a9 100644
--- a/P3D/Pokemon/Items/Machines/HM03.vb
+++ b/P3D/Pokemon/Items/Machines/HM03.vb
@@ -7,6 +7,7 @@ Namespace Items.Machines
Public Sub New()
MyBase.New(False, 100, 57)
+ _textureRectangle = New Rectangle(96, 192, 24, 24)
End Sub
End Class
diff --git a/P3D/Pokemon/Items/Machines/HM04.vb b/P3D/Pokemon/Items/Machines/HM04.vb
index 55dca338c..8fd20bd16 100644
--- a/P3D/Pokemon/Items/Machines/HM04.vb
+++ b/P3D/Pokemon/Items/Machines/HM04.vb
@@ -7,6 +7,7 @@ Namespace Items.Machines
Public Sub New()
MyBase.New(False, 100, 70)
+ _textureRectangle = New Rectangle(48, 192, 24, 24)
End Sub
End Class
diff --git a/P3D/Pokemon/Items/Machines/HM05.vb b/P3D/Pokemon/Items/Machines/HM05.vb
index 3da905ee0..42a0dbbbd 100644
--- a/P3D/Pokemon/Items/Machines/HM05.vb
+++ b/P3D/Pokemon/Items/Machines/HM05.vb
@@ -7,6 +7,7 @@ Namespace Items.Machines
Public Sub New()
MyBase.New(False, 100, 148)
+ _textureRectangle = New Rectangle(432, 312, 24, 24)
End Sub
End Class
diff --git a/P3D/Pokemon/Items/Machines/HM06.vb b/P3D/Pokemon/Items/Machines/HM06.vb
index 11e5a1a51..3f11a5179 100644
--- a/P3D/Pokemon/Items/Machines/HM06.vb
+++ b/P3D/Pokemon/Items/Machines/HM06.vb
@@ -7,6 +7,7 @@ Namespace Items.Machines
Public Sub New()
MyBase.New(False, 100, 250)
+ _textureRectangle = New Rectangle(96, 192, 24, 24)
End Sub
End Class
diff --git a/P3D/Pokemon/Items/Machines/HM07.vb b/P3D/Pokemon/Items/Machines/HM07.vb
index 88fec12ed..823b343aa 100644
--- a/P3D/Pokemon/Items/Machines/HM07.vb
+++ b/P3D/Pokemon/Items/Machines/HM07.vb
@@ -7,6 +7,7 @@ Namespace Items.Machines
Public Sub New()
MyBase.New(False, 100, 127)
+ _textureRectangle = New Rectangle(96, 192, 24, 24)
End Sub
End Class
diff --git a/P3D/Pokemon/Items/Machines/HM08.vb b/P3D/Pokemon/Items/Machines/HM08.vb
index e065f1a60..e22a4c83a 100644
--- a/P3D/Pokemon/Items/Machines/HM08.vb
+++ b/P3D/Pokemon/Items/Machines/HM08.vb
@@ -7,6 +7,7 @@ Namespace Items.Machines
Public Sub New()
MyBase.New(False, 100, 431)
+ _textureRectangle = New Rectangle(48, 192, 24, 24)
End Sub
End Class
diff --git a/P3D/Pokemon/Items/Machines/HM09.vb b/P3D/Pokemon/Items/Machines/HM09.vb
index cdba2d401..7f1e16ba5 100644
--- a/P3D/Pokemon/Items/Machines/HM09.vb
+++ b/P3D/Pokemon/Items/Machines/HM09.vb
@@ -7,6 +7,7 @@ Namespace Items.Machines
Public Sub New()
MyBase.New(False, 100, 560)
+ _textureRectangle = New Rectangle(120, 192, 24, 24)
End Sub
End Class
diff --git a/P3D/Pokemon/Items/Machines/HM10.vb b/P3D/Pokemon/Items/Machines/HM10.vb
index 58cebede7..03a0195cb 100644
--- a/P3D/Pokemon/Items/Machines/HM10.vb
+++ b/P3D/Pokemon/Items/Machines/HM10.vb
@@ -7,6 +7,7 @@ Namespace Items.Machines
Public Sub New()
MyBase.New(False, 100, 291)
+ _textureRectangle = New Rectangle(96, 192, 24, 24)
End Sub
End Class
diff --git a/P3D/Pokemon/Items/Medicine/PewterCrunchies.vb b/P3D/Pokemon/Items/Medicine/PewterCrunchies.vb
new file mode 100644
index 000000000..a0caf5f30
--- /dev/null
+++ b/P3D/Pokemon/Items/Medicine/PewterCrunchies.vb
@@ -0,0 +1,64 @@
+Namespace Items.Medicine
+
+
-
+ Public Class PewterCrunchies
+
+ Inherits MedicineItem
+
+ Public Overrides ReadOnly Property IsHealingItem As Boolean = True
+ Public Overrides ReadOnly Property Description As String = "Pewter City's famous crunchy snack. They can be used to heal all status conditions of a single Pokémon."
+ Public Overrides ReadOnly Property PokeDollarPrice As Integer = 250
+
+ Public Sub New()
+ _textureRectangle = New Rectangle(96, 312, 24, 24)
+ End Sub
+
+ Public Overrides Sub Use()
+ If CBool(GameModeManager.GetGameRuleValue("CanUseHealItem", "1")) = False Then
+ Screen.TextBox.Show("Cannot use heal items.", {}, False, False)
+ Exit Sub
+ End If
+ Dim selScreen = New PartyScreen(Core.CurrentScreen, Me, AddressOf Me.UseOnPokemon, "Use " & Me.Name, True) With {.Mode = Screens.UI.ISelectionScreen.ScreenMode.Selection, .CanExit = True}
+ AddHandler selScreen.SelectedObject, AddressOf UseItemhandler
+
+ Core.SetScreen(selScreen)
+ End Sub
+
+ Public Overrides Function UseOnPokemon(ByVal PokeIndex As Integer) As Boolean
+ Dim Pokemon As Pokemon = Core.Player.Pokemons(PokeIndex)
+
+ If Pokemon.Status = P3D.Pokemon.StatusProblems.Fainted Then
+ Screen.TextBox.reDelay = 0.0F
+ Screen.TextBox.Show(Pokemon.GetDisplayName() & "~is fainted!", {})
+
+ Return False
+ Else
+ If Pokemon.Status <> P3D.Pokemon.StatusProblems.None Or Pokemon.HasVolatileStatus(P3D.Pokemon.VolatileStatus.Confusion) = True Then
+ Pokemon.Status = P3D.Pokemon.StatusProblems.None
+
+ If Pokemon.HasVolatileStatus(P3D.Pokemon.VolatileStatus.Confusion) = True Then
+ Pokemon.RemoveVolatileStatus(P3D.Pokemon.VolatileStatus.Confusion)
+ End If
+
+ Screen.TextBox.reDelay = 0.0F
+
+ Dim t As String = Pokemon.GetDisplayName() & "~gets healed up!"
+ t &= RemoveItem()
+
+ SoundManager.PlaySound("single_heal", False)
+ Screen.TextBox.Show(t, {})
+ PlayerStatistics.Track("[17]Medicine Items used", 1)
+
+ Return True
+ Else
+ Screen.TextBox.reDelay = 0.0F
+ Screen.TextBox.Show(Pokemon.GetDisplayName() & "~is fully healed!", {}, True, True)
+
+ Return False
+ End If
+ End If
+ End Function
+
+ End Class
+
+End Namespace
diff --git a/P3D/Pokemon/Items/Medicine/RageCandyBar.vb b/P3D/Pokemon/Items/Medicine/RageCandyBar.vb
index fe5098d00..d2462bd74 100644
--- a/P3D/Pokemon/Items/Medicine/RageCandyBar.vb
+++ b/P3D/Pokemon/Items/Medicine/RageCandyBar.vb
@@ -1,6 +1,6 @@
Namespace Items.Medicine
-
-
+
-
Public Class RageCandyBar
Inherits MedicineItem
diff --git a/P3D/Pokemon/Items/Standard/PolkadotBow.vb b/P3D/Pokemon/Items/Standard/BerserkGene.vb
similarity index 72%
rename from P3D/Pokemon/Items/Standard/PolkadotBow.vb
rename to P3D/Pokemon/Items/Standard/BerserkGene.vb
index c7ae15ac9..9c84dcbff 100644
--- a/P3D/Pokemon/Items/Standard/PolkadotBow.vb
+++ b/P3D/Pokemon/Items/Standard/BerserkGene.vb
@@ -1,12 +1,12 @@
Namespace Items.Standard
-
-
- Public Class PolkadotBow
+
-
+ Public Class BerserkGene
Inherits Item
- Public Overrides ReadOnly Property Description As String = "A pink bow. A certain Pokémon likes this item."
- Public Overrides ReadOnly Property PokeDollarPrice As Integer = 100
+ Public Overrides ReadOnly Property Description As String = "A strand of DNA that overflows with energy. It raises offensive capabilities, but causes confusion."
+ Public Overrides ReadOnly Property PokeDollarPrice As Integer = 3000
Public Overrides ReadOnly Property CanBeUsedInBattle As Boolean = False
Public Overrides ReadOnly Property CanBeUsed As Boolean = False
diff --git a/P3D/Pokemon/Items/Standard/BrickPiece.vb b/P3D/Pokemon/Items/Standard/BrickPiece.vb
index 961837a52..e5b71a8c2 100644
--- a/P3D/Pokemon/Items/Standard/BrickPiece.vb
+++ b/P3D/Pokemon/Items/Standard/BrickPiece.vb
@@ -6,7 +6,7 @@ Namespace Items.Standard
Inherits Item
Public Overrides ReadOnly Property Description As String = "A rare chunk of brick."
- Public Overrides ReadOnly Property PokeDollarPrice As Integer = 100
+ Public Overrides ReadOnly Property PokeDollarPrice As Integer = 2500
Public Overrides ReadOnly Property CanBeUsedInBattle As Boolean = False
Public Overrides ReadOnly Property CanBeUsed As Boolean = False
diff --git a/P3D/Pokemon/Items/Standard/CellBattery.vb b/P3D/Pokemon/Items/Standard/CellBattery.vb
index 029b1d299..55bcd7fdf 100644
--- a/P3D/Pokemon/Items/Standard/CellBattery.vb
+++ b/P3D/Pokemon/Items/Standard/CellBattery.vb
@@ -1,6 +1,6 @@
Namespace Items.Standard
-
-
+
-
Public Class CellBattery
Inherits Item
diff --git a/P3D/Pokemon/Items/Standard/ElectricSeed.vb b/P3D/Pokemon/Items/Standard/ElectricSeed.vb
new file mode 100644
index 000000000..2bbe90d2f
--- /dev/null
+++ b/P3D/Pokemon/Items/Standard/ElectricSeed.vb
@@ -0,0 +1,20 @@
+Namespace Items.Standard
+
+
-
+ Public Class ElectricSeed
+
+ Inherits Item
+
+ Public Overrides ReadOnly Property Description As String = "An item to be held by a Pokémon. It boosts Defense on Electric Terrain. It can only be used once."
+ Public Overrides ReadOnly Property PokeDollarPrice As Integer = 2000
+ Public Overrides ReadOnly Property CanBeUsedInBattle As Boolean = False
+ Public Overrides ReadOnly Property CanBeUsed As Boolean = False
+
+ Public Sub New()
+ _textureRectangle = New Rectangle(312, 312, 24, 24)
+ End Sub
+
+ End Class
+
+End Namespace
+
diff --git a/P3D/Pokemon/Items/Standard/GrassySeed.vb b/P3D/Pokemon/Items/Standard/GrassySeed.vb
new file mode 100644
index 000000000..9c087f687
--- /dev/null
+++ b/P3D/Pokemon/Items/Standard/GrassySeed.vb
@@ -0,0 +1,20 @@
+Namespace Items.Standard
+
+
-
+ Public Class GrassySeed
+
+ Inherits Item
+
+ Public Overrides ReadOnly Property Description As String = "An item to be held by a Pokémon. It boosts Defense on Grassy Terrain. It can only be used once."
+ Public Overrides ReadOnly Property PokeDollarPrice As Integer = 2000
+ Public Overrides ReadOnly Property CanBeUsedInBattle As Boolean = False
+ Public Overrides ReadOnly Property CanBeUsed As Boolean = False
+
+ Public Sub New()
+ _textureRectangle = New Rectangle(336, 312, 24, 24)
+ End Sub
+
+ End Class
+
+End Namespace
+
diff --git a/P3D/Pokemon/Items/Standard/MistySeed.vb b/P3D/Pokemon/Items/Standard/MistySeed.vb
new file mode 100644
index 000000000..bb7b2db66
--- /dev/null
+++ b/P3D/Pokemon/Items/Standard/MistySeed.vb
@@ -0,0 +1,20 @@
+Namespace Items.Standard
+
+
-
+ Public Class MistySeed
+
+ Inherits Item
+
+ Public Overrides ReadOnly Property Description As String = "An item to be held by a Pokémon. It boosts Sp. Defense on Misty Terrain. It can only be used once."
+ Public Overrides ReadOnly Property PokeDollarPrice As Integer = 2000
+ Public Overrides ReadOnly Property CanBeUsedInBattle As Boolean = False
+ Public Overrides ReadOnly Property CanBeUsed As Boolean = False
+
+ Public Sub New()
+ _textureRectangle = New Rectangle(360, 312, 24, 24)
+ End Sub
+
+ End Class
+
+End Namespace
+
diff --git a/P3D/Pokemon/Items/Standard/PsychicSeed.vb b/P3D/Pokemon/Items/Standard/PsychicSeed.vb
new file mode 100644
index 000000000..f433648d6
--- /dev/null
+++ b/P3D/Pokemon/Items/Standard/PsychicSeed.vb
@@ -0,0 +1,20 @@
+Namespace Items.Standard
+
+
-
+ Public Class PsychicSeed
+
+ Inherits Item
+
+ Public Overrides ReadOnly Property Description As String = "An item to be held by a Pokémon. It boosts Sp. Defense on Psychic Terrain. It can only be used once."
+ Public Overrides ReadOnly Property PokeDollarPrice As Integer = 2000
+ Public Overrides ReadOnly Property CanBeUsedInBattle As Boolean = False
+ Public Overrides ReadOnly Property CanBeUsed As Boolean = False
+
+ Public Sub New()
+ _textureRectangle = New Rectangle(384, 312, 24, 24)
+ End Sub
+
+ End Class
+
+End Namespace
+
diff --git a/P3D/Pokemon/Items/Standard/TerrainExtender.vb b/P3D/Pokemon/Items/Standard/TerrainExtender.vb
new file mode 100644
index 000000000..76b69d35f
--- /dev/null
+++ b/P3D/Pokemon/Items/Standard/TerrainExtender.vb
@@ -0,0 +1,20 @@
+Namespace Items.Standard
+
+
-
+ Public Class TerrainExtender
+
+ Inherits Item
+
+ Public Overrides ReadOnly Property Description As String = "An item to be held by a Pokémon. It extends the duration of the terrain caused by the holder's move or Ability."
+ Public Overrides ReadOnly Property PokeDollarPrice As Integer = 2000
+ Public Overrides ReadOnly Property CanBeUsedInBattle As Boolean = False
+ Public Overrides ReadOnly Property CanBeUsed As Boolean = False
+
+ Public Sub New()
+ _textureRectangle = New Rectangle(288, 312, 24, 24)
+ End Sub
+
+ End Class
+
+End Namespace
+
diff --git a/P3D/Pokemon/Items/_itemList.txt b/P3D/Pokemon/Items/_itemList.txt
index 31904c523..f5abdc7ad 100644
Binary files a/P3D/Pokemon/Items/_itemList.txt and b/P3D/Pokemon/Items/_itemList.txt differ
diff --git a/P3D/Screens/Inventory/NewInventoryScreen.vb b/P3D/Screens/Inventory/NewInventoryScreen.vb
index ae9770aae..a6915a435 100644
--- a/P3D/Screens/Inventory/NewInventoryScreen.vb
+++ b/P3D/Screens/Inventory/NewInventoryScreen.vb
@@ -393,7 +393,7 @@ Public Class NewInventoryScreen
If _tabIndex = 4 Then
nameTextHeight = 40
End If
- Canvas.DrawRectangle(itemBatch, New Rectangle(CInt(itemLoc.X) - 16, CInt(itemLoc.Y) + 48, 128, nameTextHeight), New Color(0, 0, 0, CInt(If(_tabInControl, 64, 128) * _interfaceFade)))
+ Canvas.DrawRectangle(itemBatch, New Rectangle(CInt(itemLoc.X) - 16 - 9, CInt(itemLoc.Y) + 48, 128 + 18, nameTextHeight), New Color(0, 0, 0, CInt(If(_tabInControl, 64, 128) * _interfaceFade)))
Dim fontWidth As Integer = CInt(FontManager.MiniFont.MeasureString(cItem.Name).X)
itemBatch.DrawString(FontManager.MiniFont, cItem.Name, itemLoc + New Vector2(48 - fontWidth / 2.0F, 51), New Color(255, 255, 255, itemPanelAlpha))
@@ -974,13 +974,13 @@ Public Class NewInventoryScreen
'''
Private Sub UpdateShakeAnimation()
If _itemAnimation._shakeLeft = True Then
- _itemAnimation._shakeV -= 0.035F
+ _itemAnimation._shakeV -= 0.0275F
If _itemAnimation._shakeV <= -0.4F Then
_itemAnimation._shakeCount -= 1
_itemAnimation._shakeLeft = False
End If
Else
- _itemAnimation._shakeV += 0.035F
+ _itemAnimation._shakeV += 0.0275F
If _itemAnimation._shakeV >= 0.4F Then
_itemAnimation._shakeCount -= 1
_itemAnimation._shakeLeft = True
diff --git a/P3D/Screens/Pokemon/LearnAttackScreen.vb b/P3D/Screens/Pokemon/LearnAttackScreen.vb
index 570377c2b..dbba1e997 100644
--- a/P3D/Screens/Pokemon/LearnAttackScreen.vb
+++ b/P3D/Screens/Pokemon/LearnAttackScreen.vb
@@ -171,7 +171,7 @@
Dim drawText As String = ""
If AttackIndex = 4 Then
- drawText = "Don't learn """ & newAttack.Name & """?"
+ drawText = "Give up on learning """ & newAttack.Name & """?"
Else
drawText = "Forget """ & Pokemon.Attacks(AttackIndex).Name & """ to learn """ & newAttack.Name & """?"
If canForget = False Then
@@ -271,7 +271,7 @@
If AttackIndex <> 4 Then
TeachMovesScreen.LearnedMove = True
- Text = "1...2...3...and*Ta-da!*" & Pokemon.GetDisplayName() & " forgot~" & Pokemon.Attacks(AttackIndex).Name & "! And..."
+ Text = "1... 2... 3... and...*Ta-da!*" & Pokemon.GetDisplayName() & " forgot~" & Pokemon.Attacks(AttackIndex).Name & " and..."
Pokemon.Attacks.RemoveAt(AttackIndex)
Pokemon.Attacks.Insert(AttackIndex, newAttack)