P3D-Legacy/P3D/Pokemon/Attacks/Attack.vb

2185 lines
87 KiB
VB.net

Namespace BattleSystem
''' <summary>
''' Represents a Pokémon's move.
''' </summary>
Public Class Attack
#Region "Fields"
Public Const MOVE_COUNT As Integer = 560
Public Enum Categories
Physical
Special
Status
End Enum
Public Enum ContestCategories
Tough
Smart
Beauty
Cool
Cute
End Enum
''' <summary>
''' The target for an attack.
''' </summary>
Public Enum Targets
OneAdjacentTarget 'One adjacent target, excluding itself.
OneAdjacentFoe 'One adjacent foe.
OneAdjacentAlly 'One adjacent ally, excluding itself.
OneTarget 'One target, excluding itself.
OneFoe 'One Foe.
OneAlly 'One ally, excluding itself.
Self 'Only self
AllAdjacentTargets 'All adjacent targets, exluding itself
AllAdjacentFoes 'All adjacent foes
AllAdjacentAllies 'All adjacent allies, excluding itself.
AllTargets 'All Targets, excluding itself.
AllFoes 'All Foes
AllAllies 'All allies, excluding itself.
All 'All Pokémon, including itself
AllOwn 'All allies, including itself.
End Enum
Public Enum AIField
[Nothing]
Damage
Poison
Burn
Paralysis
Sleep
Freeze
Confusion
ConfuseOwn
CanPoison
CanBurn
CanParalyse
CanSleep
CanFreeze
CanConfuse
RaiseAttack
RaiseDefense
RaiseSpAttack
RaiseSpDefense
RaiseSpeed
RaiseAccuracy
RaiseEvasion
LowerAttack
LowerDefense
LowerSpAttack
LowerSpDefense
LowerSpeed
LowerAccuracy
LowerEvasion
CanRaiseAttack
CanRaiseDefense
CanRaiseSpAttack
CanRaiseSpDefense
CanRaiseSpeed
CanRaiseAccuracy
CanRauseEvasion
CanLowerAttack
CanLowerDefense
CanLowerSpAttack
CanLowerSpDefense
CanLowerSpeed
CanLowerAccuracy
CanLowerEvasion
Flinch
CanFlinch
Infatuation
Trap
OHKO
MultiTurn
Recoil
Healing
CureStatus
Support
Recharge
HighPriority
Absorbing
Selfdestruct
ThrawOut
CannotMiss
RemoveReflectLightscreen
End Enum
'#Definitions
Public Type As Element = New Element("Normal")
Public Property ID() As Integer
Get
Return Me._ID
End Get
Set(value As Integer)
Me._ID = value
End Set
End Property
Public Property Power() As Integer
Get
Return Me._power
End Get
Set(value As Integer)
Me._power = value
End Set
End Property
Public Property Accuracy() As Integer
Get
Return Me._accuracy
End Get
Set(value As Integer)
Me._accuracy = value
End Set
End Property
Public Property Name() As String
Get
Return Me._name
End Get
Set(value As String)
Me._name = value
End Set
End Property
Private _ID As Integer = 1
Public OriginalID As Integer = 1 'Original MoveID, remove when not needed anymore. This stores the original move ID when the move isn't programmed yet.
Public IsDefaultMove As Boolean = False 'if Pound gets loaded instead of the correct move, this is true.
Public GameModeFunction As String = "" 'A GameMode can specify a pre defined function for a move.
Public IsGameModeMove As Boolean = False
Private _power As Integer = 40
Private _accuracy As Integer = 100
Private _name As String = "Pound"
Public OriginalPP As Integer = 35
Public Category As Categories = Categories.Physical
Public ContestCategory As ContestCategories = ContestCategories.Tough
Public Description As String = "Pounds with forelegs or tail."
Public CriticalChance As Integer = 1
Public IsHMMove As Boolean = False
Public Target As Targets = Targets.OneAdjacentTarget
Public Priority As Integer = 0
Public TimesToAttack As Integer = 1
Public EffectChances As New List(Of Integer)
'#End
'#SpecialDefinitions
Public MakesContact As Boolean = True
Public ProtectAffected As Boolean = True
Public MagicCoatAffected As Boolean = False
Public SnatchAffected As Boolean = False
Public MirrorMoveAffected As Boolean = True
Public KingsrockAffected As Boolean = True
Public CounterAffected As Boolean = True
Public DisabledWhileGravity As Boolean = False
Public UseEffectiveness As Boolean = True
Public IsHealingMove As Boolean = False
Public RemovesFrozen As Boolean = False
Public IsRecoilMove As Boolean = False
Public IsPunchingMove As Boolean = False
Public ImmunityAffected As Boolean = True
Public IsDamagingMove As Boolean = True
Public IsProtectMove As Boolean = False
Public IsSoundMove As Boolean = False
Public HasSecondaryEffect As Boolean = False
Public IsAffectedBySubstitute As Boolean = True
Public IsOneHitKOMove As Boolean = False
Public IsWonderGuardAffected As Boolean = True
Public UseAccEvasion As Boolean = True
Public CanHitInMidAir As Boolean = False
Public CanHitUnderground As Boolean = False
Public CanHitUnderwater As Boolean = False
Public CanHitSleeping As Boolean = True
Public CanGainSTAB As Boolean = True
Public IsPowderMove As Boolean = False
Public IsTrappingMove As Boolean = False
Public IsPulseMove As Boolean = False
Public IsBulletMove As Boolean = False
Public IsJawMove As Boolean = False
Public UseOppDefense As Boolean = True
Public UseOppEvasion As Boolean = True
Public FocusOppPokemon As Boolean = True
'#End
Public CurrentPP As Integer = 0
Public MaxPP As Integer = 0
Public Disabled As Integer = 0
Public AIField1 As AIField = AIField.Damage
Public AIField2 As AIField = AIField.Nothing
Public AIField3 As AIField = AIField.Nothing
#End Region
''' <summary>
''' Returns a new instance of AttackV2 based on the input ID.
''' </summary>
''' <param name="ID">The ID of the Move to return.</param>
Public Shared Function GetAttackByID(ByVal ID As Integer) As Attack
Dim returnMove As Attack
Select Case ID
Case 1
returnMove = New Moves.Normal.Pound()
Case 2
returnMove = New Moves.Fighting.KarateChop()
Case 3
returnMove = New Moves.Normal.DoubleSlap()
Case 4
returnMove = New Moves.Normal.CometPunch()
Case 5
returnMove = New Moves.Normal.MegaPunch()
Case 6
returnMove = New Moves.Normal.PayDay()
Case 7
returnMove = New Moves.Fire.FirePunch()
Case 8
returnMove = New Moves.Ice.IcePunch()
Case 9
returnMove = New Moves.Electric.ThunderPunch()
Case 10
returnMove = New Moves.Normal.Scratch()
Case 11
returnMove = New Moves.Normal.ViceGrip()
Case 12
returnMove = New Moves.Normal.Guillotine()
Case 13
returnMove = New Moves.Normal.RazorWind()
Case 14
returnMove = New Moves.Normal.SwordsDance()
Case 15
returnMove = New Moves.Normal.Cut()
Case 16
returnMove = New Moves.Flying.Gust()
Case 17
returnMove = New Moves.Flying.WingAttack()
Case 18
returnMove = New Moves.Normal.Whirlwind()
Case 19
returnMove = New Moves.Flying.Fly()
Case 20
returnMove = New Moves.Normal.Bind()
Case 21
returnMove = New Moves.Normal.Slam()
Case 22
returnMove = New Moves.Grass.VineWhip()
Case 23
returnMove = New Moves.Normal.Stomp()
Case 24
returnMove = New Moves.Fighting.DoubleKick()
Case 25
returnMove = New Moves.Normal.MegaKick()
Case 26
returnMove = New Moves.Fighting.JumpKick()
Case 27
returnMove = New Moves.Fighting.RollingKick()
Case 28
returnMove = New Moves.Ground.SandAttack()
Case 29
returnMove = New Moves.Normal.Headbutt()
Case 30
returnMove = New Moves.Normal.HornAttack()
Case 31
returnMove = New Moves.Normal.FuryAttack()
Case 32
returnMove = New Moves.Normal.HornDrill()
Case 33
returnMove = New Moves.Normal.Tackle()
Case 34
returnMove = New Moves.Normal.BodySlam()
Case 35
returnMove = New Moves.Normal.Wrap()
Case 36
returnMove = New Moves.Normal.TakeDown()
Case 37
returnMove = New Moves.Normal.Thrash()
Case 38
returnMove = New Moves.Normal.DoubleEdge()
Case 39
returnMove = New Moves.Normal.TailWhip()
Case 40
returnMove = New Moves.Poison.PoisonSting()
Case 41
returnMove = New Moves.Bug.Twineedle()
Case 42
returnMove = New Moves.Bug.PinMissle()
Case 43
returnMove = New Moves.Normal.Leer()
Case 44
returnMove = New Moves.Dark.Bite()
Case 45
returnMove = New Moves.Normal.Growl()
Case 46
returnMove = New Moves.Normal.Roar()
Case 47
returnMove = New Moves.Normal.Sing()
Case 48
returnMove = New Moves.Normal.Supersonic()
Case 49
returnMove = New Moves.Normal.SonicBoom()
'Case 50
'Disable
Case 51
returnMove = New Moves.Poison.Acid()
Case 52
returnMove = New Moves.Fire.Ember()
Case 53
returnMove = New Moves.Fire.Flamethrower()
Case 54
returnMove = New Moves.Ice.Mist()
Case 55
returnMove = New Moves.Water.WaterGun()
Case 56
returnMove = New Moves.Water.HydroPump()
Case 57
returnMove = New Moves.Water.Surf()
Case 58
returnMove = New Moves.Ice.IceBeam()
Case 59
returnMove = New Moves.Ice.Blizzard()
Case 60
returnMove = New Moves.Psychic.Psybeam()
Case 61
returnMove = New Moves.Water.BubbleBeam()
Case 62
returnMove = New Moves.Ice.AuroraBeam()
Case 63
returnMove = New Moves.Normal.HyperBeam()
Case 64
returnMove = New Moves.Flying.Peck()
Case 65
returnMove = New Moves.Flying.DrillPeck()
Case 66
returnMove = New Moves.Fighting.Submission()
Case 67
returnMove = New Moves.Fighting.LowKick()
Case 68
returnMove = New Moves.Fighting.Counter()
Case 69
returnMove = New Moves.Fighting.SeismicToss()
Case 70
returnMove = New Moves.Normal.Strength()
Case 71
returnMove = New Moves.Grass.Absorb()
Case 72
returnMove = New Moves.Grass.MegaDrain()
Case 73
returnMove = New Moves.Grass.LeechSeed()
Case 74
returnMove = New Moves.Normal.Growth()
Case 75
returnMove = New Moves.Grass.RazorLeaf()
Case 76
returnMove = New Moves.Grass.SolarBeam()
Case 77
returnMove = New Moves.Poison.PoisonPowder()
Case 78
returnMove = New Moves.Grass.StunSpore()
Case 79
returnMove = New Moves.Grass.SleepPowder()
Case 80
returnMove = New Moves.Grass.PetalDance()
Case 81
returnMove = New Moves.Bug.StringShot()
Case 82
returnMove = New Moves.Dragon.DragonRage()
Case 83
returnMove = New Moves.Fire.FireSpin()
Case 84
returnMove = New Moves.Electric.ThunderShock()
Case 85
returnMove = New Moves.Electric.Thunderbolt()
Case 86
returnMove = New Moves.Electric.ThunderWave()
Case 87
returnMove = New Moves.Electric.Thunder()
Case 88
returnMove = New Moves.Rock.RockThrow()
Case 89
returnMove = New Moves.Ground.Earthquake()
Case 90
returnMove = New Moves.Ground.Fissure()
Case 91
returnMove = New Moves.Ground.Dig()
Case 92
returnMove = New Moves.Poison.Toxic()
Case 93
returnMove = New Moves.Psychic.Confusion()
Case 94
returnMove = New Moves.Psychic.Psychic()
Case 95
returnMove = New Moves.Psychic.Hypnosis()
Case 96
returnMove = New Moves.Psychic.Meditate()
Case 97
returnMove = New Moves.Psychic.Agility()
Case 98
returnMove = New Moves.Normal.QuickAttack()
Case 99
returnMove = New Moves.Normal.Rage()
Case 100
returnMove = New Moves.Psychic.Teleport()
Case 101
returnMove = New Moves.Ghost.NightShade()
Case 102
returnMove = New Moves.Normal.Mimic()
Case 103
returnMove = New Moves.Normal.Screech()
Case 104
returnMove = New Moves.Normal.DoubleTeam()
Case 105
returnMove = New Moves.Normal.Recover()
Case 106
returnMove = New Moves.Normal.Harden()
Case 107
returnMove = New Moves.Normal.Minimize()
Case 108
returnMove = New Moves.Normal.Smokescreen()
Case 109
returnMove = New Moves.Ghost.ConfuseRay()
Case 110
returnMove = New Moves.Water.Withdraw()
Case 111
returnMove = New Moves.Normal.DefenseCurl()
Case 112
returnMove = New Moves.Psychic.Barrier()
Case 113
returnMove = New Moves.Psychic.LightScreen()
Case 114
returnMove = New Moves.Ice.Haze()
Case 115
returnMove = New Moves.Psychic.Reflect()
Case 116
returnMove = New Moves.Normal.FocusEnergy()
Case 117
returnMove = New Moves.Normal.Bide()
Case 118
returnMove = New Moves.Normal.Metronome()
Case 119
returnMove = New Moves.Flying.MirrorMove()
Case 120
returnMove = New Moves.Normal.SelfDestruct()
Case 121
returnMove = New Moves.Normal.EggBomb()
Case 122
returnMove = New Moves.Ghost.Lick()
Case 123
returnMove = New Moves.Poison.Smog()
Case 124
returnMove = New Moves.Poison.Sludge()
Case 125
returnMove = New Moves.Ground.BoneClub()
Case 126
returnMove = New Moves.Fire.FireBlast()
Case 127
returnMove = New Moves.Water.Waterfall()
Case 128
returnMove = New Moves.Water.Clamp()
Case 129
returnMove = New Moves.Normal.Swift()
Case 130
returnMove = New Moves.Normal.SkullBash()
Case 131
returnMove = New Moves.Normal.SpikeCannon()
Case 132
returnMove = New Moves.Normal.Constrict()
Case 133
returnMove = New Moves.Psychic.Amnesia()
Case 134
returnMove = New Moves.Psychic.Kinesis()
Case 135
returnMove = New Moves.Normal.SoftBoiled()
Case 136
returnMove = New Moves.Fighting.HighJumpKick()
Case 137
returnMove = New Moves.Normal.Glare()
Case 138
returnMove = New Moves.Psychic.DreamEater()
Case 139
returnMove = New Moves.Poison.PoisonGas()
Case 140
returnMove = New Moves.Normal.Barrage()
Case 141
returnMove = New Moves.Bug.LeechLife()
Case 142
returnMove = New Moves.Normal.LovelyKiss()
Case 143
returnMove = New Moves.Flying.SkyAttack()
Case 144
returnMove = New Moves.Normal.Transform()
Case 145
returnMove = New Moves.Water.Bubble()
Case 146
returnMove = New Moves.Normal.DizzyPunch()
Case 147
returnMove = New Moves.Grass.Spore()
Case 148
returnMove = New Moves.Electric.Flash()
Case 149
returnMove = New Moves.Psychic.Psywave()
Case 150
returnMove = New Moves.Normal.Splash()
Case 151
returnMove = New Moves.Poison.AcidArmor()
Case 152
returnMove = New Moves.Water.Crabhammer()
Case 153
returnMove = New Moves.Normal.Explosion()
Case 154
returnMove = New Moves.Normal.FurySwipes()
Case 155
returnMove = New Moves.Ground.Bonemerang()
Case 156
returnMove = New Moves.Psychic.Rest()
Case 157
returnMove = New Moves.Rock.RockSlide()
Case 158
returnMove = New Moves.Normal.HyperFang()
Case 159
returnMove = New Moves.Normal.Sharpen()
Case 160
returnMove = New Moves.Normal.Conversion()
Case 161
returnMove = New Moves.Normal.TriAttack()
Case 162
returnMove = New Moves.Normal.SuperFang()
Case 163
returnMove = New Moves.Normal.Slash()
Case 164
returnMove = New Moves.Normal.Substitute()
Case 165
returnMove = New Moves.Normal.Struggle()
Case 166
returnMove = New Moves.Normal.Sketch()
Case 167
returnMove = New Moves.Fighting.TripleKick()
Case 168
returnMove = New Moves.Dark.Thief()
Case 169
returnMove = New Moves.Bug.SpiderWeb()
Case 170
returnMove = New Moves.Normal.MindReader()
Case 171
returnMove = New Moves.Ghost.Nightmare()
Case 172
returnMove = New Moves.Fire.FlameWheel()
Case 173
returnMove = New Moves.Normal.Snore()
Case 174
returnMove = New Moves.Ghost.Curse()
Case 175
returnMove = New Moves.Normal.Flail()
Case 176
returnMove = New Moves.Normal.Conversion2()
Case 177
returnMove = New Moves.Flying.Aeroblast()
Case 178
returnMove = New Moves.Grass.CottonSpore()
Case 179
returnMove = New Moves.Fighting.Reversal()
Case 180
returnMove = New Moves.Ghost.Spite()
Case 181
returnMove = New Moves.Ice.PowderSnow()
Case 182
returnMove = New Moves.Normal.Protect()
Case 183
returnMove = New Moves.Fighting.MachPunch()
Case 184
returnMove = New Moves.Normal.ScaryFace()
Case 185
returnMove = New Moves.Dark.FeintAttack()
Case 186
returnMove = New Moves.Fairy.SweetKiss()
Case 187
returnMove = New Moves.Normal.BellyDrum()
Case 188
returnMove = New Moves.Poison.SludgeBomb()
Case 189
returnMove = New Moves.Ground.MudSlap()
Case 190
returnMove = New Moves.Water.Octazooka()
Case 191
returnMove = New Moves.Ground.Spikes()
Case 192
returnMove = New Moves.Electric.ZapCannon()
Case 193
returnMove = New Moves.Normal.Foresight()
Case 194
returnMove = New Moves.Ghost.DestinyBond()
Case 195
returnMove = New Moves.Normal.PerishSong()
Case 196
returnMove = New Moves.Ice.IcyWind()
Case 197
returnMove = New Moves.Fighting.Detect()
Case 198
returnMove = New Moves.Ground.BoneRush()
Case 199
returnMove = New Moves.Normal.LockOn()
Case 200
returnMove = New Moves.Dragon.Outrage()
Case 201
returnMove = New Moves.Rock.Sandstorm()
Case 202
returnMove = New Moves.Grass.GigaDrain()
Case 203
returnMove = New Moves.Normal.Endure()
Case 204
returnMove = New Moves.Fairy.Charm()
Case 205
returnMove = New Moves.Rock.Rollout()
Case 206
returnMove = New Moves.Normal.FalseSwipe()
Case 207
returnMove = New Moves.Normal.Swagger()
Case 208
returnMove = New Moves.Normal.MilkDrink()
Case 209
returnMove = New Moves.Electric.Spark()
Case 210
returnMove = New Moves.Bug.FuryCutter()
Case 211
returnMove = New Moves.Steel.SteelWing()
Case 212
returnMove = New Moves.Normal.MeanLook()
Case 213
returnMove = New Moves.Normal.Attract()
Case 214
returnMove = New Moves.Normal.SleepTalk()
Case 215
returnMove = New Moves.Normal.HealBell()
Case 216
returnMove = New Moves.Normal.Return()
Case 217
returnMove = New Moves.Normal.Present()
Case 218
returnMove = New Moves.Normal.Frustration()
Case 219
returnMove = New Moves.Normal.Safeguard()
Case 220
returnMove = New Moves.Normal.PainSplit()
Case 221
returnMove = New Moves.Fire.SacredFire()
Case 222
returnMove = New Moves.Ground.Magnitude()
Case 223
returnMove = New Moves.Fighting.DynamicPunch()
Case 224
returnMove = New Moves.Bug.Megahorn()
Case 225
returnMove = New Moves.Dragon.DragonBreath()
Case 226
returnMove = New Moves.Normal.BatonPass()
Case 227
returnMove = New Moves.Normal.Encore()
Case 228
returnMove = New Moves.Dark.Pursuit()
Case 229
returnMove = New Moves.Normal.RapidSpin()
Case 230
returnMove = New Moves.Normal.SweetScent()
Case 231
returnMove = New Moves.Steel.IronTail()
Case 232
returnMove = New Moves.Steel.MetalClaw()
Case 233
returnMove = New Moves.Fighting.VitalThrow()
Case 234
returnMove = New Moves.Normal.MorningSun()
Case 235
returnMove = New Moves.Grass.Synthesis()
Case 236
returnMove = New Moves.Fairy.Moonlight()
Case 237
returnMove = New Moves.Normal.HiddenPower()
Case 238
returnMove = New Moves.Fighting.CrossChop()
Case 239
returnMove = New Moves.Dragon.Twister()
Case 240
returnMove = New Moves.Water.RainDance()
Case 241
returnMove = New Moves.Fire.SunnyDay()
Case 242
returnMove = New Moves.Dark.Crunch()
Case 243
returnMove = New Moves.Psychic.MirrorCoat()
Case 244
returnMove = New Moves.Normal.PsychUp()
Case 245
returnMove = New Moves.Normal.ExtremeSpeed()
Case 246
returnMove = New Moves.Rock.AncientPower()
Case 247
returnMove = New Moves.Ghost.ShadowBall()
Case 248
returnMove = New Moves.Psychic.FutureSight()
Case 249
returnMove = New Moves.Fighting.RockSmash()
Case 250
returnMove = New Moves.Water.Whirlpool()
Case 251
returnMove = New Moves.Dark.BeatUp()
Case 252
returnMove = New Moves.Normal.FakeOut()
Case 253
returnMove = New Moves.Normal.Uproar()
Case 254
returnMove = New Moves.Normal.Stockpile()
Case 255
returnMove = New Moves.Normal.SpitUp()
Case 256
returnMove = New Moves.Normal.Swallow()
Case 257
returnMove = New Moves.Fire.HeatWave()
Case 258
returnMove = New Moves.Ice.Hail()
Case 259
returnMove = New Moves.Dark.Torment()
Case 260
returnMove = New Moves.Dark.Flatter()
Case 261
returnMove = New Moves.Fire.WillOWisp()
Case 262
returnMove = New Moves.Dark.Memento()
Case 263
returnMove = New Moves.Normal.Facade()
Case 264
returnMove = New Moves.Fighting.FocusPunch()
Case 265
returnMove = New Moves.Normal.SmellingSalts()
'Case 266
'Follow me - Double Battles
Case 267
returnMove = New Moves.Normal.NaturePower()
Case 268
returnMove = New Moves.Electric.Charge()
Case 269
returnMove = New Moves.Dark.Taunt()
'Case 270
'Helping hand - Double Battles
Case 271
returnMove = New Moves.Psychic.Trick()
Case 272
returnMove = New Moves.Psychic.RolePlay()
Case 273
returnMove = New Moves.Normal.Wish()
Case 274
returnMove = New Moves.Normal.Assist()
Case 275
returnMove = New Moves.Grass.Ingrain()
Case 276
returnMove = New Moves.Fighting.SuperPower()
Case 277
returnMove = New Moves.Psychic.MagicCoat()
Case 278
returnMove = New Moves.Normal.Recycle()
Case 279
returnMove = New Moves.Fighting.Revenge()
Case 280
returnMove = New Moves.Fighting.BrickBreak()
Case 281
returnMove = New Moves.Normal.Yawn()
Case 282
returnMove = New Moves.Dark.KnockOff()
Case 283
returnMove = New Moves.Normal.Endeavor()
Case 284
returnMove = New Moves.Fire.Eruption()
Case 285
returnMove = New Moves.Psychic.SkillSwap()
'Case 286
'Imprison
Case 287
returnMove = New Moves.Normal.Refresh()
'Case 288
'Grudge
Case 289
returnMove = New Moves.Normal.Snatch()
'Case 290
'Secret Power
Case 291
returnMove = New Moves.Water.Dive()
Case 292
returnMove = New Moves.Fighting.ArmThrust()
'Case 293
'Camouflage
Case 294
returnMove = New Moves.Bug.Tailglow()
Case 295
returnMove = New Moves.Psychic.LusterPurge()
Case 296
returnMove = New Moves.Psychic.MistBall()
Case 297
returnMove = New Moves.Flying.FeatherDance()
Case 298
returnMove = New Moves.Normal.TeeterDance()
Case 299
returnMove = New Moves.Fire.BlazeKick()
Case 300
returnMove = New Moves.Ground.MudSport()
Case 301
returnMove = New Moves.Ice.IceBall()
Case 302
returnMove = New Moves.Grass.NeedleArm()
Case 303
returnMove = New Moves.Normal.SlackOff()
Case 304
returnMove = New Moves.Normal.HyperVoice()
Case 305
returnMove = New Moves.Poison.PoisonFang()
Case 306
returnMove = New Moves.Normal.CrushClaw()
Case 307
returnMove = New Moves.Fire.BlastBurn()
Case 308
returnMove = New Moves.Water.Hydrocannon()
Case 309
returnMove = New Moves.Steel.MeteorMash()
Case 310
returnMove = New Moves.Ghost.Astonish()
Case 311
returnMove = New Moves.Normal.WeatherBall()
Case 312
returnMove = New Moves.Grass.Aromatherapy()
Case 313
returnMove = New Moves.Dark.FakeTears()
Case 314
returnMove = New Moves.Flying.AirCutter()
Case 315
returnMove = New Moves.Fire.Overheat()
Case 316
returnMove = New Moves.Normal.OdorSleuth()
Case 317
returnMove = New Moves.Rock.RockTomb()
Case 318
returnMove = New Moves.Bug.Silverwind()
Case 319
returnMove = New Moves.Steel.MetalSound()
Case 320
returnMove = New Moves.Grass.GrassWhistle()
Case 321
returnMove = New Moves.Normal.Tickle()
Case 322
returnMove = New Moves.Psychic.CosmicPower()
Case 323
returnMove = New Moves.Water.WaterSpout()
Case 324
returnMove = New Moves.Bug.SignalBeam()
Case 325
returnMove = New Moves.Ghost.ShadowPunch()
Case 326
returnMove = New Moves.Psychic.Extrasensory()
Case 327
returnMove = New Moves.Fighting.SkyUppercut()
Case 328
returnMove = New Moves.Ground.SandTomb()
Case 329
returnMove = New Moves.Ice.SheerCold()
Case 330
returnMove = New Moves.Water.Muddywater()
Case 331
returnMove = New Moves.Grass.BulletSeed()
Case 332
returnMove = New Moves.Flying.AerialAce()
Case 333
returnMove = New Moves.Ice.IcicleSpear()
Case 334
returnMove = New Moves.Steel.IronDefense()
Case 335
returnMove = New Moves.Normal.Block()
Case 336
returnMove = New Moves.Normal.Howl()
Case 337
returnMove = New Moves.Dragon.DragonClaw()
Case 338
returnMove = New Moves.Grass.FrenzyPlant()
Case 339
returnMove = New Moves.Fighting.BulkUp()
Case 340
returnMove = New Moves.Flying.Bounce()
Case 341
returnMove = New Moves.Ground.MudShot()
Case 342
returnMove = New Moves.Poison.PoisonTail()
Case 343
returnMove = New Moves.Normal.Covet()
Case 344
returnMove = New Moves.Electric.VoltTackle()
Case 345
returnMove = New Moves.Grass.MagicalLeaf()
Case 346
returnMove = New Moves.Water.WaterSport()
Case 347
returnMove = New Moves.Psychic.CalmMind()
Case 348
returnMove = New Moves.Grass.LeafBlade()
Case 349
returnMove = New Moves.Dragon.DragonDance()
Case 350
returnMove = New Moves.Rock.RockBlast()
Case 351
returnMove = New Moves.Electric.ShockWave()
Case 352
returnMove = New Moves.Water.WaterPulse()
Case 353
returnMove = New Moves.Steel.DoomDesire()
Case 354
returnMove = New Moves.Psychic.PsychoBoost()
Case 355
returnMove = New Moves.Flying.Roost()
Case 356
returnMove = New Moves.Psychic.Gravity()
Case 357
returnMove = New Moves.Psychic.MiracleEye()
Case 358
returnMove = New Moves.Fighting.WakeUpSlap()
Case 359
returnMove = New Moves.Fighting.HammerArm()
Case 360
returnMove = New Moves.Steel.GyroBall()
Case 361
returnMove = New Moves.Psychic.HealingWish()
Case 362
returnMove = New Moves.Water.Brine()
Case 363
returnMove = New Moves.Normal.NaturalGift()
Case 364
returnMove = New Moves.Normal.Feint()
Case 365
returnMove = New Moves.Flying.Pluck()
Case 366
returnMove = New Moves.Flying.Tailwind()
Case 367
returnMove = New Moves.Normal.Acupressure()
Case 368
returnMove = New Moves.Steel.MetalBurst()
Case 369
returnMove = New Moves.Bug.UTurn()
Case 370
returnMove = New Moves.Fighting.CloseCombat()
Case 371
returnMove = New Moves.Dark.Payback()
Case 372
returnMove = New Moves.Dark.Assurance()
Case 373
returnMove = New Moves.Dark.Embargo()
Case 374
returnMove = New Moves.Dark.Fling()
Case 375
returnMove = New Moves.Psychic.PsychoShift()
Case 376
returnMove = New Moves.Normal.TrumpCard()
Case 377
returnMove = New Moves.Psychic.HealBlock()
Case 378
returnMove = New Moves.Normal.WringOut()
Case 379
returnMove = New Moves.Psychic.PowerTrick()
'Case 380
'Gastro Acid
'Case 381
'Lucky Chant
'Case 382
'Me First
'Case 383
'Copycat
Case 384
returnMove = New Moves.Psychic.PowerSwap()
Case 385
returnMove = New Moves.Psychic.GuardSwap()
Case 386
returnMove = New Moves.Dark.Punishment()
Case 387
returnMove = New Moves.Normal.LastResort()
Case 388
returnMove = New Moves.Grass.WorrySeed()
Case 389
returnMove = New Moves.Dark.SuckerPunch()
Case 390
returnMove = New Moves.Poison.ToxicSpikes()
Case 391
returnMove = New Moves.Psychic.HeartSwap()
Case 392
returnMove = New Moves.Water.AquaRing()
Case 393
returnMove = New Moves.Electric.MagnetRise()
Case 394
returnMove = New Moves.Fire.FlareBlitz()
Case 395
returnMove = New Moves.Fighting.ForcePalm()
Case 396
returnMove = New Moves.Fighting.AuraSphere()
Case 397
returnMove = New Moves.Rock.RockPolish()
Case 398
returnMove = New Moves.Poison.PoisonJab()
Case 399
returnMove = New Moves.Dark.DarkPulse()
Case 400
returnMove = New Moves.Dark.Nightslash()
Case 401
returnMove = New Moves.Water.Aquatail()
Case 402
returnMove = New Moves.Grass.SeedBomb()
Case 403
returnMove = New Moves.Flying.AirSlash()
Case 404
returnMove = New Moves.Bug.Xscissor()
Case 405
returnMove = New Moves.Bug.BugBuzz()
Case 406
returnMove = New Moves.Dragon.DragonPulse()
Case 407
returnMove = New Moves.Dragon.DragonRush()
Case 408
returnMove = New Moves.Rock.PowerGem()
Case 409
returnMove = New Moves.Fighting.DrainPunch()
Case 410
returnMove = New Moves.Fighting.VacuumWave()
Case 411
returnMove = New Moves.Fighting.FocusBlast()
Case 412
returnMove = New Moves.Grass.EnergyBall()
Case 413
returnMove = New Moves.Flying.BraveBird()
Case 414
returnMove = New Moves.Ground.EarthPower()
Case 415
returnMove = New Moves.Dark.Switcheroo()
Case 416
returnMove = New Moves.Normal.GigaImpact()
Case 417
returnMove = New Moves.Dark.NastyPlot()
Case 418
returnMove = New Moves.Steel.BulletPunch()
Case 419
returnMove = New Moves.Ice.Avalanche()
Case 420
returnMove = New Moves.Ice.IceShard()
Case 421
returnMove = New Moves.Ghost.ShadowClaw()
Case 422
returnMove = New Moves.Electric.ThunderFang()
Case 423
returnMove = New Moves.Ice.IceFang()
Case 424
returnMove = New Moves.Fire.FireFang()
Case 425
returnMove = New Moves.Ghost.ShadowSneak()
Case 426
returnMove = New Moves.Ground.MudBomb()
Case 427
returnMove = New Moves.Psychic.PsychoCut()
Case 428
returnMove = New Moves.Psychic.ZenHeadbutt()
Case 429
returnMove = New Moves.Steel.MirrorShot()
Case 430
returnMove = New Moves.Steel.FlashCannon()
Case 431
returnMove = New Moves.Normal.RockClimb()
Case 432
returnMove = New Moves.Flying.Defog()
Case 433
returnMove = New Moves.Psychic.TrickRoom()
Case 434
returnMove = New Moves.Dragon.DracoMeteor()
Case 435
returnMove = New Moves.Electric.Discharge()
Case 436
returnMove = New Moves.Fire.LavaPlume()
Case 437
returnMove = New Moves.Grass.LeafStorm()
Case 438
returnMove = New Moves.Grass.PowerWhip()
Case 439
returnMove = New Moves.Rock.RockWrecker()
Case 440
returnMove = New Moves.Poison.Crosspoison()
Case 441
returnMove = New Moves.Poison.GunkShot()
Case 442
returnMove = New Moves.Steel.Ironhead()
Case 443
returnMove = New Moves.Steel.MagnetBomb()
Case 444
returnMove = New Moves.Rock.StoneEdge()
Case 445
returnMove = New Moves.Normal.Captivate()
Case 446
returnMove = New Moves.Rock.StealthRock()
Case 447
returnMove = New Moves.Grass.GrassKnot()
Case 448
returnMove = New Moves.Flying.Chatter()
Case 449
returnMove = New Moves.Normal.Judgement()
Case 450
returnMove = New Moves.Bug.BugBite()
Case 451
returnMove = New Moves.Electric.Chargebeam()
Case 452
returnMove = New Moves.Grass.WoodHammer()
Case 453
returnMove = New Moves.Water.Aquajet()
Case 454
returnMove = New Moves.Bug.AttackOrder()
Case 455
returnMove = New Moves.Bug.DefendOrder()
Case 456
returnMove = New Moves.Bug.HealOrder()
Case 457
returnMove = New Moves.Rock.HeadSmash()
Case 458
returnMove = New Moves.Normal.DoubleHit()
Case 459
returnMove = New Moves.Dragon.RoarOfTime()
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
returnMove = New Moves.Dark.DarkVoid()
Case 465
returnMove = New Moves.Grass.Seedflare()
Case 466
returnMove = New Moves.Ghost.OminousWind()
Case 467
returnMove = New Moves.Ghost.ShadowForce()
Case 468
returnMove = New Moves.Dark.HoneClaws()
'Case 469
'Wide Guard
'Case 470
'Guard Split
'Case 471
'Power Split
'Case 472
'Wonder Room
Case 473
returnMove = New Moves.Psychic.Psyshock()
Case 474
returnMove = New Moves.Poison.Venoshock()
Case 475
returnMove = New Moves.Steel.Autotomize()
'Case 476
'Rage Powder
'Case 477
'Telekinesis
'Case 478
'Magic Room
Case 479
returnMove = New Moves.Rock.SmackDown()
Case 480
returnMove = New Moves.Fighting.StormThrow()
Case 481
returnMove = New Moves.Fire.FlameBurst()
Case 482
returnMove = New Moves.Poison.SludgeWave()
Case 483
returnMove = New Moves.Bug.QuiverDance()
Case 484
returnMove = New Moves.Steel.HeavySlam()
Case 485
returnMove = New Moves.Psychic.Synchronoise()
Case 486
returnMove = New Moves.Electric.ElectroBall()
'Case 487
'Soak
Case 488
returnMove = New Moves.Fire.FlameCharge()
Case 489
returnMove = New Moves.Poison.Coil()
Case 490
returnMove = New Moves.Fighting.LowSweep()
Case 491
returnMove = New Moves.Poison.AcidSpray()
Case 492
returnMove = New Moves.Dark.FoulPlay()
Case 493
returnMove = New Moves.Normal.SimpleBeam()
Case 494
returnMove = New Moves.Normal.Entrainment()
'Case 495
'After You
Case 496
returnMove = New Moves.Normal.Round()
Case 497
returnMove = New Moves.Normal.EchoedVoice()
Case 498
returnMove = New Moves.Normal.ChipAway()
Case 499
returnMove = New Moves.Poison.ClearSmog()
Case 500
returnMove = New Moves.Psychic.StoredPower()
'Case 501
'Quick Guard
'Case 502
'Ally Switch
Case 503
returnMove = New Moves.Water.Scald()
Case 504
returnMove = New Moves.Normal.ShellSmash()
Case 505
returnMove = New Moves.Psychic.HealPulse()
Case 506
returnMove = New Moves.Ghost.Hex()
'Case 507
'Sky Drop
Case 508
returnMove = New Moves.Steel.ShiftGear()
Case 509
returnMove = New Moves.Fighting.CircleThrow()
Case 510
returnMove = New Moves.Fire.Incinerate()
'Case 511
'Quash
Case 512
returnMove = New Moves.Flying.Acrobatics()
Case 513
returnMove = New Moves.Normal.ReflectType()
'Case 514
'Retaliate
Case 515
returnMove = New Moves.Fighting.FinalGambit()
Case 516
returnMove = New Moves.Normal.Bestow()
Case 517
returnMove = New Moves.Fire.Inferno()
Case 518
returnMove = New Moves.Water.WaterPledge()
Case 519
returnMove = New Moves.Fire.FirePledge()
Case 520
returnMove = New Moves.Grass.GrassPledge()
Case 521
returnMove = New Moves.Electric.VoltSwitch()
Case 522
returnMove = New Moves.Bug.StruggleBug()
Case 523
returnMove = New Moves.Ground.Bulldoze()
Case 524
returnMove = New Moves.Ice.FrostBreath
Case 525
returnMove = New Moves.Dragon.DragonTail()
Case 526
returnMove = New Moves.Normal.WorkUp()
Case 527
returnMove = New Moves.Electric.Electroweb()
Case 528
returnMove = New Moves.Electric.WildCharge()
Case 529
returnMove = New Moves.Ground.DrillRun()
Case 530
returnMove = New Moves.Dragon.DualChop()
Case 531
returnMove = New Moves.Psychic.HeartStamp()
Case 532
returnMove = New Moves.Grass.HornLeech()
Case 533
returnMove = New Moves.Fighting.SacredSword()
Case 534
returnMove = New Moves.Water.RazorShell()
Case 535
returnMove = New Moves.Fire.HeatCrash()
Case 536
returnMove = New Moves.Grass.LeafTornado()
Case 537
returnMove = New Moves.Bug.Steamroller()
Case 538
returnMove = New Moves.Grass.CottonGuard()
Case 539
returnMove = New Moves.Dark.NightDaze()
Case 540
returnMove = New Moves.Psychic.Psystrike()
Case 541
returnMove = New Moves.Normal.TailSlap()
Case 542
returnMove = New Moves.Flying.Hurricane()
Case 543
returnMove = New Moves.Normal.HeadCharge()
Case 544
returnMove = New Moves.Steel.GearGrind()
Case 545
returnMove = New Moves.Fire.SearingShot()
Case 546
returnMove = New Moves.Normal.TechnoBlast()
'Case 547
'Relic Song
Case 548
returnMove = New Moves.Fighting.SecretSword()
Case 549
returnMove = New Moves.Ice.Glaciate()
Case 550
returnMove = New Moves.Electric.BoltStrike()
Case 551
returnMove = New Moves.Fire.BlueFlare()
Case 552
returnMove = New Moves.Fire.FieryDance()
Case 553
returnMove = New Moves.Ice.FreezeShock()
Case 554
returnMove = New Moves.Ice.IceBurn()
Case 555
returnMove = New Moves.Dark.Snarl()
Case 556
returnMove = New Moves.Ice.IcicleCrash()
Case 557
returnMove = New Moves.Fire.VCreate()
Case 558
returnMove = New Moves.Fire.FusionFlare()
Case 559
returnMove = New Moves.Electric.FusionBolt()
Case 560
returnMove = New Moves.Fighting.Ride()
'Case 561
'Mat Block
'Case 562
'Belch
'Case 563
'Rototiller
Case 564
returnMove = New Moves.Bug.StickyWeb()
Case 565
returnMove = New Moves.Bug.FellStinger()
Case 566
returnMove = New Moves.Ghost.PhantomForce()
'Case 567
'Trick-or-Treat
Case 568
returnMove = New Moves.Normal.NobleRoar()
'Case 569
'Ion Deluge
Case 570
returnMove = New Moves.Electric.ParabolicCharge()
'Case 571
'Forest's Curse
Case 572
returnMove = New Moves.Grass.PetalBlizzard()
Case 573
returnMove = New Moves.Ice.FreezeDry()
Case 574
returnMove = New Moves.Fairy.DisarmingVoice()
Case 575
returnMove = New Moves.Dark.PartingShot()
'Case 576
'Topsy-Turvy
Case 577
returnMove = New Moves.Fairy.DrainingKiss()
'Case 578
'Crafty Shield
'Case 579
'Flower Shield
Case 580
returnMove = New Moves.Grass.GrassyTerrain()
Case 581
returnMove = New Moves.Fairy.MistyTerrain()
'Case 582
'Electrify
Case 583
returnMove = New Moves.Fairy.PlayRough()
Case 584
returnMove = New Moves.Fairy.FairyWind()
Case 585
returnMove = New Moves.Fairy.Moonblast()
Case 586
returnMove = New Moves.Normal.Boomburst()
'Case 587
'Fairy Lock
Case 588
returnMove = New Moves.Steel.KingsShield()
Case 589
returnMove = New Moves.Normal.PlayNice()
Case 590
returnMove = New Moves.Normal.Confide()
Case 591
returnMove = New Moves.Rock.DiamondStorm()
Case 592
returnMove = New Moves.Water.SteamEruption()
Case 593
returnMove = New Moves.Psychic.HyperspaceHole()
Case 594
returnMove = New Moves.Water.WaterShuriken()
Case 595
returnMove = New Moves.Fire.MysticalFire()
'Case 596
'Spiky Shield
'Case 597
'Aromatic Mist - Double Battles
Case 598
returnMove = New Moves.Electric.EerieImpulse()
Case 599
returnMove = New Moves.Poison.VenomDrench()
'Case 600
'Powder
Case 601
returnMove = New Moves.Fairy.Geomancy()
'Case 602
'Magnetic Flux - Double Battles
'Case 603
'Happy Hour
Case 604
returnMove = New Moves.Electric.ElectricTerrain()
Case 605
returnMove = New Moves.Fairy.DazzlingGleam()
Case 606
returnMove = New Moves.Normal.Celebrate()
'Case 607
'Hold Hands
Case 608
returnMove = New Moves.Fairy.BabyDollEyes()
Case 609
returnMove = New Moves.Electric.Nuzzle()
Case 610
returnMove = New Moves.Normal.HoldBack()
Case 611
returnMove = New Moves.Bug.Infestation()
Case 612
returnMove = New Moves.Fighting.PowerUpPunch()
Case 613
returnMove = New Moves.Flying.OblivionWing()
Case 614
returnMove = New Moves.Ground.ThousandArrows()
Case 615
returnMove = New Moves.Ground.ThousandWaves()
Case 616
returnMove = New Moves.Ground.LandsWrath()
Case 617
returnMove = New Moves.Fairy.LightOfRuin()
Case 618
returnMove = New Moves.Water.OriginPulse()
Case 619
returnMove = New Moves.Ground.PrecipiceBlades()
Case 620
returnMove = New Moves.Flying.DragonAscent()
Case 621
returnMove = New Moves.Dark.HyperspaceFury()
'------------------------------------------------BEGIN Z MOVE STREAK 1
'Case 622
'Breakneck Blitz - Physical
'Case 623
'Breakneck Blitz - Special
'Case 624
'All-Out Pummeling - Physical
'Case 625
'All-Out Pummeling - Special
'Case 626
'Supersonic Skystrike - Physical
'Case 627
'Supersonic Skystrike - Special
'Case 628
'Acid Downpour - Physical
'Case 629
'Acid Downpour - Special
'Case 630
'Tectonic Rage - Physical
'Case 631
'Tectonic Rage - Special
'Case 632
'Continental Crush - Physical
'Case 633
'Continental Crush - Special
'Case 634
'Savage Spin-Out - Physical
'Case 635
'Savage Spin-Out - Special
'Case 636
'Never-Ending Nightmare - Physical
'Case 637
'Never-Ending Nightmare - Special
'Case 638
'Corkscrew Crash - Physical
'Case 639
'Corkscrew Crash - Special
'Case 640
'Inferno Overdrive - Physical
'Case 641
'Inferno Overdrive - Special
'Case 642
'Hydro Vortex - Physical
'Case 643
'Hydro Vortex - Special
'Case 644
'Bloom Doom - Physical
'Case 645
'Bloom Doom - Special
'Case 646
'Gigavolt Havoc - Physical
'Case 647
'Gigavolt Havoc - Special
'Case 648
'Shattered Psyche - Physical
'Case 649
'Shattered Psyche - Special
'Case 650
'Subzero Slammer - Physical
'Case 651
'Subzero Slammer - Special
'Case 652
'Devastating Drake - Physical
'Case 653
'Devastating Drake - Special
'Case 654
'Black Hole Eclipse - Physical
'Case 655
'Black Hole Eclipse - Special
'Case 656
'Twinkle Tackle - Physical
'Case 657
'Twinkle Tackle - Special
'Case 658
'Catastropika
'------------------------------------------------END Z MOVE STREAK 1
Case 659
returnMove = New Moves.Ground.ShoreUp()
Case 660
returnMove = New Moves.Bug.FirstImpression()
'Case 661
'Baneful Bunker
Case 662
returnMove = New Moves.Ghost.SpiritShackle()
Case 663
returnMove = New Moves.Dark.DarkestLariat()
Case 664
returnMove = New Moves.Water.SparklingAria()
Case 665
returnMove = New Moves.Ice.IceHammer()
'Case 666
'Floral Healing - Double Battles
Case 667
returnMove = New Moves.Ground.HighHorsepower()
Case 668
returnMove = New Moves.Grass.StrengthSap()
Case 669
returnMove = New Moves.Grass.SolarBlade()
Case 670
returnMove = New Moves.Grass.Leafage()
'Case 671
'Spotlight
Case 672
returnMove = New Moves.Poison.ToxicThread()
'Case 673
'Laser Focus
Case 674
returnMove = New Moves.Steel.GearUp()
'Case 675
'Throat Chop
Case 676
returnMove = New Moves.Bug.PollenPuff()
Case 677
returnMove = New Moves.Steel.AnchorShot()
Case 678
returnMove = New Moves.Psychic.PsychicTerrain()
Case 679
returnMove = New Moves.Bug.Lunge()
Case 680
returnMove = New Moves.Fire.FireLash()
Case 681
returnMove = New Moves.Dark.PowerTrip()
Case 682
returnMove = New Moves.Fire.BurnUp()
'Case 683
'Speed Swap
Case 684
returnMove = New Moves.Steel.SmartStrike()
'Case 685
'Purify - Double Battles
Case 686
returnMove = New Moves.Normal.RevelationDance()
'Case 687
'Core Enforcer
Case 688
returnMove = New Moves.Grass.TropKick()
'Case 689
'Instruct
'Case 690
'Beak Blast
Case 691
returnMove = New Moves.Dragon.ClangingScales()
Case 692
returnMove = New Moves.Dragon.DragonHammer()
Case 693
returnMove = New Moves.Dark.BrutalSwing()
'Case 694
'Aurora Veil
'------------------------------------------------BEGIN Z MOVE STREAK 2
'Case 695
'Sinister Arrow Raid - Z-Move
'Case 696
'Malicious Moonsault - Z-Move
'Case 697
'Oceanic Operetta - Z-Move
'Case 698
'Guardian of Alola - Z-Move
'Case 699
'Soul-Stealing 7-Star Strike - Z-Move
'Case 700
'Stoked Sparksurfer - Z-Move
'Case 701
'Pulverizing Pancake - Z-Move
'Case 702
'Extreme Evoboost - Z-Move
'Case 703
'Genesis Supernova - Z-Move
'------------------------------------------------END Z MOVE STREAK 2
'Case 704
'Shell Trap
Case 705
returnMove = New Moves.Fairy.FleurCannon()
Case 706
returnMove = New Moves.Psychic.PsychicFangs()
'Case 707
'Stomping Tantrum
Case 708
returnMove = New Moves.Ghost.ShadowBone()
Case 709
returnMove = New Moves.Rock.Accelerock()
Case 710
returnMove = New Moves.Water.Liquidation()
Case 711
returnMove = New Moves.Psychic.PrismaticLaser()
'Case 712
'Spectral Thief
'Case 713
'returnMove = New Moves.Steel.SunsteelStrike()
'Case 714
'returnMove = New Moves.Ghost.MoongeistBeam()
Case 715
returnMove = New Moves.Normal.TearfulLook()
Case 716
returnMove = New Moves.Electric.ZingZap()
Case 717
returnMove = New Moves.Fairy.NaturesMadness()
'Case 718
'returnMove = New Moves.Normal.MultiAttack()
'Case 719
'10,000,000 Volt Thunderbolt - Z-Move
'Case 720
'returnMove = New Moves.Fire.MindBlown()
'Case 721
'Plasma Fists
'Case 722
'Photon Geyser
'------------------------------------------------BEGIN Z MOVE STREAK 3
'Case 723
'Light That Burns The Sky - Z-Move
'Case 724
'Searing Sunraze Smash - Z-Move
'Case 725
'Menacing Moonraze Maelstrom - Z-Move
'Case 726
'Let's Snuggle Forever - Z-Move
'Case 727
'Splintered Stormshards - Z-Move
'Case 728
'Clangorous Soulblaze - Z-Move
'------------------------------------------------END Z MOVE STREAK 3
'Case 729
'Blank
Case 999
If GameController.IS_DEBUG_ACTIVE = True Or Core.Player.SandBoxMode = True Then
returnMove = New Moves.Special.TheDerpMove()
Else
returnMove = New Moves.Normal.Pound()
End If
Case 9999
returnMove = New Moves.Fighting.FlyingPress()
Case Else
'Try to load a GameMode move.
Dim gameModeMove As Attack = GameModeAttackLoader.GetAttackByID(ID)
If Not gameModeMove Is Nothing And GameModeManager.ActiveGameMode.IsDefaultGamemode = False Then
returnMove = gameModeMove.Copy()
Else
returnMove = New Moves.Normal.Pound()
returnMove.IsDefaultMove = True
End If
End Select
returnMove.OriginalID = ID
Return returnMove
End Function
Public Function GetEffectChance(ByVal i As Integer, ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Integer
Dim chance As Integer = Me.EffectChances(i)
If Me.HasSecondaryEffect = True Then
Dim p As Pokemon = BattleScreen.OwnPokemon
If own = False Then
p = BattleScreen.OppPokemon
End If
If p.Ability.Name.ToLower() = "serene grace" Then
chance *= 2
End If
Dim waterPledge As Integer = BattleScreen.FieldEffects.OwnWaterPledge
If own = False Then
waterPledge = BattleScreen.FieldEffects.OppWaterPledge
End If
If waterPledge > 0 Then
chance *= 2
End If
End If
chance = chance.Clamp(0, 100)
Return chance
End Function
''' <summary>
''' Gets called prior to using the attack.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Sub PreAttack(ByVal Own As Boolean, ByVal BattleScreen As BattleScreen)
'DO NOTHING HERE
End Sub
''' <summary>
''' If the move fails prior to using it. Return True for failing.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Function MoveFailBeforeAttack(ByVal Own As Boolean, ByVal BattleScreen As BattleScreen) As Boolean
'DO NOTHING HERE
Return False
End Function
''' <summary>
''' Returns the BasePower of this move. Defaults to Power.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Function GetBasePower(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Integer
Return Me.Power
End Function
''' <summary>
''' Returns the calculated damage of this move.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Function GetDamage(ByVal Critical As Boolean, ByVal Own As Boolean, ByVal targetPokemon As Boolean, ByVal BattleScreen As BattleScreen, Optional ByVal ExtraParameter As String = "") As Integer
Return BattleCalculation.CalculateDamage(Me, Critical, Own, targetPokemon, BattleScreen, ExtraParameter)
End Function
''' <summary>
''' Returns how many times this move is getting used in a row.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Function GetTimesToAttack(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Integer
Return Me.TimesToAttack
End Function
''' <summary>
''' Event that occurs when the move connects.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Sub MoveHits(ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
If Me.IsGameModeMove = True Then
AttackSpecialFunctions.ExecuteAttackFunction(Me, own, BattleScreen)
Else
'DO NOTHING HERE (will do secondary effect if moves overrides it)
End If
End Sub
Public Overridable Sub MoveRecoil(ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
'DO NOTHING HERE (will do recoil if moves overrides it)
End Sub
Public Overridable Sub MoveRecharge(ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
'DO NOTHING HERE (will do a one turn recharge if moves overrides it)
End Sub
Public Overridable Sub MoveMultiTurn(ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
'DO NOTHING HERE (will do the multi turn countdown if moves overrides it)
End Sub
Public Overridable Sub MoveSwitch(ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
'DO NOTHING HERE (will force user switching if moves overrides it)
End Sub
''' <summary>
''' Event that occurs when the move misses its target.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Sub MoveMisses(ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
'DO NOTHING HERE
End Sub
''' <summary>
''' If the move gets blocked by a protection move.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Sub MoveProtectedDetected(ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
'DO NOTHING HERE
End Sub
''' <summary>
''' Event that occurs when the move has no effect on the target.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Sub MoveHasNoEffect(ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
'DO NOTHING HERE
End Sub
''' <summary>
''' Returns the type of the move. Defaults to the Type field.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Function GetAttackType(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Element
Dim p As Pokemon = BattleScreen.OwnPokemon
If own = False Then
p = BattleScreen.OppPokemon
End If
If p.Ability.Name.ToLower() = "normalize" Then
Return New Element(Element.Types.Normal)
End If
If Me.Type.Type = Element.Types.Normal Then
If p.Ability.Name.ToLower() = "pixilate" Then
Return New Element(Element.Types.Fairy)
ElseIf p.Ability.Name.ToLower() = "refrigerate" Then
Return New Element(Element.Types.Ice)
ElseIf p.Ability.Name.ToLower() = "aerilate" Then
Return New Element(Element.Types.Flying)
ElseIf p.Ability.Name.ToLower() = "galvanize" Then
Return New Element(Element.Types.Electric)
End If
End If
Return Me.Type
End Function
''' <summary>
''' Returns the accuracy of this move.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Function GetAccuracy(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Integer
Return Me.Accuracy
End Function
''' <summary>
''' If the PP of this move should get deducted when using it. Default is True.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Function DeductPP(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Boolean
Return True
End Function
''' <summary>
''' If the Accuracy and Evasion parameters of Pokémon and moves should get used for this attack.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Function GetUseAccEvasion(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Boolean
Return Me.UseAccEvasion
End Function
''' <summary>
''' Event that occurs when the move gets selected in the menu.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Sub MoveSelected(ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
'DO NOTHING
End Sub
''' <summary>
''' Event that occurs before this move deals damage.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Sub BeforeDealingDamage(ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
'DO NOTHING
End Sub
''' <summary>
''' Event that occurs when this move's damage gets absorbed by a substitute.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Sub AbsorbedBySubstitute(ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
'DO NOTHING
End Sub
''' <summary>
''' Event that occurs when the Soundproof ability blocks this move.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Sub MoveFailsSoundproof(ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
'DO NOTHING
End Sub
''' <summary>
''' Event that occurs when a flinch has been inflicted.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Sub InflictedFlinch(ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
'DO NOTHING
End Sub
''' <summary>
''' Event that occurs when the pokemon has hurt itself in confusion.
''' </summary>
''' <param name="Own">If the own Pokémon is confused.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Sub HurtItselfInConfusion(ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
'DO NOTHING
End Sub
''' <summary>
''' Event that occurs when the pokemon has falls in love with the opponent.
''' </summary>
''' <param name="Own">If the own Pokémon is in love.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Sub IsAttracted(ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
'DO NOTHING
End Sub
''' <summary>
''' Event that occurs when a the pokemon has been put to sleep.
''' </summary>
''' <param name="Own">If the own Pokémon used the move.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Overridable Sub IsSleeping(ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
'DO NOTHING
End Sub
''' <summary>
''' Returns the attack stat of a Pokémon (Physical or Special).
''' </summary>
''' <param name="p">The Pokémon that used the move.</param>
Public Overridable Function GetUseAttackStat(ByVal p As Pokemon) As Integer
If Me.Category = Categories.Physical Then
Return p.Attack
Else
Return p.SpAttack
End If
End Function
''' <summary>
''' Returns the defense stat of a Pokémon (Physical or Special).
''' </summary>
''' <param name="p">The Pokémon that used the move.</param>
Public Overridable Function GetUseDefenseStat(ByVal p As Pokemon) As Integer
If Me.Category = Categories.Physical Then
Return p.Defense
Else
Return p.SpDefense
End If
End Function
''' <summary>
''' If the AI is allowed to use this move.
''' </summary>
''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Function AIUseMove(ByVal BattleScreen As BattleScreen) As Boolean
Return True
End Function
#Region "Animation"
Public Sub UserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen)
If Core.Player.ShowBattleAnimations = 1 Then
Me.InternalUserPokemonMoveAnimation(BattleScreen)
End If
End Sub
Public Overridable Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen)
'Override this method in the attack class to insert the move animation query objects into the queue.
End Sub
Public Sub OpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen)
If Core.Player.ShowBattleAnimations = 1 Then
Me.InternalOpponentPokemonMoveAnimation(BattleScreen)
End If
End Sub
Public Overridable Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen)
'Override this method in the attack class to insert the move animation query objects into the queue.
End Sub
#End Region
''' <summary>
''' Returns a copy of this move.
''' </summary>
Public Function Copy() As Attack
Dim m As Attack
If Me.IsGameModeMove = True Then
m = GameModeAttackLoader.GetAttackByID(Me.ID)
Else
m = GetAttackByID(Me.ID)
End If
'Set definition properties:
m.OriginalPP = Me.OriginalPP
m.CurrentPP = Me.CurrentPP
m.MaxPP = Me.MaxPP
m.OriginalID = Me.OriginalID
Return m
End Function
''' <summary>
''' Builds an instance of AttackV2 with PP and MaxPP set.
''' </summary>
''' <param name="InputData">Data in the format "ID,MaxPP,CurrentPP"</param>
Public Shared Function ConvertStringToAttack(ByVal InputData As String) As Attack
If InputData <> "" Then
Dim Data() As String = InputData.Split(CChar(","))
Dim a As Attack = GetAttackByID(CInt(Data(0)))
If Not a Is Nothing Then
a.MaxPP = CInt(Data(1))
a.CurrentPP = CInt(Data(2))
End If
Return a
Else
Return Nothing
End If
End Function
''' <summary>
''' Raises the PP of the move by one stage.
''' </summary>
Public Function RaisePP() As Boolean
Select Case Me.OriginalPP
Case 5
Select Case Me.MaxPP
Case 5, 6, 7
Me.CurrentPP += 1
Me.MaxPP += 1
Return True
End Select
Case 10
Select Case Me.MaxPP
Case 10, 12, 14
Me.CurrentPP += 2
Me.MaxPP += 2
Return True
End Select
Case 15
Select Case Me.MaxPP
Case 15, 18, 21
Me.CurrentPP += 3
Me.MaxPP += 3
Return True
End Select
Case 20
Select Case Me.MaxPP
Case 20, 24, 28
Me.CurrentPP += 4
Me.MaxPP += 4
Return True
End Select
Case 25
Select Case Me.MaxPP
Case 25, 30, 35
Me.CurrentPP += 5
Me.MaxPP += 5
Return True
End Select
Case 30
Select Case Me.MaxPP
Case 30, 36, 42
Me.CurrentPP += 6
Me.MaxPP += 6
Return True
End Select
Case 35
Select Case Me.MaxPP
Case 35, 42, 49
Me.CurrentPP += 7
Me.MaxPP += 7
Return True
End Select
Case 40
Select Case Me.MaxPP
Case 40, 48, 56
Me.CurrentPP += 8
Me.MaxPP += 8
Return True
End Select
End Select
Me.CurrentPP = CInt(MathHelper.Clamp(Me.CurrentPP, 0, Me.MaxPP))
Return False
End Function
''' <summary>
''' Returns the texture representing the category of this move.
''' </summary>
Public Function GetDamageCategoryImage() As Texture2D
Dim r As New Rectangle(0, 0, 0, 0)
Select Case Me.Category
Case Categories.Physical
r = New Rectangle(115, 0, 28, 14)
Case Categories.Special
r = New Rectangle(115, 14, 28, 14)
Case Categories.Status
r = New Rectangle(115, 28, 28, 14)
End Select
Return TextureManager.GetTexture("GUI\Menus\Types", r, "")
End Function
''' <summary>
''' Returns a saveable string.
''' </summary>
Public Overrides Function ToString() As String
Return Me.OriginalID.ToString() & "," & Me.MaxPP.ToString() & "," & Me.CurrentPP.ToString()
End Function
End Class
End Namespace