diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 9d60496bd..2bc2d0a43 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -124,11 +124,13 @@
Exit Sub
End If
- 'If Shadow Force gets programmed, put this in.
- 'If BattleScreen.FieldEffects.OwnShadowForceCounter = 1 Then
- ' InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, xxx)})
- ' Exit Sub
- 'End If
+ 'Shadow Force:
+ If BattleScreen.FieldEffects.OwnShadowForceCounter = 1 Then
+ SelectedMoveOwn = False
+ DeleteHostQuery(BattleScreen)
+ InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 467)})
+ Exit Sub
+ End If
'If Sky Drop gets programmed, put this in.
'If BattleScreen.FieldEffects.OwnSkyDropCounter = 1 Then
@@ -301,10 +303,11 @@
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 291)}
End If
- ''Shadow Force:
- 'If BattleScreen.FieldEffects.OppShadowForceCounter = 1 Then
- ' Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = (19).ToString()}
- 'End If
+ 'Shadow Force:
+ If BattleScreen.FieldEffects.OppShadowForceCounter = 1 Then
+ SelectedMoveOpp = False
+ Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 467)}
+ End If
''Sky Drop:
'If BattleScreen.FieldEffects.OppSkyDropCounter = 1 Then
@@ -944,7 +947,7 @@
Dim dig As Integer
Dim dive As Integer
Dim skyDrop As Integer 'not implemented yet
- Dim shadowForce As Integer 'not implemented yet
+ Dim shadowForce As Integer
Dim skullBash As Integer
Dim skyAttack As Integer
Dim solarBeam As Integer
diff --git a/P3D/Battle/BattleSystemV2/BattleCalculation.vb b/P3D/Battle/BattleSystemV2/BattleCalculation.vb
index a07c52e2a..58acf30ea 100644
--- a/P3D/Battle/BattleSystemV2/BattleCalculation.vb
+++ b/P3D/Battle/BattleSystemV2/BattleCalculation.vb
@@ -575,6 +575,9 @@
If UsedAttack.ID = 524 Then
Return True
End If
+ If UsedAttack.ID = 480 Then
+ Return True
+ End If
Return False
End Function
diff --git a/P3D/Content/GUI/Evolution/EvolutionSpark.png b/P3D/Content/GUI/Evolution/EvolutionSpark.png
index f62bdac2e..885b693db 100644
Binary files a/P3D/Content/GUI/Evolution/EvolutionSpark.png and b/P3D/Content/GUI/Evolution/EvolutionSpark.png differ
diff --git a/P3D/Content/GUI/Evolution/Light.png b/P3D/Content/GUI/Evolution/Light.png
index b27b3bf97..5f9d72001 100644
Binary files a/P3D/Content/GUI/Evolution/Light.png and b/P3D/Content/GUI/Evolution/Light.png differ
diff --git a/P3D/Content/GUI/Menus/SaveBook.png b/P3D/Content/GUI/Menus/SaveBook.png
index 7c85ca3c6..fa566cd41 100644
Binary files a/P3D/Content/GUI/Menus/SaveBook.png and b/P3D/Content/GUI/Menus/SaveBook.png differ
diff --git a/P3D/Content/GUI/Menus/Types.png b/P3D/Content/GUI/Menus/Types.png
index 2fba3ebf7..874b19b34 100644
Binary files a/P3D/Content/GUI/Menus/Types.png and b/P3D/Content/GUI/Menus/Types.png differ
diff --git a/P3D/Content/GUI/Overworld/flash_overlay.png b/P3D/Content/GUI/Overworld/flash_overlay.png
index c96986af1..e5b35167f 100644
Binary files a/P3D/Content/GUI/Overworld/flash_overlay.png and b/P3D/Content/GUI/Overworld/flash_overlay.png differ
diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index a3a0c898b..8be05b15e 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -25508,6 +25508,24 @@
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
@@ -25763,9 +25781,13 @@
-
+
+ PreserveNewest
+
-
+
+ PreserveNewest
+
@@ -26106,7 +26128,9 @@
-
+
+ PreserveNewest
+
diff --git a/P3D/Pokemon/Attacks/Attack.vb b/P3D/Pokemon/Attacks/Attack.vb
index 2c333f9cf..849c8df99 100644
--- a/P3D/Pokemon/Attacks/Attack.vb
+++ b/P3D/Pokemon/Attacks/Attack.vb
@@ -1080,8 +1080,8 @@
returnMove = New Moves.Dark.NastyPlot()
Case 418
returnMove = New Moves.Steel.BulletPunch()
- 'Case 419
- 'Avalanche
+ Case 419
+ returnMove = New Moves.Ice.Avalanche()
Case 420
returnMove = New Moves.Ice.IceShard()
Case 421
@@ -1162,22 +1162,22 @@
returnMove = New Moves.Normal.DoubleHit()
Case 459
returnMove = New Moves.Dragon.RoarOfTime()
- 'Case 460
- 'Spacial Rend
+ Case 460
+ returnMove = New Moves.Dragon.SpacialRend()
'Case 461
'Lunar Dance
Case 462
returnMove = New Moves.Normal.CrushGrip()
Case 463
returnMove = New Moves.Fire.MagmaStorm()
- 'Case 464
- 'Dark Void
+ Case 464
+ returnMove = New Moves.Dark.DarkVoid()
Case 465
returnMove = New Moves.Grass.Seedflare()
Case 466
returnMove = New Moves.Ghost.OminousWind()
- 'Case 467
- 'Shadow Force
+ Case 467
+ returnMove = New Moves.Ghost.ShadowForce()
Case 468
returnMove = New Moves.Dark.HoneClaws()
'Case 469
@@ -1202,8 +1202,8 @@
'Magic Room
Case 479
returnMove = New Moves.Rock.SmackDown()
- 'Case 480
- 'Storm Throw
+ Case 480
+ returnMove = New Moves.Fighting.StormThrow()
Case 481
returnMove = New Moves.Fire.FlameBurst()
Case 482
@@ -1471,9 +1471,9 @@
Case 613
returnMove = New Moves.Flying.OblivionWing()
'Case 614
- 'Tousand Arrows
- 'Case 615
- 'Thousand Waves
+ 'Thousand Arrows
+ Case 615
+ returnMove = New Moves.Ground.ThousandWaves()
Case 616
returnMove = New Moves.Ground.LandsWrath()
'Case 617
diff --git a/P3D/Pokemon/Attacks/Dark/DarkVoid.vb b/P3D/Pokemon/Attacks/Dark/DarkVoid.vb
new file mode 100644
index 000000000..1bc19a541
--- /dev/null
+++ b/P3D/Pokemon/Attacks/Dark/DarkVoid.vb
@@ -0,0 +1,67 @@
+Namespace BattleSystem.Moves.Dark
+
+ Public Class DarkVoid
+
+ Inherits Attack
+
+ Public Sub New()
+ '#Definitions
+ Me.Type = New Element(Element.Types.Dark)
+ Me.ID = 464
+ Me.OriginalPP = 10
+ Me.CurrentPP = 10
+ Me.MaxPP = 10
+ Me.Power = 0
+ Me.Accuracy = 50
+ Me.Category = Categories.Status
+ Me.ContestCategory = ContestCategories.Smart
+ Me.Name = "Dark Void"
+ Me.Description = "Opposing Pokémon are dragged into a world of total darkness that makes them sleep."
+ Me.CriticalChance = 0
+ Me.IsHMMove = False
+ Me.Target = Targets.AllAdjacentFoes
+ Me.Priority = 0
+ Me.TimesToAttack = 1
+ '#End
+
+ '#SpecialDefinitions
+ Me.MakesContact = False
+ Me.ProtectAffected = True
+ Me.MagicCoatAffected = True
+ Me.SnatchAffected = False
+ Me.MirrorMoveAffected = True
+ Me.KingsrockAffected = False
+ Me.CounterAffected = False
+
+ Me.DisabledWhileGravity = False
+ Me.UseEffectiveness = False
+ Me.ImmunityAffected = False
+ Me.RemovesFrozen = False
+ Me.HasSecondaryEffect = False
+
+ Me.IsHealingMove = False
+ Me.IsRecoilMove = False
+ Me.IsPunchingMove = False
+ Me.IsDamagingMove = False
+ Me.IsProtectMove = False
+ Me.IsSoundMove = False
+
+ Me.IsAffectedBySubstitute = True
+ Me.IsOneHitKOMove = False
+ Me.IsWonderGuardAffected = False
+ '#End
+
+ Me.AIField1 = AIField.Sleep
+ Me.AIField2 = AIField.Nothing
+ End Sub
+
+ Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen)
+ Dim b As Boolean = BattleScreen.Battle.InflictSleep(Not own, own, BattleScreen, -1, "", "move:darkvoid")
+ If b = False Then
+ BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!"))
+ End If
+ End Sub
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/P3D/Pokemon/Attacks/Dragon/SpacialRend.vb b/P3D/Pokemon/Attacks/Dragon/SpacialRend.vb
new file mode 100644
index 000000000..c6735f8e0
--- /dev/null
+++ b/P3D/Pokemon/Attacks/Dragon/SpacialRend.vb
@@ -0,0 +1,57 @@
+Namespace BattleSystem.Moves.Dragon
+
+ Public Class SpacialRend
+
+ Inherits Attack
+
+ Public Sub New()
+ '#Definitions
+ Me.Type = New Element(Element.Types.Dragon)
+ Me.ID = 460
+ Me.OriginalPP = 5
+ Me.CurrentPP = 5
+ Me.MaxPP = 5
+ Me.Power = 100
+ Me.Accuracy = 95
+ Me.Category = Categories.Special
+ Me.ContestCategory = ContestCategories.Tough
+ 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
+ Me.IsHMMove = False
+ Me.Target = Targets.OneAdjacentTarget
+ Me.Priority = 0
+ Me.TimesToAttack = 1
+ '#End
+
+ '#SpecialDefinitions
+ Me.MakesContact = False
+ Me.ProtectAffected = True
+ Me.MagicCoatAffected = False
+ Me.SnatchAffected = False
+ Me.MirrorMoveAffected = True
+ Me.KingsrockAffected = True
+ Me.CounterAffected = False
+
+ Me.DisabledWhileGravity = False
+ Me.UseEffectiveness = True
+ Me.ImmunityAffected = True
+ Me.HasSecondaryEffect = False
+ Me.RemovesFrozen = False
+
+ Me.IsHealingMove = False
+ Me.IsRecoilMove = False
+ Me.IsPunchingMove = False
+ Me.IsDamagingMove = True
+ Me.IsProtectMove = False
+ Me.IsSoundMove = False
+
+ Me.IsAffectedBySubstitute = True
+ Me.IsOneHitKOMove = False
+ Me.IsWonderGuardAffected = True
+ '#End
+ End Sub
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/P3D/Pokemon/Attacks/Fighting/StormThrow.vb b/P3D/Pokemon/Attacks/Fighting/StormThrow.vb
new file mode 100644
index 000000000..27a5c426e
--- /dev/null
+++ b/P3D/Pokemon/Attacks/Fighting/StormThrow.vb
@@ -0,0 +1,56 @@
+Namespace BattleSystem.Moves.Fighting
+
+ Public Class StormThrow
+
+ Inherits Attack
+
+ Public Sub New()
+ '#Definitions
+ Me.Type = New Element(Element.Types.Fighting)
+ Me.ID = 480
+ Me.OriginalPP = 10
+ Me.CurrentPP = 10
+ Me.MaxPP = 10
+ Me.Power = 60
+ Me.Accuracy = 100
+ Me.Category = Categories.Physical
+ Me.ContestCategory = ContestCategories.Cool
+ Me.Name = "Storm Throw"
+ Me.Description = "The user strikes the target with a fierce blow. This attack always results in a critical hit."
+ Me.CriticalChance = 1
+ Me.IsHMMove = False
+ Me.Target = Targets.OneAdjacentTarget
+ Me.Priority = 0
+ Me.TimesToAttack = 1
+ '#End
+
+ '#SpecialDefinitions
+ Me.MakesContact = True
+ Me.ProtectAffected = True
+ Me.MagicCoatAffected = False
+ Me.SnatchAffected = False
+ Me.MirrorMoveAffected = True
+ Me.KingsrockAffected = True
+ Me.CounterAffected = True
+
+ Me.DisabledWhileGravity = False
+ Me.UseEffectiveness = True
+ Me.ImmunityAffected = True
+ Me.RemovesFrozen = False
+ Me.HasSecondaryEffect = False
+
+ Me.IsHealingMove = False
+ Me.IsRecoilMove = False
+ Me.IsPunchingMove = False
+ Me.IsDamagingMove = True
+ Me.IsProtectMove = False
+ Me.IsSoundMove = False
+
+ Me.IsAffectedBySubstitute = True
+ Me.IsOneHitKOMove = False
+ Me.IsWonderGuardAffected = True
+ '#End
+ End Sub
+ End Class
+
+End Namespace
diff --git a/P3D/Pokemon/Attacks/Ghost/ShadowForce.vb b/P3D/Pokemon/Attacks/Ghost/ShadowForce.vb
new file mode 100644
index 000000000..20d9bb25a
--- /dev/null
+++ b/P3D/Pokemon/Attacks/Ghost/ShadowForce.vb
@@ -0,0 +1,200 @@
+Namespace BattleSystem.Moves.Ghost
+
+ Public Class ShadowForce
+
+ Inherits Attack
+
+ Public Sub New()
+ '#Definitions
+ Me.Type = New Element(Element.Types.Ghost)
+ Me.ID = 467
+ Me.OriginalPP = 5
+ Me.CurrentPP = 5
+ Me.MaxPP = 5
+ Me.Power = 120
+ Me.Accuracy = 100
+ Me.Category = Categories.Physical
+ Me.ContestCategory = ContestCategories.Smart
+ 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
+ Me.IsHMMove = False
+ Me.Target = Targets.OneAdjacentTarget
+ Me.Priority = 0
+ Me.TimesToAttack = 1
+ '#End
+
+ '#SpecialDefinitions
+ Me.MakesContact = True
+ Me.ProtectAffected = False
+ Me.MagicCoatAffected = False
+ Me.SnatchAffected = False
+ Me.MirrorMoveAffected = True
+ Me.KingsrockAffected = True
+ Me.CounterAffected = True
+
+ Me.DisabledWhileGravity = False
+ Me.UseEffectiveness = True
+ Me.ImmunityAffected = True
+ Me.RemovesFrozen = False
+ Me.HasSecondaryEffect = False
+
+ Me.IsHealingMove = False
+ Me.IsRecoilMove = False
+ Me.IsPunchingMove = False
+ Me.IsDamagingMove = True
+ Me.IsProtectMove = False
+ Me.IsSoundMove = False
+
+ Me.IsAffectedBySubstitute = True
+ Me.IsOneHitKOMove = False
+ Me.IsWonderGuardAffected = True
+ Me.UseAccEvasion = True
+ Me.CanHitUnderwater = False
+ Me.CanHitUnderground = False
+ Me.CanHitInMidAir = False
+ '#End
+
+ Me.AIField1 = AIField.Damage
+ Me.AIField2 = AIField.MultiTurn
+ End Sub
+
+ Public Overrides Function GetUseAccEvasion(own As Boolean, BattleScreen As BattleScreen) As Boolean
+ Dim shadowforce As Integer = BattleScreen.FieldEffects.OwnShadowForceCounter
+ If own = False Then
+ shadowforce = BattleScreen.FieldEffects.OppShadowForceCounter
+ End If
+
+ If shadowforce = 0 Then
+ Return False
+ Else
+ Return True
+ End If
+ End Function
+
+ Public Overrides Sub PreAttack(Own As Boolean, BattleScreen As BattleScreen)
+ Dim shadowforce As Integer = BattleScreen.FieldEffects.OwnShadowForceCounter
+ If Own = False Then
+ shadowforce = BattleScreen.FieldEffects.OppShadowForceCounter
+ End If
+
+ If shadowforce = 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 shadowforceCounter As Integer = BattleScreen.FieldEffects.OwnShadowForceCounter
+
+ If Own = False Then
+ shadowforceCounter = BattleScreen.FieldEffects.OppShadowForceCounter
+ End If
+
+ Dim p As Pokemon = BattleScreen.OwnPokemon
+ If Own = False Then
+ p = BattleScreen.OppPokemon
+ End If
+
+ Dim hasToCharge As Boolean = True
+ 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 Shadow Force!", "move:shadowforce") = True Then
+ hasToCharge = False
+ End If
+ End If
+ End If
+
+ If shadowforceCounter = 0 And hasToCharge = True Then
+ If Own = True Then
+ BattleScreen.FieldEffects.OwnShadowForceCounter = 1
+ Else
+ BattleScreen.FieldEffects.OppShadowForceCounter = 1
+ End If
+
+ BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " vanished instantly!"))
+
+ Return True
+ Else
+ If Own = True Then
+ BattleScreen.FieldEffects.OwnShadowForceCounter = 0
+ Else
+ BattleScreen.FieldEffects.OppShadowForceCounter = 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.OwnShadowForceCounter = 0
+ Else
+ BattleScreen.FieldEffects.OppShadowForceCounter = 0
+ End If
+ End Sub
+ Public Overrides Function DeductPP(own As Boolean, BattleScreen As BattleScreen) As Boolean
+ Dim ShadowForce As Integer = BattleScreen.FieldEffects.OwnShadowForceCounter
+ If own = False Then
+ ShadowForce = BattleScreen.FieldEffects.OppShadowForceCounter
+ End If
+
+ If ShadowForce = 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.OwnShadowForceCounter = 0
+ Else
+ BattleScreen.FieldEffects.OppShadowForceCounter = 0
+ 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 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
+
+ Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen)
+ Dim op As Pokemon = BattleScreen.OppPokemon
+
+ If own = True Then
+ BattleScreen.FieldEffects.OppDetectCounter = 0
+ BattleScreen.FieldEffects.OppProtectCounter = 0
+ Else
+ op = BattleScreen.OwnPokemon
+
+ BattleScreen.FieldEffects.OwnDetectCounter = 0
+ BattleScreen.FieldEffects.OwnProtectCounter = 0
+ End If
+
+ BattleScreen.BattleQuery.Add(New TextQueryObject("Shadow Force lifted " & op.GetDisplayName() & "'s protection!"))
+ End Sub
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/P3D/Pokemon/Attacks/Ground/ThousandWaves.vb b/P3D/Pokemon/Attacks/Ground/ThousandWaves.vb
new file mode 100644
index 000000000..34d94a8a8
--- /dev/null
+++ b/P3D/Pokemon/Attacks/Ground/ThousandWaves.vb
@@ -0,0 +1,78 @@
+Namespace BattleSystem.Moves.Ground
+
+ Public Class ThousandWaves
+
+ Inherits Attack
+
+ Public Sub New()
+ '#Definitions
+ Me.Type = New Element(Element.Types.Ground)
+ Me.ID = 615
+ Me.OriginalPP = 10
+ Me.CurrentPP = 10
+ Me.MaxPP = 10
+ Me.Power = 90
+ Me.Accuracy = 100
+ Me.Category = Categories.Physical
+ Me.ContestCategory = ContestCategories.Tough
+ Me.Name = "Thousand Waves"
+ Me.Description = "The user attacks with a wave that crawls along the ground. Those hit can't flee from battle."
+ Me.CriticalChance = 1
+ Me.IsHMMove = False
+ Me.Target = Targets.AllAdjacentFoes
+ Me.Priority = 0
+ Me.TimesToAttack = 1
+ '#End
+
+ '#SpecialDefinitions
+ Me.MakesContact = False
+ Me.ProtectAffected = True
+ Me.MagicCoatAffected = False
+ Me.SnatchAffected = False
+ Me.MirrorMoveAffected = True
+ Me.KingsrockAffected = True
+ Me.CounterAffected = True
+
+ Me.DisabledWhileGravity = False
+ Me.UseEffectiveness = True
+ Me.ImmunityAffected = True
+ Me.HasSecondaryEffect = False
+ Me.RemovesFrozen = False
+
+ Me.IsHealingMove = False
+ Me.IsRecoilMove = False
+ Me.IsPunchingMove = False
+ Me.IsDamagingMove = True
+ Me.IsProtectMove = False
+ Me.IsSoundMove = False
+
+ Me.IsAffectedBySubstitute = True
+ Me.IsOneHitKOMove = False
+ Me.IsWonderGuardAffected = True
+ '#End
+ End Sub
+
+ Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen)
+ Dim trapped As Integer = BattleScreen.FieldEffects.OppTrappedCounter
+ If own = False Then
+ trapped = BattleScreen.FieldEffects.OwnTrappedCounter
+ End If
+
+ Dim op As Pokemon = BattleScreen.OppPokemon
+ If own = False Then
+ op = BattleScreen.OwnPokemon
+ End If
+
+ If trapped = 0 Then
+ If own = True Then
+ BattleScreen.FieldEffects.OppTrappedCounter = 1
+ Else
+ BattleScreen.FieldEffects.OwnTrappedCounter = 1
+ End If
+ BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & " can no longer escape!"))
+ End If
+ End Sub
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/P3D/Pokemon/Attacks/Ice/Avalanche.vb b/P3D/Pokemon/Attacks/Ice/Avalanche.vb
new file mode 100644
index 000000000..2698c0473
--- /dev/null
+++ b/P3D/Pokemon/Attacks/Ice/Avalanche.vb
@@ -0,0 +1,92 @@
+Namespace BattleSystem.Moves.Ice
+
+ Public Class Avalanche
+
+ Inherits Attack
+
+ Public Sub New()
+ '#Definitions
+ Me.Type = New Element(Element.Types.Ice)
+ Me.ID = 419
+ Me.OriginalPP = 10
+ Me.CurrentPP = 10
+ Me.MaxPP = 10
+ Me.Power = 60
+ Me.Accuracy = 100
+ Me.Category = Categories.Physical
+ Me.ContestCategory = ContestCategories.Cool
+ Me.Name = "Avalanche"
+ Me.Description = "The power of this attack move is doubled if the user has been hurt by the target in the same turn."
+ Me.CriticalChance = 1
+ Me.IsHMMove = False
+ Me.Target = Targets.OneAdjacentTarget
+ Me.Priority = -4
+ Me.TimesToAttack = 1
+ '#End
+
+ '#SpecialDefinitions
+ Me.MakesContact = True
+ Me.ProtectAffected = True
+ Me.MagicCoatAffected = False
+ Me.SnatchAffected = False
+ Me.MirrorMoveAffected = True
+ Me.KingsrockAffected = True
+ Me.CounterAffected = True
+
+ Me.DisabledWhileGravity = False
+ Me.UseEffectiveness = True
+ Me.ImmunityAffected = True
+ Me.RemovesFrozen = False
+ Me.HasSecondaryEffect = False
+
+ Me.IsHealingMove = False
+ Me.IsRecoilMove = False
+ Me.IsPunchingMove = False
+ Me.IsDamagingMove = True
+ Me.IsProtectMove = False
+ Me.IsSoundMove = False
+
+ Me.IsAffectedBySubstitute = True
+ Me.IsOneHitKOMove = False
+ Me.IsWonderGuardAffected = True
+ '#End
+ End Sub
+
+ Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen)
+ Dim p As Pokemon = BattleScreen.OwnPokemon
+ Dim op As Pokemon = BattleScreen.OppPokemon
+ If own = False Then
+ p = BattleScreen.OppPokemon
+ op = BattleScreen.OwnPokemon
+ End If
+
+ Dim chance As Integer = GetEffectChance(0, own, BattleScreen)
+ If Core.Random.Next(0, 100) < chance Then
+ BattleScreen.Battle.LowerStat(Not own, own, BattleScreen, "Attack", 1, "", "move:aurorabeam")
+ End If
+ End Sub
+
+ Public Overrides Function GetBasePower(own As Boolean, BattleScreen As BattleScreen) As Integer
+ If own = True Then
+ If BattleScreen.FieldEffects.OppTurnCounts > BattleScreen.FieldEffects.OwnTurnCounts Then
+ If Not BattleScreen.FieldEffects.OppLastMove Is Nothing Then
+ If BattleScreen.FieldEffects.OppLastMove.IsDamagingMove = True Then
+ Return Me.Power * 2
+ End If
+ End If
+ End If
+ Else
+ If BattleScreen.FieldEffects.OwnTurnCounts > BattleScreen.FieldEffects.OppTurnCounts Then
+ If Not BattleScreen.FieldEffects.OwnLastMove Is Nothing Then
+ If BattleScreen.FieldEffects.OwnLastMove.IsDamagingMove = True Then
+ Return Me.Power * 2
+ End If
+ End If
+ End If
+ End If
+ Return Me.Power
+ End Function
+
+ End Class
+
+End Namespace
\ No newline at end of file