Namespace BattleSystem ''' ''' Represents a Pokémon's move. ''' 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 ''' ''' The target for an attack. ''' 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 ''' ''' Returns a new instance of AttackV2 based on the input ID. ''' ''' The ID of the Move to return. 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 ''' ''' Gets called prior to using the attack. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. Public Overridable Sub PreAttack(ByVal Own As Boolean, ByVal BattleScreen As BattleScreen) 'DO NOTHING HERE End Sub ''' ''' If the move fails prior to using it. Return True for failing. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. Public Overridable Function MoveFailBeforeAttack(ByVal Own As Boolean, ByVal BattleScreen As BattleScreen) As Boolean 'DO NOTHING HERE Return False End Function ''' ''' Returns the BasePower of this move. Defaults to Power. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. Public Overridable Function GetBasePower(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Integer Return Me.Power End Function ''' ''' Returns the calculated damage of this move. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. 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 ''' ''' Returns how many times this move is getting used in a row. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. Public Overridable Function GetTimesToAttack(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Integer Return Me.TimesToAttack End Function ''' ''' Event that occurs when the move connects. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. 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 ''' ''' Event that occurs when the move misses its target. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. Public Overridable Sub MoveMisses(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) 'DO NOTHING HERE End Sub ''' ''' If the move gets blocked by a protection move. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. Public Overridable Sub MoveProtectedDetected(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) 'DO NOTHING HERE End Sub ''' ''' Event that occurs when the move has no effect on the target. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. Public Overridable Sub MoveHasNoEffect(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) 'DO NOTHING HERE End Sub ''' ''' Returns the type of the move. Defaults to the Type field. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. 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 ''' ''' Returns the accuracy of this move. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. Public Overridable Function GetAccuracy(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Integer Return Me.Accuracy End Function ''' ''' If the PP of this move should get deducted when using it. Default is True. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. Public Overridable Function DeductPP(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Boolean Return True End Function ''' ''' If the Accuracy and Evasion parameters of Pokémon and moves should get used for this attack. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. Public Overridable Function GetUseAccEvasion(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Boolean Return Me.UseAccEvasion End Function ''' ''' Event that occurs when the move gets selected in the menu. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. Public Overridable Sub MoveSelected(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) 'DO NOTHING End Sub ''' ''' Event that occurs before this move deals damage. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. Public Overridable Sub BeforeDealingDamage(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) 'DO NOTHING End Sub ''' ''' Event that occurs when this move's damage gets absorbed by a substitute. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. Public Overridable Sub AbsorbedBySubstitute(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) 'DO NOTHING End Sub ''' ''' Event that occurs when the Soundproof ability blocks this move. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. Public Overridable Sub MoveFailsSoundproof(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) 'DO NOTHING End Sub ''' ''' Event that occurs when a flinch has been inflicted. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. Public Overridable Sub InflictedFlinch(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) 'DO NOTHING End Sub ''' ''' Event that occurs when the pokemon has hurt itself in confusion. ''' ''' If the own Pokémon is confused. ''' Reference to the BattleScreen. Public Overridable Sub HurtItselfInConfusion(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) 'DO NOTHING End Sub ''' ''' Event that occurs when the pokemon has falls in love with the opponent. ''' ''' If the own Pokémon is in love. ''' Reference to the BattleScreen. Public Overridable Sub IsAttracted(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) 'DO NOTHING End Sub ''' ''' Event that occurs when a the pokemon has been put to sleep. ''' ''' If the own Pokémon used the move. ''' Reference to the BattleScreen. Public Overridable Sub IsSleeping(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) 'DO NOTHING End Sub ''' ''' Returns the attack stat of a Pokémon (Physical or Special). ''' ''' The Pokémon that used the move. 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 ''' ''' Returns the defense stat of a Pokémon (Physical or Special). ''' ''' The Pokémon that used the move. 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 ''' ''' If the AI is allowed to use this move. ''' ''' Reference to the BattleScreen. 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 ''' ''' Returns a copy of this move. ''' 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 ''' ''' Builds an instance of AttackV2 with PP and MaxPP set. ''' ''' Data in the format "ID,MaxPP,CurrentPP" 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 ''' ''' Raises the PP of the move by one stage. ''' 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 ''' ''' Returns the texture representing the category of this move. ''' 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 ''' ''' Returns a saveable string. ''' Public Overrides Function ToString() As String Return Me.OriginalID.ToString() & "," & Me.MaxPP.ToString() & "," & Me.CurrentPP.ToString() End Function End Class End Namespace