Fix Metronome and Mirror Move Issues

This commit is contained in:
JappaWakka 2025-01-31 16:13:26 +01:00
parent 98ee3d48eb
commit 8e0372da30
2 changed files with 117 additions and 43 deletions

View File

@ -30,7 +30,45 @@
''' <summary> ''' <summary>
''' Returns the move of a Pokémon with a specified ID. ''' Returns the move of a Pokémon with a specified ID.
''' </summary> ''' </summary>
Private Function GetPokemonMoveFromID(ByVal Pokemon As Pokemon, ByVal MoveID As Integer) As Attack Private Function GetPokemonMoveFromID(ByVal Pokemon As Pokemon, ByVal MoveID As Integer, BattleScreen As BattleScreen, own As Boolean) As Attack
If own = True Then
If BattleScreen.FieldEffects.OwnUsedRandomMove = True Then
For Each a As Attack In Pokemon.Attacks
If a.Name.ToLower = "metronome" OrElse a.IsGameModeMove AndAlso a.gmUseRandomMove = True Then
a.CurrentPP -= 1
End If
Next
End If
If BattleScreen.FieldEffects.OwnUsedMirrorMove = True Then
For Each a As Attack In Pokemon.Attacks
If a.Name.ToLower = "mirror move" Then
a.CurrentPP -= 1
End If
Next
End If
If BattleScreen.FieldEffects.OwnUsedRandomMove = True Or BattleScreen.FieldEffects.OwnUsedMirrorMove = True Then
Return Attack.GetAttackByID(MoveID)
End If
Else
If BattleScreen.FieldEffects.OppUsedRandomMove = True Then
For Each a As Attack In Pokemon.Attacks
If a.Name.ToLower = "metronome" OrElse a.IsGameModeMove AndAlso a.gmUseRandomMove = True Then
a.CurrentPP -= 1
End If
Next
End If
If BattleScreen.FieldEffects.OppUsedMirrorMove = True Then
For Each a As Attack In Pokemon.Attacks
If a.Name.ToLower = "mirror move" Then
a.CurrentPP -= 1
End If
Next
End If
If BattleScreen.FieldEffects.OppUsedRandomMove = True Or BattleScreen.FieldEffects.OppUsedMirrorMove = True Then
Return Attack.GetAttackByID(MoveID)
End If
End If
For Each a As Attack In Pokemon.Attacks For Each a As Attack In Pokemon.Attacks
If a.ID = MoveID Then If a.ID = MoveID Then
Return a Return a
@ -56,7 +94,7 @@
If BattleScreen.FieldEffects.OwnRolloutCounter > 0 Then If BattleScreen.FieldEffects.OwnRolloutCounter > 0 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 205)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 205, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -64,7 +102,7 @@
If BattleScreen.FieldEffects.OwnIceBallCounter > 0 Then If BattleScreen.FieldEffects.OwnIceBallCounter > 0 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 301)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 301, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -72,7 +110,7 @@
If BattleScreen.FieldEffects.OwnFlyCounter >= 1 Then If BattleScreen.FieldEffects.OwnFlyCounter >= 1 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 19)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 19, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -80,7 +118,7 @@
If BattleScreen.FieldEffects.OwnDigCounter >= 1 Then If BattleScreen.FieldEffects.OwnDigCounter >= 1 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 91)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 91, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -88,7 +126,7 @@
If BattleScreen.FieldEffects.OwnOutrage >= 1 Then If BattleScreen.FieldEffects.OwnOutrage >= 1 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 200)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 200, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -96,7 +134,7 @@
If BattleScreen.FieldEffects.OwnThrash >= 1 Then If BattleScreen.FieldEffects.OwnThrash >= 1 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 37)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 37, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -104,7 +142,7 @@
If BattleScreen.FieldEffects.OwnPetalDance >= 1 Then If BattleScreen.FieldEffects.OwnPetalDance >= 1 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 80)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 80, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -112,7 +150,7 @@
If BattleScreen.FieldEffects.OwnBounceCounter >= 1 Then If BattleScreen.FieldEffects.OwnBounceCounter >= 1 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 340)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 340, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -120,7 +158,7 @@
If BattleScreen.FieldEffects.OwnDiveCounter >= 1 Then If BattleScreen.FieldEffects.OwnDiveCounter >= 1 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 291)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 291, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -128,7 +166,7 @@
If BattleScreen.FieldEffects.OwnShadowForceCounter = 1 Then If BattleScreen.FieldEffects.OwnShadowForceCounter = 1 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 467)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 467, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -136,13 +174,13 @@
If BattleScreen.FieldEffects.OwnPhantomForceCounter = 1 Then If BattleScreen.FieldEffects.OwnPhantomForceCounter = 1 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 566)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 566, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
'If Sky Drop gets programmed, put this in. 'If Sky Drop gets programmed, put this in.
'If BattleScreen.FieldEffects.OwnSkyDropCounter = 1 Then 'If BattleScreen.FieldEffects.OwnSkyDropCounter = 1 Then
' InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, xxx)}) ' InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, xxx, BattleScreen, True)})
' Exit Sub ' Exit Sub
'End If 'End If
@ -150,7 +188,7 @@
If BattleScreen.FieldEffects.OwnGeomancyCounter = 1 Then If BattleScreen.FieldEffects.OwnGeomancyCounter = 1 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 601)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 601, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -158,7 +196,7 @@
If BattleScreen.FieldEffects.OwnSolarBeam >= 1 Then If BattleScreen.FieldEffects.OwnSolarBeam >= 1 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 76)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 76, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -166,7 +204,7 @@
If BattleScreen.FieldEffects.OwnSolarBlade >= 1 Then If BattleScreen.FieldEffects.OwnSolarBlade >= 1 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 669)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 669, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -174,7 +212,7 @@
If BattleScreen.FieldEffects.OwnSkyAttackCounter >= 1 Then If BattleScreen.FieldEffects.OwnSkyAttackCounter >= 1 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 143)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 143, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -182,7 +220,7 @@
If BattleScreen.FieldEffects.OwnSkullBashCounter >= 1 Then If BattleScreen.FieldEffects.OwnSkullBashCounter >= 1 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 130)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 130, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -190,7 +228,7 @@
If BattleScreen.FieldEffects.OwnRazorWindCounter >= 1 Then If BattleScreen.FieldEffects.OwnRazorWindCounter >= 1 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 13)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 13, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -198,7 +236,7 @@
If BattleScreen.FieldEffects.OwnUproar >= 1 Then If BattleScreen.FieldEffects.OwnUproar >= 1 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 253)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 253, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -206,7 +244,7 @@
If BattleScreen.FieldEffects.OwnBideCounter > 0 Then If BattleScreen.FieldEffects.OwnBideCounter > 0 Then
SelectedMoveOwn = False SelectedMoveOwn = False
DeleteHostQuery(BattleScreen) DeleteHostQuery(BattleScreen)
InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 117)}) InitializeRound(BattleScreen, New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OwnPokemon, 117, BattleScreen, True)})
Exit Sub Exit Sub
End If End If
@ -279,120 +317,120 @@
'Rollout 'Rollout
If BattleScreen.FieldEffects.OppRolloutCounter > 0 Then If BattleScreen.FieldEffects.OppRolloutCounter > 0 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 205)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 205, BattleScreen, False)}
End If End If
'IceBall 'IceBall
If BattleScreen.FieldEffects.OppIceBallCounter > 0 Then If BattleScreen.FieldEffects.OppIceBallCounter > 0 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 301)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 301, BattleScreen, False)}
End If End If
'Fly: 'Fly:
If BattleScreen.FieldEffects.OppFlyCounter >= 1 Then If BattleScreen.FieldEffects.OppFlyCounter >= 1 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 19)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 19, BattleScreen, False)}
End If End If
'Dig: 'Dig:
If BattleScreen.FieldEffects.OppDigCounter >= 1 Then If BattleScreen.FieldEffects.OppDigCounter >= 1 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 91)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 91, BattleScreen, False)}
End If End If
'Outrage: 'Outrage:
If BattleScreen.FieldEffects.OppOutrage >= 1 Then If BattleScreen.FieldEffects.OppOutrage >= 1 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 200)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 200, BattleScreen, False)}
End If End If
'Thrash: 'Thrash:
If BattleScreen.FieldEffects.OppThrash >= 1 Then If BattleScreen.FieldEffects.OppThrash >= 1 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 37)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 37, BattleScreen, False)}
End If End If
'Petal Dance: 'Petal Dance:
If BattleScreen.FieldEffects.OppPetalDance >= 1 Then If BattleScreen.FieldEffects.OppPetalDance >= 1 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 80)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 80, BattleScreen, False)}
End If End If
'Bounce: 'Bounce:
If BattleScreen.FieldEffects.OppBounceCounter >= 1 Then If BattleScreen.FieldEffects.OppBounceCounter >= 1 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 340)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 340, BattleScreen, False)}
End If End If
'Dive: 'Dive:
If BattleScreen.FieldEffects.OppDiveCounter = 1 Then If BattleScreen.FieldEffects.OppDiveCounter = 1 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 291)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 291, BattleScreen, False)}
End If End If
'Shadow Force: 'Shadow Force:
If BattleScreen.FieldEffects.OppShadowForceCounter = 1 Then If BattleScreen.FieldEffects.OppShadowForceCounter = 1 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 467)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 467, BattleScreen, False)}
End If End If
'Phantom Force: 'Phantom Force:
If BattleScreen.FieldEffects.OppPhantomForceCounter = 1 Then If BattleScreen.FieldEffects.OppPhantomForceCounter = 1 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 566)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 566, BattleScreen, False)}
End If End If
''Sky Drop: ''Sky Drop:
'If BattleScreen.FieldEffects.OppSkyDropCounter = 1 Then 'If BattleScreen.FieldEffects.OppSkyDropCounter = 1 Then
' Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = (19).ToString()} ' Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = (19).ToString(), BattleScreen, False}
'End If 'End If
'Geomancy: 'Geomancy:
If BattleScreen.FieldEffects.OppGeomancyCounter = 1 Then If BattleScreen.FieldEffects.OppGeomancyCounter = 1 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 601)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 601, BattleScreen, False)}
End If End If
'Solar Beam: 'Solar Beam:
If BattleScreen.FieldEffects.OppSolarBeam >= 1 Then If BattleScreen.FieldEffects.OppSolarBeam >= 1 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 76)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 76, BattleScreen, False)}
End If End If
'Solar Blade: 'Solar Blade:
If BattleScreen.FieldEffects.OppSolarBlade >= 1 Then If BattleScreen.FieldEffects.OppSolarBlade >= 1 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 669)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 669, BattleScreen, False)}
End If End If
'Sky Attack: 'Sky Attack:
If BattleScreen.FieldEffects.OppSkyAttackCounter >= 1 Then If BattleScreen.FieldEffects.OppSkyAttackCounter >= 1 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 143)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 143, BattleScreen, False)}
End If End If
'Skull Bash: 'Skull Bash:
If BattleScreen.FieldEffects.OppSkullBashCounter >= 1 Then If BattleScreen.FieldEffects.OppSkullBashCounter >= 1 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 130)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 130, BattleScreen, False)}
End If End If
'RazorWind: 'RazorWind:
If BattleScreen.FieldEffects.OppRazorWindCounter >= 1 Then If BattleScreen.FieldEffects.OppRazorWindCounter >= 1 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 13)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 13, BattleScreen, False)}
End If End If
'Uproar: 'Uproar:
If BattleScreen.FieldEffects.OppUproar >= 1 Then If BattleScreen.FieldEffects.OppUproar >= 1 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 253)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 253, BattleScreen, False)}
End If End If
'Bide: 'Bide:
If BattleScreen.FieldEffects.OppBideCounter > 0 Then If BattleScreen.FieldEffects.OppBideCounter > 0 Then
SelectedMoveOpp = False SelectedMoveOpp = False
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 117)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, 117, BattleScreen, False)}
End If End If
End If End If
@ -417,7 +455,7 @@
moveID = CInt(inputString) moveID = CInt(inputString)
End If End If
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, moveID)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = GetPokemonMoveFromID(BattleScreen.OppPokemon, moveID, BattleScreen, False)}
ElseIf BattleScreen.ReceivedInput.StartsWith("SWITCH|") Then ElseIf BattleScreen.ReceivedInput.StartsWith("SWITCH|") Then
BattleScreen.OppStatistics.Switches += 1 BattleScreen.OppStatistics.Switches += 1
Dim switchID As Integer = CInt(BattleScreen.ReceivedInput.Remove(0, 7)) Dim switchID As Integer = CInt(BattleScreen.ReceivedInput.Remove(0, 7))
@ -473,10 +511,31 @@
Private Function GetAttack(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal move As Attack) As RoundConst Private Function GetAttack(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal move As Attack) As RoundConst
'TODO: Reset rage counters 'TODO: Reset rage counters
If own = True Then
If BattleScreen.FieldEffects.OwnUsedRandomMove = True AndAlso (move.Name.ToLower() <> "metronome" OrElse move.IsGameModeMove = True AndAlso move.gmUseRandomMove = False) Then
BattleScreen.FieldEffects.OwnUsedRandomMove = False
End If
If BattleScreen.FieldEffects.OwnUsedMirrorMove = True AndAlso (move.Name.ToLower() <> "mirror move") Then
BattleScreen.FieldEffects.OwnUsedMirrorMove = False
End If
Else
If BattleScreen.FieldEffects.OppUsedRandomMove = True AndAlso (move.Name.ToLower() <> "metronome" OrElse move.IsGameModeMove = True AndAlso move.gmUseRandomMove = False) Then
BattleScreen.FieldEffects.OppUsedRandomMove = False
End If
If BattleScreen.FieldEffects.OppUsedMirrorMove = True AndAlso (move.Name.ToLower() <> "mirror move") Then
BattleScreen.FieldEffects.OppUsedMirrorMove = False
End If
End If
If move.IsGameModeMove = True AndAlso move.gmUseRandomMove = True Then If move.IsGameModeMove = True AndAlso move.gmUseRandomMove = True Then
If move.CurrentPP > 0 Then If move.CurrentPP > 0 Then
move.CurrentPP -= 1 move.CurrentPP -= 1
End If End If
If own = True Then
BattleScreen.FieldEffects.OwnUsedRandomMove = True
Else
BattleScreen.FieldEffects.OppUsedRandomMove = True
End If
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = move.GetRandomAttack()} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = move.GetRandomAttack()}
Else Else
Select Case move.Name.ToLower() Select Case move.Name.ToLower()
@ -484,7 +543,11 @@
If move.CurrentPP > 0 Then If move.CurrentPP > 0 Then
move.CurrentPP -= 1 move.CurrentPP -= 1
End If End If
If own = True Then
BattleScreen.FieldEffects.OwnUsedRandomMove = True
Else
BattleScreen.FieldEffects.OppUsedRandomMove = True
End If
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = Moves.Normal.Metronome.GetMetronomeMove()} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = Moves.Normal.Metronome.GetMetronomeMove()}
Case "mirror move" Case "mirror move"
If move.CurrentPP > 0 Then If move.CurrentPP > 0 Then
@ -503,6 +566,11 @@
End If End If
If id <> -1 Then If id <> -1 Then
If own = True Then
BattleScreen.FieldEffects.OwnUsedMirrorMove = True
Else
BattleScreen.FieldEffects.OppUsedMirrorMove = True
End If
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = Attack.GetAttackByID(id)} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Move, .Argument = Attack.GetAttackByID(id)}
Else Else
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Text, .Argument = "Mirror Move failed!"} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Text, .Argument = "Mirror Move failed!"}

View File

@ -129,6 +129,9 @@
Public OwnFutureSightTurns As Integer = 0 'Turns until Futuresight hits Public OwnFutureSightTurns As Integer = 0 'Turns until Futuresight hits
Public OwnFutureSightID As Integer = 0 'Move ID for the Futuresight move Public OwnFutureSightID As Integer = 0 'Move ID for the Futuresight move
Public OwnUsedRandomMove As Boolean = False 'Metronome for example
Public OwnUsedMirrorMove As Boolean = False
'Opp stuff 'Opp stuff
Public OppSpikes As Integer = 0 Public OppSpikes As Integer = 0
Public OppStealthRock As Integer = 0 Public OppStealthRock As Integer = 0
@ -253,6 +256,9 @@
Public OppSandTomb As Integer = 0 Public OppSandTomb As Integer = 0
Public OppInfestation As Integer = 0 Public OppInfestation As Integer = 0
Public OppUsedRandomMove As Boolean = False
Public OppUsedMirrorMove As Boolean = False
Public OppUsedMoves As New List(Of Integer) Public OppUsedMoves As New List(Of Integer)
'Weather 'Weather