Implemented Disable move & fixed Cursed Body turns

When Cursed Body successfully executes, it now always disables moves for 4 turns too
This commit is contained in:
JappaWakka 2022-12-22 14:48:06 +01:00
parent b3422ba82a
commit f7c97ec7c9
5 changed files with 123 additions and 8 deletions
P3D
Battle/BattleSystemV2
P3D.vbproj
Pokemon/Attacks

@ -2364,7 +2364,7 @@
If Core.Random.Next(0, 100) < 30 Then
ChangeCameraAngle(2, own, BattleScreen)
BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & "'s Cursed Body disabled " & moveUsed.Name & "!"))
moveUsed.Disabled = Core.Random.Next(1, 6)
moveUsed.Disabled = 4
End If
End If
End If
@ -5445,7 +5445,12 @@
.BattleQuery.Add(New TextQueryObject(.OwnPokemon.GetDisplayName() & " got healed from the Torment" & Environment.NewLine & "due to Mental Herb!"))
usedMentalHerb = True
End If
'Remove disable
For Each a As BattleSystem.Attack In .OwnPokemon.Attacks
If a.Disabled > 0 Then
a.Disabled = 0
.BattleQuery.Add(New TextQueryObject(.OwnPokemon.GetDisplayName() & "'s" & " " & a.Name & " " & "is no longer disabled" & Environment.NewLine & "due to Mental Herb!"))
End If
Next
If usedMentalHerb = True Then
.OwnPokemon.Item = Nothing
End If
@ -6092,6 +6097,14 @@
'Disable
'For each move in moveset, reduce Disable count. If disable count = 0, print message.
For Each a As BattleSystem.Attack In .OwnPokemon.Attacks
If a.Disabled > 0 Then
a.Disabled -= 1
If a.Disabled = 0 Then
.BattleQuery.Add(New TextQueryObject(.OwnPokemon.GetDisplayName() & "'s" & " " & a.Name & " " & "is no longer disabled."))
End If
End If
Next
If .FieldEffects.OwnEncore > 0 And .OwnPokemon.HP > 0 Then 'Encore
.FieldEffects.OwnEncore -= 1
@ -6328,7 +6341,12 @@
.BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & " got healed from the Torment" & Environment.NewLine & "due to Mental Herb!"))
usedMentalHerb = True
End If
'Remove disable
For Each a As BattleSystem.Attack In .OppPokemon.Attacks
If a.Disabled > 0 Then
a.Disabled = 0
.BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & "'s" & " " & a.Name & " " & "is no longer disabled" & Environment.NewLine & "due to Mental Herb!"))
End If
Next
If usedMentalHerb = True Then
.OppPokemon.Item = Nothing
End If
@ -6969,6 +6987,14 @@
'Disable
'For each move in moveset, reduce Disable count. If disable count = 0, print message.
For Each a As BattleSystem.Attack In .OppPokemon.Attacks
If a.Disabled > 0 Then
a.Disabled -= 1
If a.Disabled = 0 Then
.BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & "'s" & " " & a.Name & " " & "is no longer disabled."))
End If
End If
Next
If .FieldEffects.OppEncore > 0 And .OppPokemon.HP > 0 Then 'Encore
.FieldEffects.OppEncore -= 1

@ -468,10 +468,14 @@
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Menus\Types", Me.Move.Type.GetElementImage(), ""), New Rectangle(Core.ScreenSize.Width - (AllExtended + extraExtended) + 28, 132 + Index * 96, 48, 16), New Color(255, 255, 255, 255 - deductAlpha))
If isSelected = True Then
Dim ppColor As Color = GetPPColor()
ppColor.A = CByte((extraExtended + AllExtended - deductAlpha).Clamp(0, 255))
If Move.Disabled > 0 Then
Core.SpriteBatch.DrawString(FontManager.MainFont, "Disabled!", New Vector2(CInt(Core.ScreenSize.Width - (AllExtended + extraExtended) + 28), CInt(152 + Index * 96)), Color.Black)
Else
Dim ppColor As Color = GetPPColor()
ppColor.A = CByte((extraExtended + AllExtended - deductAlpha).Clamp(0, 255))
Core.SpriteBatch.DrawString(FontManager.MainFont, Me.Move.CurrentPP & "/" & Me.Move.MaxPP, New Vector2(CInt(Core.ScreenSize.Width - (AllExtended + extraExtended) + 28), CInt(152 + Index * 96)), ppColor)
Core.SpriteBatch.DrawString(FontManager.MainFont, Me.Move.CurrentPP & "/" & Me.Move.MaxPP, New Vector2(CInt(Core.ScreenSize.Width - (AllExtended + extraExtended) + 28), CInt(152 + Index * 96)), ppColor)
End If
Core.SpriteBatch.DrawString(FontManager.MainFont, Me.Move.Name, New Vector2(CInt(Core.ScreenSize.Width - (AllExtended + extraExtended) + 86), CInt(132 + Index * 96)), New Color(0, 0, 0, (SelExtended + AllExtended) - deductAlpha))
Else
Core.SpriteBatch.DrawString(FontManager.MainFont, Me.Move.Name, New Vector2(Core.ScreenSize.Width - (AllExtended + extraExtended) + 28, 152 + Index * 96), New Color(0, 0, 0, 255 - (extraExtended + AllExtended) - deductAlpha))

@ -28282,6 +28282,7 @@
<Compile Include="Pokemon\Attacks\Ice\IceHammer.vb" />
<Compile Include="Pokemon\Attacks\Normal\Bestow.vb" />
<Compile Include="Pokemon\Attacks\Normal\Celebrate.vb" />
<Compile Include="Pokemon\Attacks\Normal\Disable.vb" />
<Compile Include="Pokemon\Attacks\Normal\TearfulLook.vb" />
<Compile Include="Pokemon\Attacks\Normal\RevelationDance.vb" />
<Compile Include="Pokemon\Attacks\Normal\HoldBack.vb" />

@ -353,8 +353,8 @@
returnMove = New Moves.Normal.Supersonic()
Case 49
returnMove = New Moves.Normal.SonicBoom()
'Case 50
'Disable
Case 50
returnMove = New Moves.Normal.Disable()
Case 51
returnMove = New Moves.Poison.Acid()
Case 52

@ -0,0 +1,84 @@
Namespace BattleSystem.Moves.Normal
Public Class Disable
Inherits Attack
Public Sub New()
'#Definitions
Me.Type = New Element(Element.Types.Normal)
Me.ID = 50
Me.OriginalPP = 20
Me.CurrentPP = 20
Me.MaxPP = 32
Me.Power = 0
Me.Accuracy = 100
Me.Category = Categories.Status
Me.ContestCategory = ContestCategories.Smart
Me.Name = Localization.GetString("move_name_" & Me.ID, "Disable")
Me.Description = "For four turns, the target will be unable to use whichever move it last used."
Me.CriticalChance = 0
Me.IsHMMove = False
Me.Target = Targets.AllAdjacentTargets
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.HasSecondaryEffect = False
Me.RemovesFrozen = False
Me.IsHealingMove = False
Me.IsRecoilMove = False
Me.IsDamagingMove = False
Me.IsProtectMove = False
Me.IsSoundMove = False
Me.IsAffectedBySubstitute = True
Me.IsOneHitKOMove = False
Me.IsWonderGuardAffected = False
'#End
Me.AIField1 = AIField.LowerAttack
Me.AIField2 = AIField.Nothing
End Sub
Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen)
Dim Target As Pokemon = BattleScreen.OppPokemon
Dim LastMove As Attack = BattleScreen.FieldEffects.OppLastMove
If own = False Then
Target = BattleScreen.OwnPokemon
LastMove = BattleScreen.FieldEffects.OwnLastMove
End If
If LastMove IsNot Nothing Then
If LastMove.Name.ToLower <> "struggle" AndAlso LastMove.Disabled = 0 Then
For Each a As BattleSystem.Attack In Target.Attacks
If a.ID = LastMove.ID Then
a.Disabled = 4
BattleScreen.BattleQuery.Add(New TextQueryObject(Target.GetDisplayName() & "'s " & a.Name & " was Disabled!"))
End If
Next
Else
BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!"))
End If
Else
BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!"))
End If
End Sub
End Class
End Namespace