Implemented Infestation and some misc fixes

This commit is contained in:
Capt. Segis 2016-09-20 19:39:55 -05:00
parent f11b2ee653
commit 6b4a94aea4
7 changed files with 161 additions and 33 deletions

View File

@ -4216,10 +4216,10 @@ endthisround:
If .FieldEffects.OwnWrap = 0 Then
.BattleQuery.Add(New TextQueryObject( .OwnPokemon.GetDisplayName() & " was freed from Wrap!"))
Else
Dim multiHP As Integer = CInt( .OwnPokemon.MaxHP / 16)
Dim multiHP As Integer = CInt( .OwnPokemon.MaxHP / 8)
If Not .OppPokemon.Item Is Nothing And .FieldEffects.CanUseItem(False) = True And BattleScreen.FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
If .OppPokemon.Item.Name.ToLower() = "binding band" Then
multiHP = CInt( .OwnPokemon.MaxHP / 8)
multiHP = CInt( .OwnPokemon.MaxHP / 6)
End If
End If
ReduceHP(multiHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by Wrap!", "wrap")
@ -4230,10 +4230,10 @@ endthisround:
If .FieldEffects.OwnWhirlpool = 0 Then
.BattleQuery.Add(New TextQueryObject( .OwnPokemon.GetDisplayName() & " was freed from Whirlpool!"))
Else
Dim multiHP As Integer = CInt( .OwnPokemon.MaxHP / 16)
Dim multiHP As Integer = CInt( .OwnPokemon.MaxHP / 8)
If Not .OppPokemon.Item Is Nothing And .FieldEffects.CanUseItem(False) = True And BattleScreen.FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
If .OppPokemon.Item.Name.ToLower() = "binding band" Then
multiHP = CInt( .OwnPokemon.MaxHP / 8)
multiHP = CInt( .OwnPokemon.MaxHP / 6)
End If
End If
ReduceHP(multiHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by Whirlpool!", "whirlpool")
@ -4244,10 +4244,10 @@ endthisround:
If .FieldEffects.OwnSandTomb = 0 Then
.BattleQuery.Add(New TextQueryObject( .OwnPokemon.GetDisplayName() & " was freed from Sand Tomb!"))
Else
Dim multiHP As Integer = CInt( .OwnPokemon.MaxHP / 16)
Dim multiHP As Integer = CInt( .OwnPokemon.MaxHP / 8)
If Not .OppPokemon.Item Is Nothing And .FieldEffects.CanUseItem(False) = True And BattleScreen.FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
If .OppPokemon.Item.Name.ToLower() = "binding band" Then
multiHP = CInt( .OwnPokemon.MaxHP / 8)
multiHP = CInt( .OwnPokemon.MaxHP / 6)
End If
End If
ReduceHP(multiHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by Sand Tomb!", "sandtomb")
@ -4258,10 +4258,10 @@ endthisround:
If .FieldEffects.OwnBind = 0 Then
.BattleQuery.Add(New TextQueryObject( .OwnPokemon.GetDisplayName() & " was freed from Bind!"))
Else
Dim multiHP As Integer = CInt( .OwnPokemon.MaxHP / 16)
Dim multiHP As Integer = CInt( .OwnPokemon.MaxHP / 8)
If Not .OppPokemon.Item Is Nothing And .FieldEffects.CanUseItem(False) = True And BattleScreen.FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
If .OppPokemon.Item.Name.ToLower() = "binding band" Then
multiHP = CInt( .OwnPokemon.MaxHP / 8)
multiHP = CInt( .OwnPokemon.MaxHP / 6)
End If
End If
ReduceHP(multiHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by Bind!", "bind")
@ -4272,10 +4272,10 @@ endthisround:
If .FieldEffects.OwnClamp = 0 Then
.BattleQuery.Add(New TextQueryObject( .OwnPokemon.GetDisplayName() & " was freed from Clamp!"))
Else
Dim multiHP As Integer = CInt( .OwnPokemon.MaxHP / 16)
Dim multiHP As Integer = CInt( .OwnPokemon.MaxHP / 8)
If Not .OppPokemon.Item Is Nothing And .FieldEffects.CanUseItem(False) = True And BattleScreen.FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
If .OppPokemon.Item.Name.ToLower() = "binding band" Then
multiHP = CInt( .OwnPokemon.MaxHP / 8)
multiHP = CInt( .OwnPokemon.MaxHP / 6)
End If
End If
ReduceHP(multiHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by Clamp!", "clamp")
@ -4286,10 +4286,10 @@ endthisround:
If .FieldEffects.OwnFireSpin = 0 Then
.BattleQuery.Add(New TextQueryObject( .OwnPokemon.GetDisplayName() & " was freed from Fire Spin!"))
Else
Dim multiHP As Integer = CInt( .OwnPokemon.MaxHP / 16)
Dim multiHP As Integer = CInt( .OwnPokemon.MaxHP / 8)
If Not .OppPokemon.Item Is Nothing And .FieldEffects.CanUseItem(False) = True And BattleScreen.FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
If .OppPokemon.Item.Name.ToLower() = "binding band" Then
multiHP = CInt( .OwnPokemon.MaxHP / 8)
multiHP = CInt( .OwnPokemon.MaxHP / 6)
End If
End If
ReduceHP(multiHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by Fire Spin!", "firespin")
@ -4300,15 +4300,29 @@ endthisround:
If .FieldEffects.OwnMagmaStorm = 0 Then
.BattleQuery.Add(New TextQueryObject( .OwnPokemon.GetDisplayName() & " was freed from Magma Storm!"))
Else
Dim multiHP As Integer = CInt( .OwnPokemon.MaxHP / 16)
Dim multiHP As Integer = CInt( .OwnPokemon.MaxHP / 8)
If Not .OppPokemon.Item Is Nothing And .FieldEffects.CanUseItem(False) = True And BattleScreen.FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
If .OppPokemon.Item.Name.ToLower() = "binding band" Then
multiHP = CInt( .OwnPokemon.MaxHP / 8)
multiHP = CInt( .OwnPokemon.MaxHP / 6)
End If
End If
ReduceHP(multiHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by Magma Storm!", "magmastorm")
End If
End If
If .FieldEffects.OwnInfestation > 0 Then 'Infestation
.FieldEffects.OwnInfestation -= 1
If .FieldEffects.OwnInfestation = 0 Then
.BattleQuery.Add(New TextQueryObject( .OwnPokemon.GetDisplayName() & " was freed from Infestation!"))
Else
Dim multiHP As Integer = CInt( .OwnPokemon.MaxHP / 8)
If Not .OppPokemon.Item Is Nothing And .FieldEffects.CanUseItem(False) = True And BattleScreen.FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
If .OppPokemon.Item.Name.ToLower() = "binding band" Then
multiHP = CInt( .OwnPokemon.MaxHP / 6)
End If
End If
ReduceHP(multiHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by Infestation!", "infestation")
End If
End If
End If
'Own bad dreams
@ -4928,10 +4942,10 @@ endthisround:
If .FieldEffects.OppWrap = 0 Then
.BattleQuery.Add(New TextQueryObject( .OppPokemon.GetDisplayName() & " was freed from Wrap!"))
Else
Dim multiHP As Integer = CInt( .OppPokemon.MaxHP / 16)
Dim multiHP As Integer = CInt( .OppPokemon.MaxHP / 8)
If Not .OwnPokemon.Item Is Nothing And .FieldEffects.CanUseItem(True) = True And BattleScreen.FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
If .OwnPokemon.Item.Name.ToLower() = "binding band" Then
multiHP = CInt( .OppPokemon.MaxHP / 8)
multiHP = CInt( .OppPokemon.MaxHP / 6)
End If
End If
ReduceHP(multiHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by Wrap!", "wrap")
@ -4942,10 +4956,10 @@ endthisround:
If .FieldEffects.OppWhirlpool = 0 Then
.BattleQuery.Add(New TextQueryObject( .OwnPokemon.GetDisplayName() & " was freed from Whirlpool!"))
Else
Dim multiHP As Integer = CInt( .OppPokemon.MaxHP / 16)
Dim multiHP As Integer = CInt( .OppPokemon.MaxHP / 8)
If Not .OwnPokemon.Item Is Nothing And .FieldEffects.CanUseItem(True) = True And BattleScreen.FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
If .OwnPokemon.Item.Name.ToLower() = "binding band" Then
multiHP = CInt( .OppPokemon.MaxHP / 8)
multiHP = CInt( .OppPokemon.MaxHP / 6)
End If
End If
ReduceHP(multiHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by Whirlpool!", "whirlpool")
@ -4956,10 +4970,10 @@ endthisround:
If .FieldEffects.OppSandTomb = 0 Then
.BattleQuery.Add(New TextQueryObject( .OppPokemon.GetDisplayName() & " was freed from Sand Tomb!"))
Else
Dim multiHP As Integer = CInt( .OppPokemon.MaxHP / 16)
Dim multiHP As Integer = CInt( .OppPokemon.MaxHP / 8)
If Not .OwnPokemon.Item Is Nothing And .FieldEffects.CanUseItem(True) = True And BattleScreen.FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
If .OwnPokemon.Item.Name.ToLower() = "binding band" Then
multiHP = CInt( .OppPokemon.MaxHP / 8)
multiHP = CInt( .OppPokemon.MaxHP / 6)
End If
End If
ReduceHP(multiHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by Sand Tomb!", "sandtomb")
@ -4970,10 +4984,10 @@ endthisround:
If .FieldEffects.OppBind = 0 Then
.BattleQuery.Add(New TextQueryObject( .OppPokemon.GetDisplayName() & " was freed from Bind!"))
Else
Dim multiHP As Integer = CInt( .OppPokemon.MaxHP / 16)
Dim multiHP As Integer = CInt( .OppPokemon.MaxHP / 8)
If Not .OwnPokemon.Item Is Nothing And .FieldEffects.CanUseItem(True) = True And BattleScreen.FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
If .OwnPokemon.Item.Name.ToLower() = "binding band" Then
multiHP = CInt( .OppPokemon.MaxHP / 8)
multiHP = CInt( .OppPokemon.MaxHP / 6)
End If
End If
ReduceHP(multiHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by Bind!", "bind")
@ -4984,10 +4998,10 @@ endthisround:
If .FieldEffects.OppClamp = 0 Then
.BattleQuery.Add(New TextQueryObject( .OppPokemon.GetDisplayName() & " was freed from Clamp!"))
Else
Dim multiHP As Integer = CInt( .OppPokemon.MaxHP / 16)
Dim multiHP As Integer = CInt( .OppPokemon.MaxHP / 8)
If Not .OwnPokemon.Item Is Nothing And .FieldEffects.CanUseItem(True) = True And BattleScreen.FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
If .OwnPokemon.Item.Name.ToLower() = "binding band" Then
multiHP = CInt( .OppPokemon.MaxHP / 8)
multiHP = CInt( .OppPokemon.MaxHP / 6)
End If
End If
ReduceHP(multiHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by Clamp!", "clamp")
@ -4998,10 +5012,10 @@ endthisround:
If .FieldEffects.OppFireSpin = 0 Then
.BattleQuery.Add(New TextQueryObject( .OppPokemon.GetDisplayName() & " was freed from Fire Spin!"))
Else
Dim multiHP As Integer = CInt( .OppPokemon.MaxHP / 16)
Dim multiHP As Integer = CInt( .OppPokemon.MaxHP / 8)
If Not .OwnPokemon.Item Is Nothing And .FieldEffects.CanUseItem(True) = True And BattleScreen.FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
If .OwnPokemon.Item.Name.ToLower() = "binding band" Then
multiHP = CInt( .OppPokemon.MaxHP / 8)
multiHP = CInt( .OppPokemon.MaxHP / 6)
End If
End If
ReduceHP(multiHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by Fire Spin!", "firespin")
@ -5012,15 +5026,29 @@ endthisround:
If .FieldEffects.OppMagmaStorm = 0 Then
.BattleQuery.Add(New TextQueryObject( .OppPokemon.GetDisplayName() & " was freed from Magma Storm!"))
Else
Dim multiHP As Integer = CInt( .OppPokemon.MaxHP / 16)
Dim multiHP As Integer = CInt( .OppPokemon.MaxHP / 8)
If Not .OwnPokemon.Item Is Nothing And .FieldEffects.CanUseItem(True) = True And BattleScreen.FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
If .OwnPokemon.Item.Name.ToLower() = "binding band" Then
multiHP = CInt( .OppPokemon.MaxHP / 8)
multiHP = CInt( .OppPokemon.MaxHP / 6)
End If
End If
ReduceHP(multiHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by Magma Storm!", "magmastorm")
End If
End If
If .FieldEffects.OppInfestation > 0 Then 'Infestation
.FieldEffects.OppInfestation -= 1
If .FieldEffects.OppInfestation = 0 Then
.BattleQuery.Add(New TextQueryObject( .OppPokemon.GetDisplayName() & " was freed from Infestation!"))
Else
Dim multiHP As Integer = CInt( .OppPokemon.MaxHP / 8)
If Not .OwnPokemon.Item Is Nothing And .FieldEffects.CanUseItem(True) = True And BattleScreen.FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
If .OwnPokemon.Item.Name.ToLower() = "binding band" Then
multiHP = CInt( .OppPokemon.MaxHP / 6)
End If
End If
ReduceHP(multiHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by Infestation!", "infestation")
End If
End If
End If
'Opp bad dreams
@ -5415,6 +5443,7 @@ endthisround:
.OwnFireSpin = 0
.OwnMagmaStorm = 0
.OwnSandTomb = 0
.OwnInfestation = 0
.OwnBideCounter = 0
.OwnBideDamage = 0
@ -5851,6 +5880,7 @@ endthisround:
.OppFireSpin = 0
.OppMagmaStorm = 0
.OppSandTomb = 0
.OppInfestation = 0
.OppBideCounter = 0
.OppBideDamage = 0

View File

@ -832,7 +832,7 @@
End If
With BattleScreen.FieldEffects
If .OwnWrap > 0 Or .OwnBind > 0 Or .OwnClamp > 0 Or .OwnFireSpin > 0 Or .OwnMagmaStorm > 0 Or .OwnSandTomb > 0 Or .OwnWhirlpool > 0 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
End With
@ -861,7 +861,7 @@
End If
With BattleScreen.FieldEffects
If .OppWrap > 0 Or .OppBind > 0 Or .OppClamp > 0 Or .OppFireSpin > 0 Or .OppMagmaStorm > 0 Or .OppSandTomb > 0 Or .OppWhirlpool > 0 Then
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 With

View File

@ -81,6 +81,7 @@
Public OwnFireSpin As Integer = 0
Public OwnMagmaStorm As Integer = 0
Public OwnSandTomb As Integer = 0
Public OwnInfestation As Integer = 0
Public OwnUsedMoves As New List(Of Integer)
Public OwnMagicCoat As Integer = 0
Public OwnLostItem As Item = Nothing
@ -215,6 +216,7 @@
Public OppFireSpin As Integer = 0
Public OppMagmaStorm As Integer = 0
Public OppSandTomb As Integer = 0
Public OppInfestation As Integer = 0
Public OppUsedMoves As New List(Of Integer)

View File

@ -1464,8 +1464,8 @@
returnMove = New Moves.Electric.Nuzzle()
'Case 610
'Hold Back
'Case 611
'Infestation
Case 611
returnMove = New Moves.Bug.Infestation()
Case 612
returnMove = New Moves.Fighting.PowerUpPunch()
Case 613

View File

@ -0,0 +1,92 @@
Namespace BattleSystem.Moves.Bug
Public Class Infestation
Inherits Attack
Public Sub New()
'#Definitions
Me.Type = New Element(Element.Types.Bug)
Me.ID = 611
Me.OriginalPP = 20
Me.CurrentPP = 20
Me.MaxPP = 20
Me.Power = 20
Me.Accuracy = 100
Me.Category = Categories.Special
Me.ContestCategory = ContestCategories.Cute
Me.Name = "Infestation"
Me.Description = "The target is infested and attacked for four to five turns. The target can't flee during this time."
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 = False
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
Me.AIField1 = AIField.Damage
Me.AIField2 = AIField.Trap
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 turns As Integer = 4
If Core.Random.Next(0, 100) < 50 Then
turns = 5
End If
If Not p.Item Is Nothing Then
If p.Item.Name.ToLower() = "grip claw" And BattleScreen.FieldEffects.CanUseItem(own) = True And BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
turns = 5
End If
End If
If own = True Then
If BattleScreen.FieldEffects.OppInfestation = 0 Then
BattleScreen.FieldEffects.OppInfestation = turns
BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & " was trapped by " & p.GetDisplayName() & "!"))
End If
Else
If BattleScreen.FieldEffects.OwnInfestation = 0 Then
BattleScreen.FieldEffects.OwnInfestation = turns
BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & " was trapped by " & p.GetDisplayName() & "!"))
End If
End If
End Sub
End Class
End Namespace

View File

@ -66,6 +66,8 @@ Namespace BattleSystem.Moves.Normal
.OppToxicSpikes = 0
.OwnWhirlpool = 0
.OwnWrap = 0
.OwnInfestation = 0
.OppStickyWeb = 0
Else
.OppBind = 0
.OppClamp = 0
@ -78,6 +80,8 @@ Namespace BattleSystem.Moves.Normal
.OwnToxicSpikes = 0
.OppWhirlpool = 0
.OppWrap = 0
.OppInfestation = 0
.OwnStickyWeb = 0
End If
End With
End Sub

View File

@ -36,7 +36,7 @@
Me.DisabledWhileGravity = False
Me.UseEffectiveness = True
Me.ImmunityAffected = True
Me.HasSecondaryEffect = True
Me.HasSecondaryEffect = False
Me.RemovesFrozen = False
Me.IsHealingMove = False