From a06123925657737ca89e9dc0856a570de9962f35 Mon Sep 17 00:00:00 2001 From: Ruan Pablo Date: Sat, 22 Dec 2018 18:25:36 -0200 Subject: [PATCH] Move fixes --- P3D/Battle/BattleSystemV2/Battle.vb | 4 +- .../BattleSystemV2/BattleCalculation.vb | 80 ++++++++++++ P3D/Battle/BattleSystemV2/FieldEffects.vb | 2 + P3D/Content/Pokemon/Overworld/Normal/609.png | Bin 2064 -> 11801 bytes P3D/Pokemon/Attacks/Dragon/ClangingScales.vb | 2 +- P3D/Pokemon/Attacks/Fairy/Geomancy.vb | 116 ++++++++++++++++++ P3D/Pokemon/Attacks/Fighting/FinalGambit.vb | 4 +- P3D/Pokemon/Attacks/Fighting/Ride.vb | 2 +- P3D/Pokemon/Attacks/Fighting/RockSmash.vb | 2 +- P3D/Pokemon/Attacks/Flying/Fly.vb | 2 +- P3D/Pokemon/Attacks/Grass/Strength Sap.vb | 4 +- P3D/Pokemon/Attacks/Normal/RockClimb.vb | Bin 4510 -> 4508 bytes P3D/Pokemon/Attacks/Normal/TearfulLook.vb | 8 +- P3D/Pokemon/Attacks/Steel/GearUp.vb | 10 +- P3D/Pokemon/Attacks/Water/Dive.vb | 2 +- P3D/Pokemon/Attacks/Water/SparklingAria.vb | 2 +- P3D/Pokemon/Attacks/Water/Waterfall.vb | 2 +- P3D/Pokemon/Attacks/Water/Whirlpool.vb | 2 +- 18 files changed, 222 insertions(+), 22 deletions(-) diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb index e7fce6728..88fb0f5cc 100644 --- a/P3D/Battle/BattleSystemV2/Battle.vb +++ b/P3D/Battle/BattleSystemV2/Battle.vb @@ -3707,12 +3707,12 @@ Me.ChangeCameraAngel(1, own, BattleScreen) Select Case message Case "" 'Print default message only - BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is damaged by recoil")) + BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is damaged by recoil!")) Case "-1" 'Print no message at all 'Do nothing Case Else 'Print message given in 'message' BattleScreen.BattleQuery.Add(New TextQueryObject(message)) - BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is damaged by recoil")) + BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is damaged by recoil!")) End Select ReduceHP(Damage, own, from, BattleScreen, "", "recoildamage") End If diff --git a/P3D/Battle/BattleSystemV2/BattleCalculation.vb b/P3D/Battle/BattleSystemV2/BattleCalculation.vb index ba15a77da..db3de55a2 100644 --- a/P3D/Battle/BattleSystemV2/BattleCalculation.vb +++ b/P3D/Battle/BattleSystemV2/BattleCalculation.vb @@ -306,6 +306,86 @@ Return speed End Function + Public Shared Function DetermineBattleAttack(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Integer + Dim p As Pokemon = BattleScreen.OwnPokemon + If own = False Then + p = BattleScreen.OppPokemon + End If + + Dim attack As Integer = CInt(p.Attack * GetMultiplierFromStat(p.StatAttack)) 'Calculate the attack's basic value + + If own = True Then + If BattleScreen.IsPVPBattle = False Then + If Core.Player.Badges.Contains(1) = True Then + attack = CInt(attack + (attack * (1 / 8))) 'Add 1/8 of the attack if the player has the 1st badge and it's not a PvP battle + End If + End If + End If + + If p.Status = P3D.Pokemon.StatusProblems.Burn And p.Ability.Name.ToLower() <> "guts" Then + attack = CInt(attack / 2) + End If + + If Not p.Item Is Nothing Then + If p.Item.Name = "Choice Band" Then + attack = CInt(attack * 1.5F) + End If + If p.Number = 25 Then + If Not p.Item Is Nothing And BattleScreen.FieldEffects.CanUseItem(own) = True Then + If p.Item.Name = "Light Ball" Then + attack *= 2 + End If + End If + End If + If p.Number = 104 OrElse p.Number = 105 Then + If Not p.Item Is Nothing And BattleScreen.FieldEffects.CanUseItem(own) = True Then + If p.Item.Name = "Thick Club" Then + attack *= 2 + End If + End If + End If + End If + + Select Case p.Ability.Name.ToLower() + Case "huge power" + attack *= 2 + Case "pure power" + attack *= 2 + Case "defeatist" + If p.HP / p.MaxHP <= 0.5 Then + attack = CInt(attack / 2) + End If + Case "hustle" + attack = CInt(attack * 1.5F) + Case "flower gift" + If BattleScreen.FieldEffects.Weather = BattleWeather.WeatherTypes.Sunny Then + attack = CInt(attack * 1.5F) + End If + End Select + + If p.Ability.Name.ToLower() = "guts" Then + If p.Status = Pokemon.StatusProblems.Paralyzed Or p.Status = Pokemon.StatusProblems.Burn Or p.Status = Pokemon.StatusProblems.Poison Or p.Status = Pokemon.StatusProblems.Sleep Or p.Status = Pokemon.StatusProblems.Freeze Then + attack = CInt(attack * 1.5F) + End If + End If + + If p.Ability.Name.ToLower() = "slow start" Then + If own = True Then + If BattleScreen.FieldEffects.OwnTurnCounts < 5 Then + attack = CInt(attack / 2) + End If + Else + If BattleScreen.FieldEffects.OppTurnCounts < 5 Then + attack = CInt(attack / 2) + End If + End If + End If + + attack = attack.Clamp(1, 999) + + Return attack + End Function + ''' ''' Outcome: 0=true/>1=false:1=sleeptalk/snore 2=other move 3=start sleep 4=X wont obey 5=X wont obey 6=X turned away 7=X is loafing around 8=X pretended to not notice ''' diff --git a/P3D/Battle/BattleSystemV2/FieldEffects.vb b/P3D/Battle/BattleSystemV2/FieldEffects.vb index daaabc88d..8702b970b 100644 --- a/P3D/Battle/BattleSystemV2/FieldEffects.vb +++ b/P3D/Battle/BattleSystemV2/FieldEffects.vb @@ -52,6 +52,7 @@ Public OwnLeechSeed As Integer = 0 'The opponent used leech seed Public OwnSolarBeam As Integer = 0 'Charge counter for solar beam Public OwnSolarBlade As Integer = 0 'Charge counter for solar blade + Public OwnGeomancy As Integer = 0 'Charge counter for solar beam Public OwnLockOn As Integer = 0 'Counter for the moves lock-on and mind reader Public OwnBideCounter As Integer = 0 'Counter for the Bide move Public OwnBideDamage As Integer = 0 'Half of the damage dealt by bide @@ -181,6 +182,7 @@ Public OppLeechSeed As Integer = 0 Public OppSolarBeam As Integer = 0 Public OppSolarBlade As Integer = 0 + Public OppGeomancy As Integer = 0 Public OppLockOn As Integer = 0 Public OppBideCounter As Integer = 0 Public OppBideDamage As Integer = 0 diff --git a/P3D/Content/Pokemon/Overworld/Normal/609.png b/P3D/Content/Pokemon/Overworld/Normal/609.png index 4c2059c1a47a433257ae142a9527662111c0a724..07767f20b3f0804b99b898d01768a4bef37e64be 100644 GIT binary patch literal 11801 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 diff --git a/P3D/Pokemon/Attacks/Dragon/ClangingScales.vb b/P3D/Pokemon/Attacks/Dragon/ClangingScales.vb index 5a8bfcdc6..72a1e93a6 100644 --- a/P3D/Pokemon/Attacks/Dragon/ClangingScales.vb +++ b/P3D/Pokemon/Attacks/Dragon/ClangingScales.vb @@ -56,7 +56,7 @@ Namespace BattleSystem.Moves.Dragon End Sub Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen) - BattleScreen.Battle.LowerStat(Not own, own, BattleScreen, "Defense", 1, "", "move:clangingscales") + BattleScreen.Battle.LowerStat(own, own, BattleScreen, "Defense", 1, "", "move:clangingscales") End Sub End Class diff --git a/P3D/Pokemon/Attacks/Fairy/Geomancy.vb b/P3D/Pokemon/Attacks/Fairy/Geomancy.vb index e27281c6b..8fdeb788b 100644 --- a/P3D/Pokemon/Attacks/Fairy/Geomancy.vb +++ b/P3D/Pokemon/Attacks/Fairy/Geomancy.vb @@ -56,6 +56,94 @@ Namespace BattleSystem.Moves.Fairy Me.AIField3 = AIField.CanRaiseSpeed End Sub + Public Overrides Sub PreAttack(Own As Boolean, BattleScreen As BattleScreen) + Dim Geomancy As Integer = BattleScreen.FieldEffects.OwnGeomancy + If Own = False Then + Geomancy = BattleScreen.FieldEffects.OppGeomancy + End If + + If Geomancy = 0 Then + Me.FocusOppPokemon = False + Else + Me.FocusOppPokemon = True + End If + End Sub + + Public Overrides Function MoveFailBeforeAttack(Own As Boolean, BattleScreen As BattleScreen) As Boolean + Dim p As Pokemon = BattleScreen.OwnPokemon + If Own = False Then + p = BattleScreen.OppPokemon + End If + + Dim hasToCharge As Boolean = True + + Dim beam As Integer = BattleScreen.FieldEffects.OwnGeomancy + If Own = False Then + beam = BattleScreen.FieldEffects.OppGeomancy + End If + + If beam = 0 Then + BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is absorbing power!")) + Else + hasToCharge = False + End If + + If hasToCharge = True Then + If Not p.Item Is Nothing Then + If p.Item.Name.ToLower() = "power herb" And BattleScreen.FieldEffects.CanUseItem(Own) = True And BattleScreen.FieldEffects.CanUseOwnItem(Own, BattleScreen) = True Then + If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "Power Herb pushed the use of Geomancy!", "move:geomancy") = True Then + hasToCharge = False + End If + End If + End If + End If + + If hasToCharge = True Then + If Own = True Then + BattleScreen.FieldEffects.OwnGeomancy = 1 + Else + BattleScreen.FieldEffects.OppGeomancy = 1 + End If + Return True + Else + If Own = True Then + BattleScreen.FieldEffects.OwnGeomancy = 0 + Else + BattleScreen.FieldEffects.OppGeomancy = 0 + End If + Return False + End If + End Function + + Public Overrides Sub MoveSelected(own As Boolean, BattleScreen As BattleScreen) + If own = True Then + BattleScreen.FieldEffects.OwnGeomancy = 0 + Else + BattleScreen.FieldEffects.OppGeomancy = 0 + End If + End Sub + + Public Overrides Function DeductPP(own As Boolean, BattleScreen As BattleScreen) As Boolean + Dim geomancy As Integer = BattleScreen.FieldEffects.OwnGeomancy + If own = False Then + geomancy = BattleScreen.FieldEffects.OppGeomancy + End If + + If Geomancy = 0 Then + Return False + Else + Return True + End If + End Function + + Private Sub MoveFails(own As Boolean, BattleScreen As BattleScreen) + If own = True Then + BattleScreen.FieldEffects.OwnGeomancy = 0 + Else + BattleScreen.FieldEffects.OppGeomancy = 0 + End If + End Sub + Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen) Dim b As Boolean = BattleScreen.Battle.RaiseStat(own, own, BattleScreen, "Special Attack", 2, "", "move:geomancy") Dim d As Boolean = BattleScreen.Battle.RaiseStat(own, own, BattleScreen, "Special Defense", 2, "", "move:geomancy") @@ -65,6 +153,34 @@ Namespace BattleSystem.Moves.Fairy End If End Sub + Public Overrides Sub MoveMisses(own As Boolean, BattleScreen As BattleScreen) + MoveFails(own, BattleScreen) + End Sub + + Public Overrides Sub AbsorbedBySubstitute(own As Boolean, BattleScreen As BattleScreen) + MoveFails(own, BattleScreen) + End Sub + + Public Overrides Sub MoveProtectedDetected(own As Boolean, BattleScreen As BattleScreen) + MoveFails(own, BattleScreen) + End Sub + + Public Overrides Sub InflictedFlinch(own As Boolean, BattleScreen As BattleScreen) + MoveFails(own, BattleScreen) + End Sub + + Public Overrides Sub IsSleeping(own As Boolean, BattleScreen As BattleScreen) + MoveFails(own, BattleScreen) + End Sub + + Public Overrides Sub HurtItselfInConfusion(own As Boolean, BattleScreen As BattleScreen) + MoveFails(own, BattleScreen) + End Sub + + Public Overrides Sub IsAttracted(own As Boolean, BattleScreen As BattleScreen) + MoveFails(own, BattleScreen) + End Sub + End Class End Namespace \ No newline at end of file diff --git a/P3D/Pokemon/Attacks/Fighting/FinalGambit.vb b/P3D/Pokemon/Attacks/Fighting/FinalGambit.vb index 0b98eefca..5b6c70f91 100644 --- a/P3D/Pokemon/Attacks/Fighting/FinalGambit.vb +++ b/P3D/Pokemon/Attacks/Fighting/FinalGambit.vb @@ -61,8 +61,8 @@ p = BattleScreen.OppPokemon End If Dim dmg As Integer = p.HP - BattleScreen.Battle.ReduceHP(dmg, own, own, BattleScreen, "", "move:finalgambit") - BattleScreen.Battle.ReduceHP(dmg, Not own, own, BattleScreen, "", "move:finalgambit") + BattleScreen.Battle.ReduceHP(p.HP, own, own, BattleScreen, "", "move:finalgambit") + BattleScreen.Battle.ReduceHP(p.HP, Not own, own, BattleScreen, "", "move:finalgambit") End Sub End Class diff --git a/P3D/Pokemon/Attacks/Fighting/Ride.vb b/P3D/Pokemon/Attacks/Fighting/Ride.vb index 848e5a8b3..cdcbe5a15 100644 --- a/P3D/Pokemon/Attacks/Fighting/Ride.vb +++ b/P3D/Pokemon/Attacks/Fighting/Ride.vb @@ -18,7 +18,7 @@ Me.Name = "Ride" Me.Description = "The user runs over the target rapidly. The power rises when the user's accuracy stat is low." Me.CriticalChance = 1 - Me.IsHMMove = False + Me.IsHMMove = True Me.Target = Targets.OneAdjacentTarget Me.Priority = 0 Me.TimesToAttack = 1 diff --git a/P3D/Pokemon/Attacks/Fighting/RockSmash.vb b/P3D/Pokemon/Attacks/Fighting/RockSmash.vb index cd9e434cc..53ac9143f 100644 --- a/P3D/Pokemon/Attacks/Fighting/RockSmash.vb +++ b/P3D/Pokemon/Attacks/Fighting/RockSmash.vb @@ -18,7 +18,7 @@ Me.Name = "Rock Smash" Me.Description = "The user attacks with a punch that can shatter a rock. It may also lower the target's Defense stat." Me.CriticalChance = 1 - Me.IsHMMove = False + Me.IsHMMove = True Me.Target = Targets.OneAdjacentTarget Me.Priority = 0 Me.TimesToAttack = 1 diff --git a/P3D/Pokemon/Attacks/Flying/Fly.vb b/P3D/Pokemon/Attacks/Flying/Fly.vb index f06be34e9..56874e3a5 100644 --- a/P3D/Pokemon/Attacks/Flying/Fly.vb +++ b/P3D/Pokemon/Attacks/Flying/Fly.vb @@ -18,7 +18,7 @@ Me.Name = "Fly" Me.Description = "The user soars, then strikes its target on the second turn. It can also be used for flying to any familiar town." Me.CriticalChance = 1 - Me.IsHMMove = False + Me.IsHMMove = True Me.Target = Targets.OneAdjacentTarget Me.Priority = 0 Me.TimesToAttack = 1 diff --git a/P3D/Pokemon/Attacks/Grass/Strength Sap.vb b/P3D/Pokemon/Attacks/Grass/Strength Sap.vb index f2edb170d..d8fc283b0 100644 --- a/P3D/Pokemon/Attacks/Grass/Strength Sap.vb +++ b/P3D/Pokemon/Attacks/Grass/Strength Sap.vb @@ -60,7 +60,9 @@ op = BattleScreen.OwnPokemon End If - Dim heal As Integer = op.StatAttack + 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 diff --git a/P3D/Pokemon/Attacks/Normal/RockClimb.vb b/P3D/Pokemon/Attacks/Normal/RockClimb.vb index a34ccfcd8c767aa7ee6ca60a6fed2e4b9671476f..d5b435888874971eb8d0d5197047741db5950b41 100644 GIT binary patch delta 16 YcmbQIJV$xMY}U!`>{^?TvtH*0061C(eEx~05!x0D*ylh diff --git a/P3D/Pokemon/Attacks/Normal/TearfulLook.vb b/P3D/Pokemon/Attacks/Normal/TearfulLook.vb index e1a489c4e..c189e462f 100644 --- a/P3D/Pokemon/Attacks/Normal/TearfulLook.vb +++ b/P3D/Pokemon/Attacks/Normal/TearfulLook.vb @@ -51,13 +51,13 @@ Me.IsWonderGuardAffected = False '#End - Me.AIField1 = AIField.LowerDefense - Me.AIField2 = AIField.LowerSpDefense + Me.AIField1 = AIField.LowerAttack + Me.AIField2 = AIField.LowerSpAttack End Sub Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen) - Dim b As Boolean = BattleScreen.Battle.LowerStat(Not own, own, BattleScreen, "Defense", 1, "", "move:tearfullook") - Dim d As Boolean = BattleScreen.Battle.LowerStat(Not own, own, BattleScreen, "Special Defense", 1, "", "move:tearfullook") + Dim b As Boolean = BattleScreen.Battle.LowerStat(Not own, own, BattleScreen, "Attack", 1, "", "move:tearfullook") + Dim d As Boolean = BattleScreen.Battle.LowerStat(Not own, own, BattleScreen, "Special Attack", 1, "", "move:tearfullook") If b = False AndAlso DisabledWhileGravity = False Then BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!")) End If diff --git a/P3D/Pokemon/Attacks/Steel/GearUp.vb b/P3D/Pokemon/Attacks/Steel/GearUp.vb index 1b87e765f..bacba2b6f 100644 --- a/P3D/Pokemon/Attacks/Steel/GearUp.vb +++ b/P3D/Pokemon/Attacks/Steel/GearUp.vb @@ -57,13 +57,13 @@ End Sub Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen) - Dim op As Pokemon = BattleScreen.OppPokemon + Dim p As Pokemon = BattleScreen.OwnPokemon If own = False Then - op = BattleScreen.OwnPokemon + p = BattleScreen.OppPokemon End If - If op.Ability.ID = 57 OrElse op.Ability.ID = 58 Then - BattleScreen.Battle.RaiseStat(Not own, own, BattleScreen, "Attack", 1, "", "move:gearup") - BattleScreen.Battle.RaiseStat(Not own, own, BattleScreen, "Special Attack", 1, "", "move:gearup") + 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") End If End Sub diff --git a/P3D/Pokemon/Attacks/Water/Dive.vb b/P3D/Pokemon/Attacks/Water/Dive.vb index 94b296673..09b50415a 100644 --- a/P3D/Pokemon/Attacks/Water/Dive.vb +++ b/P3D/Pokemon/Attacks/Water/Dive.vb @@ -18,7 +18,7 @@ Me.Name = "Dive" Me.Description = "Diving on the first turn, the user floats up and attacks on the next turn." Me.CriticalChance = 1 - Me.IsHMMove = False + Me.IsHMMove = True Me.Target = Targets.OneAdjacentTarget Me.Priority = 0 Me.TimesToAttack = 1 diff --git a/P3D/Pokemon/Attacks/Water/SparklingAria.vb b/P3D/Pokemon/Attacks/Water/SparklingAria.vb index 115ddc009..8b281009b 100644 --- a/P3D/Pokemon/Attacks/Water/SparklingAria.vb +++ b/P3D/Pokemon/Attacks/Water/SparklingAria.vb @@ -18,7 +18,7 @@ Me.Name = "Sparkling Aria" Me.Description = "The user bursts into song, emitting many bubbles. Any Pokémon suffering from a burn will be healed by the touch of these bubbles." Me.CriticalChance = 1 - Me.IsHMMove = True + Me.IsHMMove = False Me.Target = Targets.AllAdjacentTargets Me.Priority = 0 Me.TimesToAttack = 1 diff --git a/P3D/Pokemon/Attacks/Water/Waterfall.vb b/P3D/Pokemon/Attacks/Water/Waterfall.vb index 9a0742456..9be7e2148 100644 --- a/P3D/Pokemon/Attacks/Water/Waterfall.vb +++ b/P3D/Pokemon/Attacks/Water/Waterfall.vb @@ -18,7 +18,7 @@ Me.Name = "Waterfall" Me.Description = "The user charges at the target and may make it flinch. It can also be used to climb a waterfall." Me.CriticalChance = 1 - Me.IsHMMove = False + Me.IsHMMove = True Me.Target = Targets.OneAdjacentTarget Me.Priority = 0 Me.TimesToAttack = 1 diff --git a/P3D/Pokemon/Attacks/Water/Whirlpool.vb b/P3D/Pokemon/Attacks/Water/Whirlpool.vb index 2010a20d1..b6de948e2 100644 --- a/P3D/Pokemon/Attacks/Water/Whirlpool.vb +++ b/P3D/Pokemon/Attacks/Water/Whirlpool.vb @@ -18,7 +18,7 @@ Namespace BattleSystem.Moves.Water Me.Name = "Whirlpool" Me.Description = "Traps foes in a violent swirling whirlpool for four to five turns." Me.CriticalChance = 1 - Me.IsHMMove = False + Me.IsHMMove = True Me.Target = Targets.OneAdjacentTarget Me.Priority = 0 Me.TimesToAttack = 1