From 1fa9a054703bda4a2735d35553506b7c878e4810 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Mon, 3 Jul 2023 04:01:59 -0400 Subject: [PATCH] Convert move flags and bans into GCC bitfields (#2952) * Slicing moves to new bitfield * Wind moves to new bitfield * Two-strike moves to new bitfield * Forgot to add flagTwoStrikes to battle_moves.h * Removed "flag" from field names * FLAG_HIT_IN_SUBSTITUTE and FLAG_THAW_USER * Airborne moves * FLAG_POWDER, FLAG_TARGET_ABILITY_IGNORED and FLAG_DANCE * FLAG_BALLISTIC and FLAG_PROTECTION_MOVE * Fixed missing uses of MOVE_UNAVAILABLE in battle_ai_util.c * FLAG_SOUND * FLAG_DMG_UNDERGROUND and FLAG_DMG_UNDERWATER * FLAG_DMG_MINIMIZE * Cleanup * FLAG_STAT_STAGES_IGNORED * Updated Pollen Puff's ballistic flag * FLAG_STRONG_JAW_BOOST and FLAG_MEGA_LAUNCHER_BOOST * thaw * FLAG_THREE_STRIKES * FLAG_IRON_FIST_BOOST * FLAG_RECKLESS_BOOST * FLAG_HIGH_CRIT * Removed empty flags * Moves that fail when called by Me First + added missing Shell Trap * Moves that fail when Gravity is active * Better names for banned fields * Moves that fail when called by Instruct * Cleanup * Contact Moves + Fixed Wandering Spirit skipping contact checks * Inverted FLAG_PROTECT_AFFECTED so that there's a flag for moves that SKIP protect. * Simplified B_MOVE_FLAGS configs * FORBIDDEN_METRONOME * Renamed hitsPastSubstitute to ignoresSubstitute * FORBIDDEN_PARENTAL_BOND * Struggle uncallable by Metronome * FORBIDDEN_MIMIC * FLAG_KINGS_ROCK_AFFECTED * Made a single config for move flags * Macro for checking move flags * FLAG_MAGIC_COAT_AFFECTED * Fixed HasMagicCoatAffectedMove * FLAG_SNATCH_AFFECTED * Removed unused EFFECT_FLINCH_MINIMIZE_HIT * Fixed Stench/King's Rock interaction * Removed sMovesNotAffectedByStench in favor of checking move effects * Removed EFFECT_TWISTER, which was a repeat of EFFECT_FLINCH_HIT * Changed Gen2 configs to less than Gen 3 * FORBIDDEN_SLEEP_TALK * Cleanup * Inverted FLAG_MIRROR_MOVE_AFFECTED * FLAG_SHEER_FORCE_BOOST * Ordered * FORBIDDEN_ASSIST and FORBIDDEN_COPYCAT * Removed TestMoveFlags and TestMoveFlagsInMoveset + flags field * Fixed Triple Arrows test --- data/battle_scripts_1.s | 8 - include/battle.h | 7 +- include/battle_ai_util.h | 8 +- include/battle_util.h | 1 - include/config/battle.h | 1 + include/constants/battle_move_effects.h | 528 +++-- include/constants/pokemon.h | 33 - include/pokemon.h | 39 +- src/battle_ai_main.c | 38 +- src/battle_ai_util.c | 164 +- src/battle_main.c | 3 +- src/battle_script_commands.c | 353 +-- src/battle_tv.c | 8 +- src/battle_util.c | 173 +- src/data/battle_moves.h | 2590 ++++++++++++----------- test/ability_cute_charm.c | 6 +- test/ability_damp.c | 2 +- test/ability_flame_body.c | 6 +- test/ability_magic_bounce.c | 4 +- test/ability_poison_point.c | 6 +- test/ability_static.c | 6 +- test/ability_stench.c | 1 - test/move.c | 2 +- test/move_effect_beak_blast.c | 8 +- test/move_effect_recoil_if_miss.c | 2 +- test/move_effect_triple_arrows.c | 2 +- test/move_flag_three_strikes.c | 4 +- test/powder_moves.c | 6 +- test/status1.c | 2 +- test/test_battle.h | 2 +- 30 files changed, 1906 insertions(+), 2107 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 707cb2d6ab..29bada2044 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -166,11 +166,9 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectPsychUp @ EFFECT_PSYCH_UP .4byte BattleScript_EffectMirrorCoat @ EFFECT_MIRROR_COAT .4byte BattleScript_EffectSkullBash @ EFFECT_SKULL_BASH - .4byte BattleScript_EffectTwister @ EFFECT_TWISTER .4byte BattleScript_EffectEarthquake @ EFFECT_EARTHQUAKE .4byte BattleScript_EffectFutureSight @ EFFECT_FUTURE_SIGHT .4byte BattleScript_EffectGust @ EFFECT_GUST - .4byte BattleScript_EffectStomp @ EFFECT_FLINCH_MINIMIZE_HIT .4byte BattleScript_EffectSolarBeam @ EFFECT_SOLAR_BEAM .4byte BattleScript_EffectThunder @ EFFECT_THUNDER .4byte BattleScript_EffectTeleport @ EFFECT_TELEPORT @@ -5390,12 +5388,6 @@ BattleScript_SkullBashEnd:: call BattleScript_PowerHerbActivation goto BattleScript_TwoTurnMovesSecondTurn -BattleScript_EffectTwister: -BattleScript_FlinchEffect: -BattleScript_EffectStomp: - setmoveeffect MOVE_EFFECT_FLINCH - goto BattleScript_EffectHit - BattleScript_EffectBulldoze: setmoveeffect MOVE_EFFECT_SPD_MINUS_1 BattleScript_EffectEarthquake: diff --git a/include/battle.h b/include/battle.h index ca099379f6..5ad99673f8 100644 --- a/include/battle.h +++ b/include/battle.h @@ -685,6 +685,12 @@ struct BattleStruct #define IS_MOVE_SPECIAL(move)(GetBattleMoveSplit(move) == SPLIT_SPECIAL) #define IS_MOVE_STATUS(move)(gBattleMoves[move].split == SPLIT_STATUS) +#define IS_MOVE_RECOIL(move)(gBattleMoves[move].effect == EFFECT_RECOIL_25 \ + || gBattleMoves[move].effect == EFFECT_RECOIL_IF_MISS \ + || gBattleMoves[move].effect == EFFECT_RECOIL_50 \ + || gBattleMoves[move].effect == EFFECT_RECOIL_33 \ + || gBattleMoves[move].effect == EFFECT_RECOIL_33_STATUS) + #define BATTLER_MAX_HP(battlerId)(gBattleMons[battlerId].hp == gBattleMons[battlerId].maxHP) #define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0)) #define BATTLER_DAMAGED(battlerId) ((gSpecialStatuses[battlerId].physicalDmg != 0 || gSpecialStatuses[battlerId].specialDmg != 0)) @@ -703,7 +709,6 @@ struct BattleStruct gBattleMons[battlerId].type3 = TYPE_MYSTERY; \ } - #define IS_BATTLER_PROTECTED(battlerId)(gProtectStructs[battlerId].protected \ || gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_WIDE_GUARD \ || gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_QUICK_GUARD \ diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h index 67ff6968e2..99eb03f548 100644 --- a/include/battle_ai_util.h +++ b/include/battle_ai_util.h @@ -98,7 +98,6 @@ bool32 HasMoveWithType(u32 battler, u8 type); bool32 HasMoveWithTypeAndSplit(u32 battler, u8 type, u8 split); bool32 HasMoveEffect(u32 battlerId, u16 moveEffect); bool32 HasMoveWithLowAccuracy(u8, u8, u8, bool32, u16, u16, u16, u16); -bool32 TestMoveFlagsInMoveset(u8 battler, u32 flags); bool32 IsAromaVeilProtectedMove(u16 move); bool32 IsNonVolatileStatusMoveEffect(u16 moveEffect); bool32 IsStatLoweringMoveEffect(u16 moveEffect); @@ -107,7 +106,6 @@ bool32 IsMoveEncouragedToHit(u8 battlerAtk, u8 battlerDef, u16 move); bool32 IsHazardMoveEffect(u16 moveEffect); bool32 MoveCallsOtherMove(u16 move); bool32 MoveRequiresRecharging(u16 move); -bool32 IsInstructBannedMove(u16 move); bool32 IsEncoreEncouragedEffect(u16 moveEffect); void ProtectChecks(u8 battlerAtk, u8 battlerDef, u16 move, u16 predictedMove, s16 *score); bool32 ShouldSetSandstorm(u8 battler, u16 ability, u16 holdEffect); @@ -121,13 +119,17 @@ bool32 HasHealingEffect(u32 battler); bool32 IsTrappingMoveEffect(u16 effect); bool32 HasTrappingMoveEffect(u8 battler); bool32 ShouldFakeOut(u8 battlerAtk, u8 battlerDef, u16 move); -bool32 HasThawingMove(u8 battlerId); +bool32 HasThawingMove(u8 battler); bool32 IsStatRaisingEffect(u16 effect); bool32 IsStatLoweringEffect(u16 effect); bool32 IsStatRaisingEffect(u16 effect); bool32 IsAttackBoostMoveEffect(u16 effect); bool32 IsUngroundingEffect(u16 effect); bool32 IsSemiInvulnerable(u8 battlerDef, u16 move); +bool32 HasSoundMove(u8 battler); +bool32 HasHighCritRatioMove(u8 battler); +bool32 HasMagicCoatAffectedMove(u8 battler); +bool32 HasSnatchAffectedMove(u8 battler); // status checks bool32 AI_CanBeBurned(u8 battler, u16 ability); diff --git a/include/battle_util.h b/include/battle_util.h index ba3b528269..b1d0eeb1a4 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -185,7 +185,6 @@ void ClearIllusionMon(u32 battlerId); bool32 SetIllusionMon(struct Pokemon *mon, u32 battlerId); bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 battlerId); u8 GetBattleMoveSplit(u32 moveId); -bool32 TestMoveFlags(u16 move, u32 flag); bool32 CanFling(u8 battlerId); bool32 IsTelekinesisBannedSpecies(u16 species); bool32 IsHealBlockPreventingMove(u32 battler, u32 move); diff --git a/include/config/battle.h b/include/config/battle.h index 799be9982d..d92c1e2a7a 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -59,6 +59,7 @@ // Move data settings #define B_UPDATED_MOVE_DATA GEN_LATEST // Updates move data in gBattleMoves, including Power, Accuracy, PP, stat changes, targets and chances of secondary effects. #define B_UPDATED_MOVE_TYPES GEN_LATEST // Updates move types. +#define B_UPDATED_MOVE_FLAGS GEN_LATEST // Updates move flags. #define B_PHYSICAL_SPECIAL_SPLIT GEN_LATEST // In Gen3, the move's type determines if it will do physical or special damage. The split icon in the summary will reflect this. #define B_RECOIL_IF_MISS_DMG GEN_LATEST // In Gen5+, Jump Kick and High Jump Kick will always do half of the user's max HP when missing. #define B_KLUTZ_FLING_INTERACTION GEN_LATEST // In Gen5+, Pokémon with the Klutz ability can't use Fling. diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index 4f106302a6..c10f6d942a 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -145,273 +145,271 @@ #define EFFECT_PSYCH_UP 141 #define EFFECT_MIRROR_COAT 142 #define EFFECT_SKULL_BASH 143 -#define EFFECT_TWISTER 144 -#define EFFECT_EARTHQUAKE 145 -#define EFFECT_FUTURE_SIGHT 146 -#define EFFECT_GUST 147 -#define EFFECT_FLINCH_MINIMIZE_HIT 148 -#define EFFECT_SOLAR_BEAM 149 -#define EFFECT_THUNDER 150 -#define EFFECT_TELEPORT 151 -#define EFFECT_BEAT_UP 152 -#define EFFECT_SEMI_INVULNERABLE 153 -#define EFFECT_DEFENSE_CURL 154 -#define EFFECT_SOFTBOILED 155 -#define EFFECT_FAKE_OUT 156 -#define EFFECT_UPROAR 157 -#define EFFECT_STOCKPILE 158 -#define EFFECT_SPIT_UP 159 -#define EFFECT_SWALLOW 160 -#define EFFECT_WORRY_SEED 161 -#define EFFECT_HAIL 162 -#define EFFECT_TORMENT 163 -#define EFFECT_FLATTER 164 -#define EFFECT_WILL_O_WISP 165 -#define EFFECT_MEMENTO 166 -#define EFFECT_FACADE 167 -#define EFFECT_FOCUS_PUNCH 168 -#define EFFECT_SMELLINGSALT 169 -#define EFFECT_FOLLOW_ME 170 -#define EFFECT_NATURE_POWER 171 -#define EFFECT_CHARGE 172 -#define EFFECT_TAUNT 173 -#define EFFECT_HELPING_HAND 174 -#define EFFECT_TRICK 175 -#define EFFECT_ROLE_PLAY 176 -#define EFFECT_WISH 177 -#define EFFECT_ASSIST 178 -#define EFFECT_INGRAIN 179 -#define EFFECT_SUPERPOWER 180 -#define EFFECT_MAGIC_COAT 181 -#define EFFECT_RECYCLE 182 -#define EFFECT_REVENGE 183 -#define EFFECT_BRICK_BREAK 184 -#define EFFECT_YAWN 185 -#define EFFECT_KNOCK_OFF 186 -#define EFFECT_ENDEAVOR 187 -#define EFFECT_ERUPTION 188 -#define EFFECT_SKILL_SWAP 189 -#define EFFECT_IMPRISON 190 -#define EFFECT_REFRESH 191 -#define EFFECT_GRUDGE 192 -#define EFFECT_SNATCH 193 -#define EFFECT_LOW_KICK 194 -#define EFFECT_SECRET_POWER 195 -#define EFFECT_RECOIL_33 196 -#define EFFECT_TEETER_DANCE 197 -#define EFFECT_HIT_ESCAPE 198 -#define EFFECT_MUD_SPORT 199 -#define EFFECT_POISON_FANG 200 -#define EFFECT_WEATHER_BALL 201 -#define EFFECT_OVERHEAT 202 -#define EFFECT_TICKLE 203 -#define EFFECT_COSMIC_POWER 204 -#define EFFECT_SKY_UPPERCUT 205 -#define EFFECT_BULK_UP 206 -#define EFFECT_PLACEHOLDER 207 -#define EFFECT_WATER_SPORT 208 -#define EFFECT_CALM_MIND 209 -#define EFFECT_DRAGON_DANCE 210 -#define EFFECT_CAMOUFLAGE 211 +#define EFFECT_EARTHQUAKE 144 +#define EFFECT_FUTURE_SIGHT 145 +#define EFFECT_GUST 146 +#define EFFECT_SOLAR_BEAM 147 +#define EFFECT_THUNDER 148 +#define EFFECT_TELEPORT 149 +#define EFFECT_BEAT_UP 150 +#define EFFECT_SEMI_INVULNERABLE 151 +#define EFFECT_DEFENSE_CURL 152 +#define EFFECT_SOFTBOILED 153 +#define EFFECT_FAKE_OUT 154 +#define EFFECT_UPROAR 155 +#define EFFECT_STOCKPILE 156 +#define EFFECT_SPIT_UP 157 +#define EFFECT_SWALLOW 158 +#define EFFECT_WORRY_SEED 159 +#define EFFECT_HAIL 160 +#define EFFECT_TORMENT 161 +#define EFFECT_FLATTER 162 +#define EFFECT_WILL_O_WISP 163 +#define EFFECT_MEMENTO 164 +#define EFFECT_FACADE 165 +#define EFFECT_FOCUS_PUNCH 166 +#define EFFECT_SMELLINGSALT 167 +#define EFFECT_FOLLOW_ME 168 +#define EFFECT_NATURE_POWER 169 +#define EFFECT_CHARGE 170 +#define EFFECT_TAUNT 171 +#define EFFECT_HELPING_HAND 172 +#define EFFECT_TRICK 173 +#define EFFECT_ROLE_PLAY 174 +#define EFFECT_WISH 175 +#define EFFECT_ASSIST 176 +#define EFFECT_INGRAIN 177 +#define EFFECT_SUPERPOWER 178 +#define EFFECT_MAGIC_COAT 179 +#define EFFECT_RECYCLE 180 +#define EFFECT_REVENGE 181 +#define EFFECT_BRICK_BREAK 182 +#define EFFECT_YAWN 183 +#define EFFECT_KNOCK_OFF 184 +#define EFFECT_ENDEAVOR 185 +#define EFFECT_ERUPTION 186 +#define EFFECT_SKILL_SWAP 187 +#define EFFECT_IMPRISON 188 +#define EFFECT_REFRESH 189 +#define EFFECT_GRUDGE 190 +#define EFFECT_SNATCH 191 +#define EFFECT_LOW_KICK 192 +#define EFFECT_SECRET_POWER 193 +#define EFFECT_RECOIL_33 194 +#define EFFECT_TEETER_DANCE 195 +#define EFFECT_HIT_ESCAPE 196 +#define EFFECT_MUD_SPORT 197 +#define EFFECT_POISON_FANG 198 +#define EFFECT_WEATHER_BALL 199 +#define EFFECT_OVERHEAT 200 +#define EFFECT_TICKLE 201 +#define EFFECT_COSMIC_POWER 202 +#define EFFECT_SKY_UPPERCUT 203 +#define EFFECT_BULK_UP 204 +#define EFFECT_PLACEHOLDER 205 +#define EFFECT_WATER_SPORT 206 +#define EFFECT_CALM_MIND 207 +#define EFFECT_DRAGON_DANCE 208 +#define EFFECT_CAMOUFLAGE 209 // New move effects -#define EFFECT_PLEDGE 212 -#define EFFECT_FLING 213 -#define EFFECT_NATURAL_GIFT 214 -#define EFFECT_WAKE_UP_SLAP 215 -#define EFFECT_WRING_OUT 216 -#define EFFECT_HEX 217 -#define EFFECT_ASSURANCE 218 -#define EFFECT_TRUMP_CARD 219 -#define EFFECT_ACROBATICS 220 -#define EFFECT_HEAT_CRASH 221 -#define EFFECT_PUNISHMENT 222 -#define EFFECT_STORED_POWER 223 -#define EFFECT_ELECTRO_BALL 224 -#define EFFECT_GYRO_BALL 225 -#define EFFECT_ECHOED_VOICE 226 -#define EFFECT_PAYBACK 227 -#define EFFECT_ROUND 228 -#define EFFECT_BRINE 229 -#define EFFECT_VENOSHOCK 230 -#define EFFECT_RETALIATE 231 -#define EFFECT_BULLDOZE 232 -#define EFFECT_FOUL_PLAY 233 -#define EFFECT_PSYSHOCK 234 -#define EFFECT_ROOST 235 -#define EFFECT_GRAVITY 236 -#define EFFECT_MIRACLE_EYE 237 -#define EFFECT_TAILWIND 238 -#define EFFECT_EMBARGO 239 -#define EFFECT_AQUA_RING 240 -#define EFFECT_TRICK_ROOM 241 -#define EFFECT_WONDER_ROOM 242 -#define EFFECT_MAGIC_ROOM 243 -#define EFFECT_MAGNET_RISE 244 -#define EFFECT_TOXIC_SPIKES 245 -#define EFFECT_GASTRO_ACID 246 -#define EFFECT_STEALTH_ROCK 247 -#define EFFECT_TELEKINESIS 248 -#define EFFECT_POWER_SWAP 249 -#define EFFECT_GUARD_SWAP 250 -#define EFFECT_HEART_SWAP 251 -#define EFFECT_POWER_SPLIT 252 -#define EFFECT_GUARD_SPLIT 253 -#define EFFECT_STICKY_WEB 254 -#define EFFECT_METAL_BURST 255 -#define EFFECT_LUCKY_CHANT 256 -#define EFFECT_SUCKER_PUNCH 257 -#define EFFECT_SPECIAL_DEFENSE_DOWN_HIT_2 258 -#define EFFECT_SIMPLE_BEAM 259 -#define EFFECT_ENTRAINMENT 260 -#define EFFECT_HEAL_PULSE 261 -#define EFFECT_QUASH 262 -#define EFFECT_ION_DELUGE 263 -#define EFFECT_FREEZE_DRY 264 -#define EFFECT_TOPSY_TURVY 265 -#define EFFECT_MISTY_TERRAIN 266 -#define EFFECT_GRASSY_TERRAIN 267 -#define EFFECT_ELECTRIC_TERRAIN 268 -#define EFFECT_PSYCHIC_TERRAIN 269 -#define EFFECT_ATTACK_ACCURACY_UP 270 -#define EFFECT_ATTACK_SPATK_UP 271 -#define EFFECT_HURRICANE 272 -#define EFFECT_TWO_TYPED_MOVE 273 -#define EFFECT_ME_FIRST 274 -#define EFFECT_SPEED_UP_HIT 275 -#define EFFECT_QUIVER_DANCE 276 -#define EFFECT_COIL 277 -#define EFFECT_ELECTRIFY 278 -#define EFFECT_REFLECT_TYPE 279 -#define EFFECT_SOAK 280 -#define EFFECT_GROWTH 281 -#define EFFECT_CLOSE_COMBAT 282 -#define EFFECT_LAST_RESORT 283 -#define EFFECT_RECOIL_33_STATUS 284 -#define EFFECT_FLINCH_STATUS 285 -#define EFFECT_RECOIL_50 286 -#define EFFECT_SHELL_SMASH 287 -#define EFFECT_SHIFT_GEAR 288 -#define EFFECT_DEFENSE_UP_3 289 -#define EFFECT_NOBLE_ROAR 290 -#define EFFECT_VENOM_DRENCH 291 -#define EFFECT_TOXIC_THREAD 292 -#define EFFECT_CLEAR_SMOG 293 -#define EFFECT_HIT_SWITCH_TARGET 294 -#define EFFECT_FINAL_GAMBIT 295 -#define EFFECT_CHANGE_TYPE_ON_ITEM 296 -#define EFFECT_AUTOTOMIZE 297 -#define EFFECT_COPYCAT 298 -#define EFFECT_DEFOG 299 -#define EFFECT_HIT_ENEMY_HEAL_ALLY 300 -#define EFFECT_SMACK_DOWN 301 -#define EFFECT_SYNCHRONOISE 302 -#define EFFECT_PSYCHO_SHIFT 303 -#define EFFECT_POWER_TRICK 304 -#define EFFECT_FLAME_BURST 305 -#define EFFECT_AFTER_YOU 306 -#define EFFECT_BESTOW 307 -#define EFFECT_ROTOTILLER 308 -#define EFFECT_FLOWER_SHIELD 309 -#define EFFECT_HIT_PREVENT_ESCAPE 310 -#define EFFECT_SPEED_SWAP 311 -#define EFFECT_DEFENSE_UP2_HIT 312 -#define EFFECT_REVELATION_DANCE 313 -#define EFFECT_AURORA_VEIL 314 -#define EFFECT_THIRD_TYPE 315 -#define EFFECT_FEINT 316 -#define EFFECT_SPARKLING_ARIA 317 -#define EFFECT_ACUPRESSURE 318 -#define EFFECT_AROMATIC_MIST 319 -#define EFFECT_POWDER 320 -#define EFFECT_SP_ATTACK_UP_HIT 321 -#define EFFECT_BELCH 322 -#define EFFECT_PARTING_SHOT 323 -#define EFFECT_SPECTRAL_THIEF 324 -#define EFFECT_V_CREATE 325 -#define EFFECT_MAT_BLOCK 326 -#define EFFECT_STOMPING_TANTRUM 327 -#define EFFECT_CORE_ENFORCER 328 -#define EFFECT_INSTRUCT 329 -#define EFFECT_THROAT_CHOP 330 -#define EFFECT_LASER_FOCUS 331 -#define EFFECT_MAGNETIC_FLUX 332 -#define EFFECT_GEAR_UP 333 -#define EFFECT_INCINERATE 334 -#define EFFECT_BUG_BITE 335 -#define EFFECT_STRENGTH_SAP 336 -#define EFFECT_MIND_BLOWN 337 -#define EFFECT_PURIFY 338 -#define EFFECT_BURN_UP 339 -#define EFFECT_SHORE_UP 340 -#define EFFECT_GEOMANCY 341 -#define EFFECT_FAIRY_LOCK 342 -#define EFFECT_ALLY_SWITCH 343 -#define EFFECT_RELIC_SONG 344 -#define EFFECT_ATTACKER_DEFENSE_DOWN_HIT 345 -#define EFFECT_BODY_PRESS 346 -#define EFFECT_EERIE_SPELL 347 -#define EFFECT_JUNGLE_HEALING 348 -#define EFFECT_COACHING 349 -#define EFFECT_LASH_OUT 350 -#define EFFECT_GRASSY_GLIDE 351 -#define EFFECT_REMOVE_TERRAIN 352 -#define EFFECT_DYNAMAX_DOUBLE_DMG 353 -#define EFFECT_DECORATE 354 -#define EFFECT_SNIPE_SHOT 355 -#define EFFECT_RECOIL_HP_25 356 -#define EFFECT_STUFF_CHEEKS 357 -#define EFFECT_GRAV_APPLE 358 -#define EFFECT_EVASION_UP_HIT 359 -#define EFFECT_GLITZY_GLOW 360 -#define EFFECT_BADDY_BAD 361 -#define EFFECT_SAPPY_SEED 362 -#define EFFECT_FREEZY_FROST 363 -#define EFFECT_SPARKLY_SWIRL 364 -#define EFFECT_PLASMA_FISTS 365 -#define EFFECT_HYPERSPACE_FURY 366 -#define EFFECT_AURA_WHEEL 367 -#define EFFECT_PHOTON_GEYSER 368 -#define EFFECT_SHELL_SIDE_ARM 369 -#define EFFECT_TERRAIN_PULSE 370 -#define EFFECT_JAW_LOCK 371 -#define EFFECT_NO_RETREAT 372 -#define EFFECT_TAR_SHOT 373 -#define EFFECT_POLTERGEIST 374 -#define EFFECT_OCTOLOCK 375 -#define EFFECT_CLANGOROUS_SOUL 376 -#define EFFECT_BOLT_BEAK 377 -#define EFFECT_SKY_DROP 378 -#define EFFECT_EXPANDING_FORCE 379 -#define EFFECT_SCALE_SHOT 380 -#define EFFECT_METEOR_BEAM 381 -#define EFFECT_RISING_VOLTAGE 382 -#define EFFECT_BEAK_BLAST 383 -#define EFFECT_COURT_CHANGE 384 -#define EFFECT_STEEL_BEAM 385 -#define EFFECT_EXTREME_EVOBOOST 386 -#define EFFECT_HIT_SET_REMOVE_TERRAIN 387 // genesis supernova -#define EFFECT_DARK_VOID 388 -#define EFFECT_SLEEP_HIT 389 -#define EFFECT_DOUBLE_SHOCK 390 -#define EFFECT_SPECIAL_ATTACK_UP_HIT 391 -#define EFFECT_VICTORY_DANCE 392 -#define EFFECT_TEATIME 393 -#define EFFECT_ATTACK_UP_USER_ALLY 394 // Howl 8th Gen -#define EFFECT_SHELL_TRAP 395 -#define EFFECT_PSYBLADE 396 -#define EFFECT_HYDRO_STEAM 397 -#define EFFECT_HIT_SET_ENTRY_HAZARD 398 -#define EFFECT_DIRE_CLAW 399 -#define EFFECT_BARB_BARRAGE 400 -#define EFFECT_REVIVAL_BLESSING 401 -#define EFFECT_FROSTBITE_HIT 402 -#define EFFECT_SNOWSCAPE 403 -#define EFFECT_TRIPLE_ARROWS 404 -#define EFFECT_INFERNAL_PARADE 405 -#define EFFECT_TAKE_HEART 406 -#define EFFECT_AXE_KICK 407 +#define EFFECT_PLEDGE 210 +#define EFFECT_FLING 211 +#define EFFECT_NATURAL_GIFT 212 +#define EFFECT_WAKE_UP_SLAP 213 +#define EFFECT_WRING_OUT 214 +#define EFFECT_HEX 215 +#define EFFECT_ASSURANCE 216 +#define EFFECT_TRUMP_CARD 217 +#define EFFECT_ACROBATICS 218 +#define EFFECT_HEAT_CRASH 219 +#define EFFECT_PUNISHMENT 220 +#define EFFECT_STORED_POWER 221 +#define EFFECT_ELECTRO_BALL 222 +#define EFFECT_GYRO_BALL 223 +#define EFFECT_ECHOED_VOICE 224 +#define EFFECT_PAYBACK 225 +#define EFFECT_ROUND 226 +#define EFFECT_BRINE 227 +#define EFFECT_VENOSHOCK 228 +#define EFFECT_RETALIATE 229 +#define EFFECT_BULLDOZE 230 +#define EFFECT_FOUL_PLAY 231 +#define EFFECT_PSYSHOCK 232 +#define EFFECT_ROOST 233 +#define EFFECT_GRAVITY 234 +#define EFFECT_MIRACLE_EYE 235 +#define EFFECT_TAILWIND 236 +#define EFFECT_EMBARGO 237 +#define EFFECT_AQUA_RING 238 +#define EFFECT_TRICK_ROOM 239 +#define EFFECT_WONDER_ROOM 240 +#define EFFECT_MAGIC_ROOM 241 +#define EFFECT_MAGNET_RISE 242 +#define EFFECT_TOXIC_SPIKES 243 +#define EFFECT_GASTRO_ACID 244 +#define EFFECT_STEALTH_ROCK 245 +#define EFFECT_TELEKINESIS 246 +#define EFFECT_POWER_SWAP 247 +#define EFFECT_GUARD_SWAP 248 +#define EFFECT_HEART_SWAP 249 +#define EFFECT_POWER_SPLIT 250 +#define EFFECT_GUARD_SPLIT 251 +#define EFFECT_STICKY_WEB 252 +#define EFFECT_METAL_BURST 253 +#define EFFECT_LUCKY_CHANT 254 +#define EFFECT_SUCKER_PUNCH 255 +#define EFFECT_SPECIAL_DEFENSE_DOWN_HIT_2 256 +#define EFFECT_SIMPLE_BEAM 257 +#define EFFECT_ENTRAINMENT 258 +#define EFFECT_HEAL_PULSE 259 +#define EFFECT_QUASH 260 +#define EFFECT_ION_DELUGE 261 +#define EFFECT_FREEZE_DRY 262 +#define EFFECT_TOPSY_TURVY 263 +#define EFFECT_MISTY_TERRAIN 264 +#define EFFECT_GRASSY_TERRAIN 265 +#define EFFECT_ELECTRIC_TERRAIN 266 +#define EFFECT_PSYCHIC_TERRAIN 267 +#define EFFECT_ATTACK_ACCURACY_UP 268 +#define EFFECT_ATTACK_SPATK_UP 269 +#define EFFECT_HURRICANE 270 +#define EFFECT_TWO_TYPED_MOVE 271 +#define EFFECT_ME_FIRST 272 +#define EFFECT_SPEED_UP_HIT 273 +#define EFFECT_QUIVER_DANCE 274 +#define EFFECT_COIL 275 +#define EFFECT_ELECTRIFY 276 +#define EFFECT_REFLECT_TYPE 277 +#define EFFECT_SOAK 278 +#define EFFECT_GROWTH 279 +#define EFFECT_CLOSE_COMBAT 280 +#define EFFECT_LAST_RESORT 281 +#define EFFECT_RECOIL_33_STATUS 282 +#define EFFECT_FLINCH_STATUS 283 +#define EFFECT_RECOIL_50 284 +#define EFFECT_SHELL_SMASH 285 +#define EFFECT_SHIFT_GEAR 286 +#define EFFECT_DEFENSE_UP_3 287 +#define EFFECT_NOBLE_ROAR 288 +#define EFFECT_VENOM_DRENCH 289 +#define EFFECT_TOXIC_THREAD 290 +#define EFFECT_CLEAR_SMOG 291 +#define EFFECT_HIT_SWITCH_TARGET 292 +#define EFFECT_FINAL_GAMBIT 293 +#define EFFECT_CHANGE_TYPE_ON_ITEM 294 +#define EFFECT_AUTOTOMIZE 295 +#define EFFECT_COPYCAT 296 +#define EFFECT_DEFOG 297 +#define EFFECT_HIT_ENEMY_HEAL_ALLY 298 +#define EFFECT_SMACK_DOWN 299 +#define EFFECT_SYNCHRONOISE 300 +#define EFFECT_PSYCHO_SHIFT 301 +#define EFFECT_POWER_TRICK 302 +#define EFFECT_FLAME_BURST 303 +#define EFFECT_AFTER_YOU 304 +#define EFFECT_BESTOW 305 +#define EFFECT_ROTOTILLER 306 +#define EFFECT_FLOWER_SHIELD 307 +#define EFFECT_HIT_PREVENT_ESCAPE 308 +#define EFFECT_SPEED_SWAP 309 +#define EFFECT_DEFENSE_UP2_HIT 310 +#define EFFECT_REVELATION_DANCE 311 +#define EFFECT_AURORA_VEIL 312 +#define EFFECT_THIRD_TYPE 313 +#define EFFECT_FEINT 314 +#define EFFECT_SPARKLING_ARIA 315 +#define EFFECT_ACUPRESSURE 316 +#define EFFECT_AROMATIC_MIST 317 +#define EFFECT_POWDER 318 +#define EFFECT_SP_ATTACK_UP_HIT 319 +#define EFFECT_BELCH 320 +#define EFFECT_PARTING_SHOT 321 +#define EFFECT_SPECTRAL_THIEF 322 +#define EFFECT_V_CREATE 323 +#define EFFECT_MAT_BLOCK 324 +#define EFFECT_STOMPING_TANTRUM 325 +#define EFFECT_CORE_ENFORCER 326 +#define EFFECT_INSTRUCT 327 +#define EFFECT_THROAT_CHOP 328 +#define EFFECT_LASER_FOCUS 329 +#define EFFECT_MAGNETIC_FLUX 330 +#define EFFECT_GEAR_UP 331 +#define EFFECT_INCINERATE 332 +#define EFFECT_BUG_BITE 333 +#define EFFECT_STRENGTH_SAP 334 +#define EFFECT_MIND_BLOWN 335 +#define EFFECT_PURIFY 336 +#define EFFECT_BURN_UP 337 +#define EFFECT_SHORE_UP 338 +#define EFFECT_GEOMANCY 339 +#define EFFECT_FAIRY_LOCK 340 +#define EFFECT_ALLY_SWITCH 341 +#define EFFECT_RELIC_SONG 342 +#define EFFECT_ATTACKER_DEFENSE_DOWN_HIT 343 +#define EFFECT_BODY_PRESS 344 +#define EFFECT_EERIE_SPELL 345 +#define EFFECT_JUNGLE_HEALING 346 +#define EFFECT_COACHING 347 +#define EFFECT_LASH_OUT 348 +#define EFFECT_GRASSY_GLIDE 349 +#define EFFECT_REMOVE_TERRAIN 350 +#define EFFECT_DYNAMAX_DOUBLE_DMG 351 +#define EFFECT_DECORATE 352 +#define EFFECT_SNIPE_SHOT 353 +#define EFFECT_RECOIL_HP_25 354 +#define EFFECT_STUFF_CHEEKS 355 +#define EFFECT_GRAV_APPLE 356 +#define EFFECT_EVASION_UP_HIT 357 +#define EFFECT_GLITZY_GLOW 358 +#define EFFECT_BADDY_BAD 359 +#define EFFECT_SAPPY_SEED 360 +#define EFFECT_FREEZY_FROST 361 +#define EFFECT_SPARKLY_SWIRL 362 +#define EFFECT_PLASMA_FISTS 363 +#define EFFECT_HYPERSPACE_FURY 364 +#define EFFECT_AURA_WHEEL 365 +#define EFFECT_PHOTON_GEYSER 366 +#define EFFECT_SHELL_SIDE_ARM 367 +#define EFFECT_TERRAIN_PULSE 368 +#define EFFECT_JAW_LOCK 369 +#define EFFECT_NO_RETREAT 370 +#define EFFECT_TAR_SHOT 371 +#define EFFECT_POLTERGEIST 372 +#define EFFECT_OCTOLOCK 373 +#define EFFECT_CLANGOROUS_SOUL 374 +#define EFFECT_BOLT_BEAK 375 +#define EFFECT_SKY_DROP 376 +#define EFFECT_EXPANDING_FORCE 377 +#define EFFECT_SCALE_SHOT 378 +#define EFFECT_METEOR_BEAM 379 +#define EFFECT_RISING_VOLTAGE 380 +#define EFFECT_BEAK_BLAST 381 +#define EFFECT_COURT_CHANGE 382 +#define EFFECT_STEEL_BEAM 383 +#define EFFECT_EXTREME_EVOBOOST 384 +#define EFFECT_HIT_SET_REMOVE_TERRAIN 385 // genesis supernova +#define EFFECT_DARK_VOID 386 +#define EFFECT_SLEEP_HIT 387 +#define EFFECT_DOUBLE_SHOCK 388 +#define EFFECT_SPECIAL_ATTACK_UP_HIT 389 +#define EFFECT_VICTORY_DANCE 390 +#define EFFECT_TEATIME 391 +#define EFFECT_ATTACK_UP_USER_ALLY 392 // Howl 6th Gen +#define EFFECT_SHELL_TRAP 393 +#define EFFECT_PSYBLADE 394 +#define EFFECT_HYDRO_STEAM 395 +#define EFFECT_HIT_SET_ENTRY_HAZARD 396 +#define EFFECT_DIRE_CLAW 397 +#define EFFECT_BARB_BARRAGE 398 +#define EFFECT_REVIVAL_BLESSING 399 +#define EFFECT_FROSTBITE_HIT 400 +#define EFFECT_SNOWSCAPE 401 +#define EFFECT_TRIPLE_ARROWS 402 +#define EFFECT_INFERNAL_PARADE 403 +#define EFFECT_TAKE_HEART 404 +#define EFFECT_AXE_KICK 405 -#define NUM_BATTLE_MOVE_EFFECTS 408 +#define NUM_BATTLE_MOVE_EFFECTS 406 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index f8bb4ec8d9..72dd6e7bdb 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -213,39 +213,6 @@ #define EV_ITEM_RAISE_LIMIT 100 #endif -// Battle move flags -#define FLAG_MAKES_CONTACT (1 << 0) -#define FLAG_PROTECT_AFFECTED (1 << 1) -#define FLAG_MAGIC_COAT_AFFECTED (1 << 2) -#define FLAG_SNATCH_AFFECTED (1 << 3) -#define FLAG_MIRROR_MOVE_AFFECTED (1 << 4) -#define FLAG_KINGS_ROCK_AFFECTED (1 << 5) -#define FLAG_HIGH_CRIT (1 << 6) -#define FLAG_RECKLESS_BOOST (1 << 7) -#define FLAG_IRON_FIST_BOOST (1 << 8) -#define FLAG_SHEER_FORCE_BOOST (1 << 9) -#define FLAG_STRONG_JAW_BOOST (1 << 10) -#define FLAG_MEGA_LAUNCHER_BOOST (1 << 11) -#define FLAG_STAT_STAGES_IGNORED (1 << 12) -#define FLAG_DMG_MINIMIZE (1 << 13) -#define FLAG_DMG_UNDERGROUND (1 << 14) -#define FLAG_DMG_UNDERWATER (1 << 15) -#define FLAG_SOUND (1 << 16) -#define FLAG_BALLISTIC (1 << 17) -#define FLAG_PROTECTION_MOVE (1 << 18) -#define FLAG_POWDER (1 << 19) -#define FLAG_TARGET_ABILITY_IGNORED (1 << 20) -#define FLAG_DANCE (1 << 21) -#define FLAG_DMG_2X_IN_AIR (1 << 22) // If target is in the air, can hit and deal double damage. -#define FLAG_DMG_IN_AIR (1 << 23) // If target is in the air, can hit. -#define FLAG_DMG_UNGROUNDED_IGNORE_TYPE_IF_FLYING (1 << 24) // Makes a Ground type move do 1x damage to flying and levitating targets -#define FLAG_THAW_USER (1 << 25) -#define FLAG_HIT_IN_SUBSTITUTE (1 << 26) // Hyperspace Fury -#define FLAG_TWO_STRIKES (1 << 27) // A move with this flag will strike twice, and may apply its effect on each hit -#define FLAG_THREE_STRIKES (1 << 28) // A move with this flag will strike thrice, and may apply its effect on each hit -#define FLAG_WIND_MOVE (1 << 29) -#define FLAG_SLICING_MOVE (1 << 30) - // Split defines. #define SPLIT_PHYSICAL 0x0 #define SPLIT_SPECIAL 0x1 diff --git a/include/pokemon.h b/include/pokemon.h index 8368714f84..f20b23e791 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -344,10 +344,47 @@ struct BattleMove u8 secondaryEffectChance; u16 target; s8 priority; - u32 flags; u8 split; u16 argument; u8 zMoveEffect; + // Flags + u32 makesContact:1; + u32 ignoresProtect:1; + u32 magicCoatAffected:1; + u32 snatchAffected:1; + u32 mirrorMoveBanned:1; + u32 ignoresKingsRock:1; + u32 highCritRatio:1; + u32 punchingMove:1; + u32 sheerForceBoost:1; + u32 bitingMove:1; + u32 pulseMove:1; + u32 soundMove:1; + u32 ballisticMove:1; + u32 protectionMove:1; + u32 powderMove:1; + u32 danceMove:1; + u32 windMove:1; + u32 slicingMove:1; + u32 minimizeDoubleDamage:1; + u32 ignoresTargetAbility:1; + u32 ignoresTargetDefenseEvasionStages:1; + u32 damagesUnderground:1; + u32 damagesUnderwater:1; + u32 damagesAirborne:1; + u32 damagesAirborneDoubleDamage:1; + u32 ignoreTypeIfFlyingAndUngrounded:1; + u32 thawsUser:1; + u32 ignoresSubstitute:1; + u32 twoStrikes:1; // May apply its effect on each hit. + u32 threeStrikes:1; // May apply its effect on each hit. + u32 meFirstBanned:1; + u32 gravityBanned:1; + u32 mimicBanned:1; + u32 metronomeBanned:1; + u32 copycatBanned:1; + u32 sleepTalkBanned:1; + u32 instructBanned:1; }; #define SPINDA_SPOT_WIDTH 16 diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 211fa12279..056d74a864 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -695,7 +695,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) { // handle negative checks on non-user target // check powder moves - if (TestMoveFlags(move, FLAG_POWDER) && !IsAffectedByPowder(battlerDef, AI_DATA->abilities[battlerDef], AI_DATA->holdEffects[battlerDef])) + if (gBattleMoves[move].powderMove && !IsAffectedByPowder(battlerDef, AI_DATA->abilities[battlerDef], AI_DATA->holdEffects[battlerDef])) { RETURN_SCORE_MINUS(20); } @@ -782,11 +782,11 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) RETURN_SCORE_MINUS(10); break; case ABILITY_SOUNDPROOF: - if (TestMoveFlags(move, FLAG_SOUND)) + if (gBattleMoves[move].soundMove) RETURN_SCORE_MINUS(10); break; case ABILITY_BULLETPROOF: - if (TestMoveFlags(move, FLAG_BALLISTIC)) + if (gBattleMoves[move].ballisticMove) RETURN_SCORE_MINUS(10); break; case ABILITY_DAZZLING: @@ -807,7 +807,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) RETURN_SCORE_MINUS(10); break; case ABILITY_MAGIC_BOUNCE: - if (TestMoveFlags(move, FLAG_MAGIC_COAT_AFFECTED)) + if (gBattleMoves[move].magicCoatAffected) RETURN_SCORE_MINUS(20); break; case ABILITY_CONTRARY: @@ -868,7 +868,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) RETURN_SCORE_MINUS(20); break; case ABILITY_MAGIC_BOUNCE: - if (TestMoveFlags(move, FLAG_MAGIC_COAT_AFFECTED) && moveTarget & (MOVE_TARGET_BOTH | MOVE_TARGET_FOES_AND_ALLY | MOVE_TARGET_OPPONENTS_FIELD)) + if (gBattleMoves[move].magicCoatAffected && moveTarget & (MOVE_TARGET_BOTH | MOVE_TARGET_FOES_AND_ALLY | MOVE_TARGET_OPPONENTS_FIELD)) RETURN_SCORE_MINUS(20); break; case ABILITY_SWEET_VEIL: @@ -921,7 +921,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) // the following checks apply to any target (including user) // throat chop check - if (gDisableStructs[battlerAtk].throatChopTimer && TestMoveFlags(move, FLAG_SOUND)) + if (gDisableStructs[battlerAtk].throatChopTimer && gBattleMoves[move].soundMove) return 0; // Can't even select move at all // heal block check if (gStatuses3[battlerAtk] & STATUS3_HEAL_BLOCK && IsHealBlockPreventingMove(battlerAtk, move)) @@ -1404,7 +1404,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) else if (AI_DATA->hpPercents[battlerAtk] <= 25) score -= 10; #if B_SOUND_SUBSTITUTE >= GEN_6 - else if (TestMoveFlagsInMoveset(battlerDef, FLAG_SOUND)) + else if (HasSoundMove(battlerDef)) score -= 8; #endif break; @@ -1947,7 +1947,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) // TODO break; case EFFECT_HEAL_BELL: - if (!AnyPartyMemberStatused(battlerAtk, TestMoveFlags(move, FLAG_SOUND)) || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)) + if (!AnyPartyMemberStatused(battlerAtk, gBattleMoves[move].soundMove) || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)) score -= 10; break; case EFFECT_HIT_PREVENT_ESCAPE: @@ -2146,7 +2146,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score -= 10; // no teammates to assist from break; case EFFECT_MAGIC_COAT: - if (!TestMoveFlagsInMoveset(battlerDef, FLAG_MAGIC_COAT_AFFECTED)) + if (!HasMagicCoatAffectedMove(battlerDef)) score -= 10; break; case EFFECT_BELCH: @@ -2192,7 +2192,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score -= 10; break; case EFFECT_SNATCH: - if (!TestMoveFlagsInMoveset(battlerDef, FLAG_SNATCH_AFFECTED) + if (!HasSnatchAffectedMove(battlerDef) || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)) score -= 10; break; @@ -2500,7 +2500,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) instructedMove = gLastMoves[battlerDef]; if (instructedMove == MOVE_NONE - || IsInstructBannedMove(instructedMove) + || gBattleMoves[instructedMove].instructBanned || MoveRequiresRecharging(instructedMove) || MoveCallsOtherMove(instructedMove) || IsZMove(instructedMove) @@ -2683,7 +2683,7 @@ static s16 AI_TryToFaint(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) else { // this move isn't expected to faint the target - if (TestMoveFlags(move, FLAG_HIGH_CRIT)) + if (gBattleMoves[move].highCritRatio) score += 2; // crit makes it more likely to make them faint if (GetMoveDamageResult(move) == MOVE_POWER_OTHER) @@ -3145,7 +3145,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) } // check high crit - if (TestMoveFlags(move, FLAG_HIGH_CRIT) && effectiveness >= AI_EFFECTIVENESS_x2 && AI_RandLessThan(128)) + if (gBattleMoves[move].highCritRatio && effectiveness >= AI_EFFECTIVENESS_x2 && AI_RandLessThan(128)) score++; // check already dead @@ -3168,7 +3168,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score++; // check thawing moves - if ((gBattleMons[battlerAtk].status1 & (STATUS1_FREEZE | STATUS1_FROSTBITE)) && TestMoveFlags(move, FLAG_THAW_USER)) + if ((gBattleMons[battlerAtk].status1 & (STATUS1_FREEZE | STATUS1_FROSTBITE)) && gBattleMoves[move].thawsUser) score += (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) ? 20 : 10; // check burn @@ -3604,7 +3604,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (AI_DATA->abilities[battlerAtk] == ABILITY_SUPER_LUCK || AI_DATA->abilities[battlerAtk] == ABILITY_SNIPER || AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_SCOPE_LENS - || TestMoveFlagsInMoveset(battlerAtk, FLAG_HIGH_CRIT)) + || HasHighCritRatioMove(battlerAtk)) score += 2; break; case EFFECT_CONFUSE_HIT: @@ -4461,7 +4461,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_GRUDGE: break; case EFFECT_SNATCH: - if (predictedMove != MOVE_NONE && TestMoveFlags(predictedMove, FLAG_SNATCH_AFFECTED)) + if (predictedMove != MOVE_NONE && gBattleMoves[predictedMove].snatchAffected) score += 3; // Steal move break; case EFFECT_MUD_SPORT: @@ -4707,9 +4707,9 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score++; break; case EFFECT_THROAT_CHOP: - if (predictedMove != MOVE_NONE && TestMoveFlags(predictedMove, FLAG_SOUND) && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) + if (predictedMove != MOVE_NONE && gBattleMoves[predictedMove].soundMove && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) score += 3; // Ai goes first and predicts the target will use a sound move - else if (TestMoveFlagsInMoveset(battlerDef, FLAG_SOUND)) + else if (HasSoundMove(battlerDef)) score += 3; break; case EFFECT_HEAL_BLOCK: @@ -5022,7 +5022,7 @@ static s16 AI_Risky(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (IsTargetingPartner(battlerAtk, battlerDef)) return score; - if (TestMoveFlags(move, FLAG_HIGH_CRIT)) + if (gBattleMoves[move].highCritRatio) score += 2; switch (gBattleMoves[move].effect) diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 7be2bf1c98..81b6e9cbdf 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -21,6 +21,16 @@ #include "constants/moves.h" #include "constants/items.h" +#define CHECK_MOVE_FLAG(flag) \ + s32 i; \ + u16 *moves = GetMovesArray(battler); \ + for (i = 0; i < MAX_MON_MOVES; i++) \ + { \ + if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && gBattleMoves[moves[i]].flag) \ + return TRUE; \ + } \ + return FALSE + static u32 AI_GetEffectiveness(u16 multiplier); // Const Data @@ -381,35 +391,6 @@ static const u16 sIgnoreMoldBreakerMoves[] = MOVE_SEARING_SUNRAZE_SMASH, }; -static const u16 sInstructBannedMoves[] = -{ - MOVE_INSTRUCT, - MOVE_BIDE, - MOVE_FOCUS_PUNCH, - MOVE_BEAK_BLAST, - MOVE_SHELL_TRAP, - MOVE_SKETCH, - MOVE_TRANSFORM, - MOVE_MIMIC, - MOVE_KINGS_SHIELD, - MOVE_STRUGGLE, - MOVE_BOUNCE, - MOVE_DIG, - MOVE_DIVE, - MOVE_FLY, - MOVE_FREEZE_SHOCK, - MOVE_GEOMANCY, - MOVE_ICE_BURN, - MOVE_PHANTOM_FORCE, - MOVE_RAZOR_WIND, - MOVE_SHADOW_FORCE, - MOVE_SKULL_BASH, - MOVE_SKY_ATTACK, - MOVE_SKY_DROP, - MOVE_SOLAR_BEAM, - MOVE_SOLAR_BLADE, -}; - static const u16 sRechargeMoves[] = { MOVE_HYPER_BEAM, @@ -734,7 +715,7 @@ bool32 MovesWithSplitUnusable(u32 attacker, u32 target, u32 split) for (i = 0; i < MAX_MON_MOVES; i++) { if (moves[i] != MOVE_NONE - && moves[i] != 0xFFFF + && moves[i] != MOVE_UNAVAILABLE && GetBattleMoveSplit(moves[i]) == split && !(unusable & gBitTable[i])) { @@ -760,15 +741,15 @@ static bool32 AI_GetIfCrit(u32 move, u8 battlerAtk, u8 battlerDef) isCrit = FALSE; break; case 1: - if (gBattleMoves[move].flags & FLAG_HIGH_CRIT && (Random() % 5 == 0)) + if (gBattleMoves[move].highCritRatio && (Random() % 5 == 0)) isCrit = TRUE; else isCrit = FALSE; break; case 2: - if (gBattleMoves[move].flags & FLAG_HIGH_CRIT && (Random() % 2 == 0)) + if (gBattleMoves[move].highCritRatio && (Random() % 2 == 0)) isCrit = TRUE; - else if (!(gBattleMoves[move].flags & FLAG_HIGH_CRIT) && (Random() % 4) == 0) + else if (!(gBattleMoves[move].highCritRatio) && (Random() % 4) == 0) isCrit = TRUE; else isCrit = FALSE; @@ -855,9 +836,9 @@ s32 AI_CalcDamage(u16 move, u8 battlerAtk, u8 battlerDef, u8 *typeEffectiveness, } // Handle other multi-strike moves - if (gBattleMoves[move].flags & FLAG_TWO_STRIKES) + if (gBattleMoves[move].twoStrikes) dmg *= 2; - else if (gBattleMoves[move].flags & FLAG_THREE_STRIKES || (move == MOVE_WATER_SHURIKEN && gBattleMons[battlerAtk].species == SPECIES_GRENINJA_ASH)) + else if (gBattleMoves[move].threeStrikes || (move == MOVE_WATER_SHURIKEN && gBattleMons[battlerAtk].species == SPECIES_GRENINJA_ASH)) dmg *= 3; if (dmg == 0) @@ -899,30 +880,10 @@ static u32 WhichMoveBetter(u32 move1, u32 move2) // Check recoil if (GetBattlerAbility(sBattler_AI) != ABILITY_ROCK_HEAD) { - if (((gBattleMoves[move1].effect == EFFECT_RECOIL_25 - || gBattleMoves[move1].effect == EFFECT_RECOIL_IF_MISS - || gBattleMoves[move1].effect == EFFECT_RECOIL_50 - || gBattleMoves[move1].effect == EFFECT_RECOIL_33 - || gBattleMoves[move1].effect == EFFECT_RECOIL_33_STATUS) - && (gBattleMoves[move2].effect != EFFECT_RECOIL_25 - && gBattleMoves[move2].effect != EFFECT_RECOIL_IF_MISS - && gBattleMoves[move2].effect != EFFECT_RECOIL_50 - && gBattleMoves[move2].effect != EFFECT_RECOIL_33 - && gBattleMoves[move2].effect != EFFECT_RECOIL_33_STATUS - && gBattleMoves[move2].effect != EFFECT_RECHARGE))) + if (IS_MOVE_RECOIL(move1) && !IS_MOVE_RECOIL(move2) && gBattleMoves[move2].effect != EFFECT_RECHARGE) return 1; - if (((gBattleMoves[move2].effect == EFFECT_RECOIL_25 - || gBattleMoves[move2].effect == EFFECT_RECOIL_IF_MISS - || gBattleMoves[move2].effect == EFFECT_RECOIL_50 - || gBattleMoves[move2].effect == EFFECT_RECOIL_33 - || gBattleMoves[move2].effect == EFFECT_RECOIL_33_STATUS) - && (gBattleMoves[move1].effect != EFFECT_RECOIL_25 - && gBattleMoves[move1].effect != EFFECT_RECOIL_IF_MISS - && gBattleMoves[move1].effect != EFFECT_RECOIL_50 - && gBattleMoves[move1].effect != EFFECT_RECOIL_33 - && gBattleMoves[move1].effect != EFFECT_RECOIL_33_STATUS - && gBattleMoves[move1].effect != EFFECT_RECHARGE))) + if (IS_MOVE_RECOIL(move2) && !IS_MOVE_RECOIL(move1) && gBattleMoves[move1].effect != EFFECT_RECHARGE) return 0; } // Check recharge @@ -1097,7 +1058,7 @@ u8 AI_WhoStrikesFirst(u8 battlerAI, u8 battler2, u16 moveConsidered) for (i = 0; i < MAX_MON_MOVES; i++) { prioBattler2 = GetMovePriority(battler2, battler2Moves[i]); - if (battler2Moves[i] == 0 || battler2Moves[i] == 0xFFFF + if (battler2Moves[i] == MOVE_NONE || battler2Moves[i] == MOVE_UNAVAILABLE || (prioBattler2 > prioAI && !CanIndexMoveFaintTarget(battler2, battlerAI, i , 2))) continue; @@ -1136,7 +1097,7 @@ bool32 CanTargetFaintAi(u8 battlerDef, u8 battlerAtk) for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] != MOVE_NONE && moves[i] != 0xFFFF && !(unusable & gBitTable[i]) + if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && !(unusable & gBitTable[i]) && AI_DATA->simulatedDmg[battlerDef][battlerAtk][moves[i]] >= gBattleMons[battlerAtk].hp) { return TRUE; @@ -1156,7 +1117,7 @@ bool32 CanAIFaintTarget(u8 battlerAtk, u8 battlerDef, u8 numHits) for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] != MOVE_NONE && moves[i] != 0xFFFF && !(moveLimitations & gBitTable[i])) + if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && !(moveLimitations & gBitTable[i])) { // Use the pre-calculated value in simulatedDmg instead of re-calculating it dmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][i]; @@ -1205,7 +1166,7 @@ bool32 CanTargetFaintAiWithMod(u8 battlerDef, u8 battlerAtk, s32 hpMod, s32 dmgM if (dmgMod) dmg *= dmgMod; - if (moves[i] != MOVE_NONE && moves[i] != 0xFFFF && !(unusable & gBitTable[i]) && dmg >= hpCheck) + if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && !(unusable & gBitTable[i]) && dmg >= hpCheck) { return TRUE; } @@ -1470,11 +1431,11 @@ bool32 IsSemiInvulnerable(u8 battlerDef, u16 move) { if (gStatuses3[battlerDef] & STATUS3_PHANTOM_FORCE) return TRUE; - else if (!TestMoveFlags(move, FLAG_DMG_IN_AIR) && gStatuses3[battlerDef] & STATUS3_ON_AIR) + else if (!gBattleMoves[move].damagesAirborne && gStatuses3[battlerDef] & STATUS3_ON_AIR) return TRUE; - else if (!TestMoveFlags(move, FLAG_DMG_UNDERWATER) && gStatuses3[battlerDef] & STATUS3_UNDERWATER) + else if (!gBattleMoves[move].damagesUnderwater && gStatuses3[battlerDef] & STATUS3_UNDERWATER) return TRUE; - else if (!TestMoveFlags(move, FLAG_DMG_UNDERGROUND) && gStatuses3[battlerDef] & STATUS3_UNDERGROUND) + else if (!gBattleMoves[move].damagesUnderground && gStatuses3[battlerDef] & STATUS3_UNDERGROUND) return TRUE; else return FALSE; @@ -1510,7 +1471,7 @@ bool32 IsMoveEncouragedToHit(u8 battlerAtk, u8 battlerDef, u16 move) || (((gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) && move == MOVE_BLIZZARD)))) || (gBattleMoves[move].effect == EFFECT_VITAL_THROW) #if B_MINIMIZE_DMG_ACC >= GEN_6 - || ((gStatuses3[battlerDef] & STATUS3_MINIMIZED) && (gBattleMoves[move].flags & FLAG_DMG_MINIMIZE)) + || ((gStatuses3[battlerDef] & STATUS3_MINIMIZED) && gBattleMoves[move].minimizeDoubleDamage) #endif || (gBattleMoves[move].accuracy == 0)) { @@ -1927,7 +1888,7 @@ bool32 HasOnlyMovesWithSplit(u32 battlerId, u32 split, bool32 onlyOffensive) { if (onlyOffensive && IS_MOVE_STATUS(moves[i])) continue; - if (moves[i] != MOVE_NONE && moves[i] != 0xFFFF && GetBattleMoveSplit(moves[i]) != split) + if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && GetBattleMoveSplit(moves[i]) != split) return FALSE; } @@ -1941,7 +1902,7 @@ bool32 HasMoveWithSplit(u32 battler, u32 split) for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] != MOVE_NONE && moves[i] != 0xFFFF && GetBattleMoveSplit(moves[i]) == split) + if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && GetBattleMoveSplit(moves[i]) == split) return TRUE; } @@ -1955,7 +1916,7 @@ bool32 HasMoveWithType(u32 battler, u8 type) for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] != MOVE_NONE && moves[i] != 0xFFFF && gBattleMoves[moves[i]].type == type) + if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && gBattleMoves[moves[i]].type == type) return TRUE; } @@ -1969,7 +1930,7 @@ bool32 HasMoveEffect(u32 battlerId, u16 moveEffect) for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] != MOVE_NONE && moves[i] != 0xFFFF && gBattleMoves[moves[i]].effect == moveEffect) + if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && gBattleMoves[moves[i]].effect == moveEffect) return TRUE; } @@ -1983,7 +1944,7 @@ bool32 HasMove(u32 battlerId, u32 move) for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] != MOVE_NONE && moves[i] != 0xFFFF && moves[i] == move) + if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && moves[i] == move) return TRUE; } @@ -1998,7 +1959,7 @@ bool32 HasMoveWithLowAccuracy(u8 battlerAtk, u8 battlerDef, u8 accCheck, bool32 for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] == MOVE_NONE || moves[i] == 0xFFFF) + if (moves[i] == MOVE_NONE || moves[i] == MOVE_UNAVAILABLE) continue; if (!(gBitTable[i] & moveLimitations)) @@ -2066,7 +2027,7 @@ bool32 HasHealingEffect(u32 battlerId) for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] != MOVE_NONE && moves[i] != 0xFFFF && IsHealingMoveEffect(gBattleMoves[moves[i]].effect)) + if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && IsHealingMoveEffect(gBattleMoves[moves[i]].effect)) return TRUE; } @@ -2095,25 +2056,16 @@ bool32 HasTrappingMoveEffect(u8 battler) for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] != MOVE_NONE && moves[i] != 0xFFFF && IsTrappingMoveEffect(gBattleMoves[moves[i]].effect)) + if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && IsTrappingMoveEffect(gBattleMoves[moves[i]].effect)) return TRUE; } return FALSE; } -bool32 HasThawingMove(u8 battlerId) +bool32 HasThawingMove(u8 battler) { - s32 i; - u16 *moves = GetMovesArray(battlerId); - - for (i = 0; i < MAX_MON_MOVES; i++) - { - if (moves[i] != MOVE_NONE && moves[i] != 0xFFFF && TestMoveFlags(moves[i], FLAG_THAW_USER)) - return TRUE; - } - - return FALSE; + CHECK_MOVE_FLAG(thawsUser); } bool32 IsUngroundingEffect(u16 effect) @@ -2228,7 +2180,7 @@ bool32 HasDamagingMove(u8 battlerId) for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] != MOVE_NONE && moves[i] != 0xFFFF && gBattleMoves[moves[i]].power != 0) + if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && gBattleMoves[moves[i]].power != 0) return TRUE; } @@ -2242,7 +2194,7 @@ bool32 HasDamagingMoveOfType(u8 battlerId, u8 type) for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] != MOVE_NONE && moves[i] != 0xFFFF + if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && gBattleMoves[moves[i]].type == type && gBattleMoves[moves[i]].power != 0) return TRUE; } @@ -2250,15 +2202,24 @@ bool32 HasDamagingMoveOfType(u8 battlerId, u8 type) return FALSE; } -bool32 IsInstructBannedMove(u16 move) +bool32 HasSoundMove(u8 battler) { - u32 i; - for (i = 0; i < ARRAY_COUNT(sInstructBannedMoves); i++) - { - if (move == sInstructBannedMoves[i]) - return TRUE; - } - return FALSE; + CHECK_MOVE_FLAG(soundMove); +} + +bool32 HasHighCritRatioMove(u8 battler) +{ + CHECK_MOVE_FLAG(highCritRatio); +} + +bool32 HasMagicCoatAffectedMove(u8 battler) +{ + CHECK_MOVE_FLAG(magicCoatAffected); +} + +bool32 HasSnatchAffectedMove(u8 battler) +{ + CHECK_MOVE_FLAG(snatchAffected); } bool32 IsEncoreEncouragedEffect(u16 moveEffect) @@ -2295,19 +2256,6 @@ bool32 MoveCallsOtherMove(u16 move) return FALSE; } -bool32 TestMoveFlagsInMoveset(u8 battler, u32 flags) -{ - s32 i; - u16 *moves = GetMovesArray(battler); - - for (i = 0; i < MAX_MON_MOVES; i++) - { - if (moves[i] != MOVE_NONE && moves[i] != 0xFFFF && TestMoveFlags(moves[i], flags)) - return TRUE; - } - return FALSE; -} - static u32 GetLeechSeedDamage(u8 battlerId) { u32 damage = 0; @@ -3788,7 +3736,7 @@ void IncreaseFrostbiteScore(u8 battlerAtk, u8 battlerDef, u16 move, s16 *score) bool32 AI_MoveMakesContact(u32 ability, u32 holdEffect, u16 move) { - if (TestMoveFlags(move, FLAG_MAKES_CONTACT) + if (gBattleMoves[move].makesContact && ability != ABILITY_LONG_REACH && holdEffect != HOLD_EFFECT_PROTECTIVE_PADS) return TRUE; diff --git a/src/battle_main.c b/src/battle_main.c index 186ae225a6..758bc1cf85 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -5715,8 +5715,7 @@ void SetTypeBeforeUsingMove(u16 move, u8 battlerAtk) gBattleStruct->dynamicMoveType = TYPE_NORMAL | F_DYNAMIC_TYPE_2; gBattleStruct->ateBoost[battlerAtk] = 1; } - else if (gBattleMoves[move].flags & FLAG_SOUND - && attackerAbility == ABILITY_LIQUID_VOICE) + else if (gBattleMoves[move].soundMove && attackerAbility == ABILITY_LIQUID_VOICE) { gBattleStruct->dynamicMoveType = TYPE_WATER | F_DYNAMIC_TYPE_2; } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 6bbe3d90b2..b20ef8cec4 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -968,236 +968,6 @@ static const struct SpriteTemplate sSpriteTemplate_MonIconOnLvlUpBanner = static const u16 sProtectSuccessRates[] = {USHRT_MAX, USHRT_MAX / 2, USHRT_MAX / 4, USHRT_MAX / 8}; -#define FORBIDDEN_MIMIC (1 << 0) -#define FORBIDDEN_METRONOME (1 << 1) -#define FORBIDDEN_ASSIST (1 << 2) -#define FORBIDDEN_COPYCAT (1 << 3) -#define FORBIDDEN_SLEEP_TALK (1 << 4) -#define FORBIDDEN_INSTRUCT (1 << 5) -#define FORBIDDEN_PARENTAL_BOND (1 << 6) - -static const u8 sForbiddenMoves[MOVES_COUNT] = -{ - [MOVE_NONE] = 0xFF, // Can't use a non-move lol - [MOVE_STRUGGLE] = 0xFF, // Neither Struggle - [MOVE_AFTER_YOU] = FORBIDDEN_METRONOME, - [MOVE_APPLE_ACID] = FORBIDDEN_METRONOME, - [MOVE_ARMOR_CANNON] = FORBIDDEN_METRONOME, - [MOVE_ARM_THRUST] = FORBIDDEN_PARENTAL_BOND, - [MOVE_ASSIST] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_ASTRAL_BARRAGE] = FORBIDDEN_METRONOME, - [MOVE_AURA_WHEEL] = FORBIDDEN_METRONOME, - [MOVE_BADDY_BAD] = FORBIDDEN_METRONOME, - [MOVE_BANEFUL_BUNKER] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_BARRAGE] = FORBIDDEN_PARENTAL_BOND, - [MOVE_BEAK_BLAST] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_BEAT_UP] = FORBIDDEN_PARENTAL_BOND, - [MOVE_BEHEMOTH_BASH] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_BEHEMOTH_BLADE] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_BELCH] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_BESTOW] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_BIDE] = FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, // Note: Bide should work with Parental Bond. This will be addressed in future. - [MOVE_BLAST_BURN] = FORBIDDEN_INSTRUCT, - [MOVE_BLAZING_TORQUE] = FORBIDDEN_MIMIC | FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_BODY_PRESS] = FORBIDDEN_METRONOME, - [MOVE_BONE_RUSH] = FORBIDDEN_PARENTAL_BOND, - [MOVE_BONEMERANG] = FORBIDDEN_PARENTAL_BOND, - [MOVE_BOUNCE] = FORBIDDEN_ASSIST | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_BOUNCY_BUBBLE] = FORBIDDEN_METRONOME, - [MOVE_BRANCH_POKE] = FORBIDDEN_METRONOME, - [MOVE_BREAKING_SWIPE] = FORBIDDEN_METRONOME, - [MOVE_BULLET_SEED] = FORBIDDEN_PARENTAL_BOND, - [MOVE_BUZZY_BUZZ] = FORBIDDEN_METRONOME, - [MOVE_CELEBRATE] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_CHATTER] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_MIMIC | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_CHILLING_WATER] = FORBIDDEN_METRONOME, - [MOVE_CHILLY_RECEPTION] = FORBIDDEN_METRONOME, - [MOVE_CIRCLE_THROW] = FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_CLANGOROUS_SOUL] = FORBIDDEN_METRONOME, - [MOVE_COLLISION_COURSE] = FORBIDDEN_METRONOME, - [MOVE_COMBAT_TORQUE] = FORBIDDEN_MIMIC | FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_COMET_PUNCH] = FORBIDDEN_PARENTAL_BOND, - [MOVE_COMEUPPANCE] = FORBIDDEN_METRONOME, - [MOVE_COPYCAT] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_COUNTER] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_COVET] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_CRAFTY_SHIELD] = FORBIDDEN_METRONOME, - [MOVE_DECORATE] = FORBIDDEN_METRONOME, - [MOVE_DESTINY_BOND] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_DETECT] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_DIAMOND_STORM] = FORBIDDEN_METRONOME, - [MOVE_DIG] = FORBIDDEN_ASSIST | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_DIVE] = FORBIDDEN_ASSIST | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_DOODLE] = FORBIDDEN_METRONOME, - [MOVE_DOUBLE_IRON_BASH] = FORBIDDEN_METRONOME | FORBIDDEN_PARENTAL_BOND, - [MOVE_DOUBLE_HIT] = FORBIDDEN_PARENTAL_BOND, - [MOVE_DOUBLE_KICK] = FORBIDDEN_PARENTAL_BOND, - [MOVE_DOUBLE_SHOCK] = FORBIDDEN_METRONOME, - [MOVE_DOUBLE_SLAP] = FORBIDDEN_PARENTAL_BOND, - [MOVE_DRAGON_ASCENT] = FORBIDDEN_METRONOME, - [MOVE_DRAGON_ENERGY] = FORBIDDEN_METRONOME, - [MOVE_DRAGON_DARTS] = FORBIDDEN_PARENTAL_BOND, - [MOVE_DRAGON_TAIL] = FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_DRUM_BEATING] = FORBIDDEN_METRONOME, - [MOVE_DUAL_CHOP] = FORBIDDEN_PARENTAL_BOND, - [MOVE_DUAL_WINGBEAT] = FORBIDDEN_PARENTAL_BOND, - [MOVE_DYNAMAX_CANNON] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_ELECTRO_DRIFT] = FORBIDDEN_METRONOME, - [MOVE_ENDEAVOR] = FORBIDDEN_PARENTAL_BOND, - [MOVE_ENDURE] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_ETERNABEAM] = FORBIDDEN_METRONOME | FORBIDDEN_INSTRUCT, - [MOVE_EXPLOSION] = FORBIDDEN_PARENTAL_BOND, - [MOVE_FALSE_SURRENDER] = FORBIDDEN_METRONOME, - [MOVE_FEINT] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_FIERY_WRATH] = FORBIDDEN_METRONOME, - [MOVE_FILLET_AWAY] = FORBIDDEN_METRONOME, - [MOVE_FINAL_GAMBIT] = FORBIDDEN_PARENTAL_BOND, - [MOVE_FISSURE] = FORBIDDEN_PARENTAL_BOND, - [MOVE_FLEUR_CANNON] = FORBIDDEN_METRONOME, - [MOVE_FLING] = FORBIDDEN_PARENTAL_BOND, - [MOVE_FLOATY_FALL] = FORBIDDEN_METRONOME, - [MOVE_FLY] = FORBIDDEN_ASSIST | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_FOCUS_PUNCH] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_FOLLOW_ME] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_FREEZE_SHOCK] = FORBIDDEN_METRONOME | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT| FORBIDDEN_PARENTAL_BOND, - [MOVE_FREEZING_GLARE] = FORBIDDEN_METRONOME, - [MOVE_FREEZY_FROST] = FORBIDDEN_METRONOME, - [MOVE_FURY_ATTACK] = FORBIDDEN_PARENTAL_BOND, - [MOVE_FURY_SWIPES] = FORBIDDEN_PARENTAL_BOND, - [MOVE_GEAR_GRIND] = FORBIDDEN_PARENTAL_BOND, - [MOVE_GEOMANCY] = FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_GIGA_IMPACT] = FORBIDDEN_INSTRUCT, - [MOVE_GLACIAL_LANCE] = FORBIDDEN_METRONOME, - [MOVE_GLITZY_GLOW] = FORBIDDEN_METRONOME, - [MOVE_GRAV_APPLE] = FORBIDDEN_METRONOME, - [MOVE_GUILLOTINE] = FORBIDDEN_PARENTAL_BOND, - [MOVE_HELPING_HAND] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_HOLD_HANDS] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_HORN_DRILL] = FORBIDDEN_PARENTAL_BOND, - [MOVE_HYDRO_CANNON] = FORBIDDEN_INSTRUCT, - [MOVE_HYPER_BEAM] = FORBIDDEN_INSTRUCT, - [MOVE_HYPER_DRILL] = FORBIDDEN_METRONOME, - [MOVE_HYPERSPACE_FURY] = FORBIDDEN_METRONOME, - [MOVE_HYPERSPACE_HOLE] = FORBIDDEN_METRONOME, - [MOVE_ICE_BALL] = FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_ICE_BURN] = FORBIDDEN_METRONOME | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_ICICLE_SPEAR] = FORBIDDEN_PARENTAL_BOND, - [MOVE_INSTRUCT] = FORBIDDEN_METRONOME | FORBIDDEN_INSTRUCT, - [MOVE_JET_PUNCH] = FORBIDDEN_METRONOME, - [MOVE_JUNGLE_HEALING] = FORBIDDEN_METRONOME, - [MOVE_KINGS_SHIELD] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_INSTRUCT, - [MOVE_LIFE_DEW] = FORBIDDEN_METRONOME, - [MOVE_LIGHT_OF_RUIN] = FORBIDDEN_METRONOME, - [MOVE_MAKE_IT_RAIN] = FORBIDDEN_METRONOME, - [MOVE_MAGICAL_TORQUE] = FORBIDDEN_MIMIC | FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_MAT_BLOCK] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_ME_FIRST] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_METEOR_ASSAULT] = FORBIDDEN_METRONOME | FORBIDDEN_INSTRUCT, - [MOVE_METEOR_BEAM] = FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_METRONOME] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_MIMIC] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_MIMIC | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_MIND_BLOWN] = FORBIDDEN_METRONOME, - [MOVE_MIRROR_COAT] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_MIRROR_MOVE] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_MISTY_EXPLOSION] = FORBIDDEN_PARENTAL_BOND, - [MOVE_MOONGEIST_BEAM] = FORBIDDEN_METRONOME, - [MOVE_NATURE_POWER] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_NATURES_MADNESS] = FORBIDDEN_METRONOME, - [MOVE_NOXIOUS_TORQUE] = FORBIDDEN_MIMIC | FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_OBSTRUCT] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_INSTRUCT, - [MOVE_ORDER_UP] = FORBIDDEN_METRONOME, - [MOVE_ORIGIN_PULSE] = FORBIDDEN_METRONOME, - [MOVE_OUTRAGE] = FORBIDDEN_INSTRUCT, - [MOVE_OVERDRIVE] = FORBIDDEN_METRONOME, - [MOVE_PHANTOM_FORCE] = FORBIDDEN_ASSIST | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_PHOTON_GEYSER] = FORBIDDEN_METRONOME, - [MOVE_PLASMA_FISTS] = FORBIDDEN_METRONOME, - [MOVE_POPULATION_BOMB] = FORBIDDEN_METRONOME, - [MOVE_POUNCE] = FORBIDDEN_METRONOME, - [MOVE_POWER_SHIFT] = FORBIDDEN_METRONOME, - [MOVE_PRECIPICE_BLADES] = FORBIDDEN_METRONOME, - [MOVE_PRISMATIC_LASER] = FORBIDDEN_INSTRUCT, - [MOVE_PROTECT] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_PYRO_BALL] = FORBIDDEN_METRONOME, - [MOVE_QUASH] = FORBIDDEN_METRONOME, - [MOVE_QUICK_GUARD] = FORBIDDEN_METRONOME, - [MOVE_RAGE_FIST] = FORBIDDEN_METRONOME, - [MOVE_RAGE_POWDER] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_RAGING_BULL] = FORBIDDEN_METRONOME, - [MOVE_RAGING_FURY] = FORBIDDEN_METRONOME, - [MOVE_RAZOR_WIND] = FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_RELIC_SONG] = FORBIDDEN_METRONOME, - [MOVE_REVIVAL_BLESSING] = FORBIDDEN_METRONOME, - [MOVE_ROAR] = FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_ROAR_OF_TIME] = FORBIDDEN_INSTRUCT, - [MOVE_ROCK_BLAST] = FORBIDDEN_PARENTAL_BOND, - [MOVE_ROCK_WRECKER] = FORBIDDEN_INSTRUCT, - [MOVE_ROLLOUT] = FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_RUINATION] = FORBIDDEN_METRONOME, - [MOVE_SAPPY_SEED] = FORBIDDEN_METRONOME, - [MOVE_SALT_CURE] = FORBIDDEN_METRONOME, - [MOVE_SCALE_SHOT] = FORBIDDEN_PARENTAL_BOND, - [MOVE_SECRET_SWORD] = FORBIDDEN_METRONOME, - [MOVE_SELF_DESTRUCT] = FORBIDDEN_PARENTAL_BOND, - [MOVE_SHADOW_FORCE] = FORBIDDEN_ASSIST | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_SHED_TAIL] = FORBIDDEN_METRONOME, - [MOVE_SHEER_COLD] = FORBIDDEN_PARENTAL_BOND, - [MOVE_SHELL_TRAP] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_SILK_TRAP] = FORBIDDEN_METRONOME, - [MOVE_SIZZLY_SLIDE] = FORBIDDEN_METRONOME, - [MOVE_SKETCH] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_MIMIC | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_SKULL_BASH] = FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_SKY_ATTACK] = FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_SKY_DROP] = FORBIDDEN_ASSIST | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_SLEEP_TALK] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_SNAP_TRAP] = FORBIDDEN_METRONOME, - [MOVE_SNARL] = FORBIDDEN_METRONOME, - [MOVE_SNATCH] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_INSTRUCT, - [MOVE_SNORE] = FORBIDDEN_METRONOME, - [MOVE_SNOWSCAPE] = FORBIDDEN_METRONOME, - [MOVE_SOLAR_BEAM] = FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_SOLAR_BLADE] = FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_SPARKLY_SWIRL] = FORBIDDEN_METRONOME, - [MOVE_SPECTRAL_THIEF] = FORBIDDEN_METRONOME, - [MOVE_SPICY_EXTRACT] = FORBIDDEN_METRONOME, - [MOVE_SPIKE_CANNON] = FORBIDDEN_PARENTAL_BOND, - [MOVE_SPIKY_SHIELD] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_SPIRIT_BREAK] = FORBIDDEN_METRONOME, - [MOVE_SPLISHY_SPLASH] = FORBIDDEN_METRONOME, - [MOVE_SPOTLIGHT] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_STEAM_ERUPTION] = FORBIDDEN_METRONOME, - [MOVE_STEEL_BEAM] = FORBIDDEN_METRONOME, - [MOVE_STRANGE_STEAM] = FORBIDDEN_METRONOME, - [MOVE_SUNSTEEL_STRIKE] = FORBIDDEN_METRONOME, - [MOVE_SURGING_STRIKES] = FORBIDDEN_METRONOME | FORBIDDEN_PARENTAL_BOND, - [MOVE_SWITCHEROO] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_TAIL_SLAP] = FORBIDDEN_PARENTAL_BOND, - [MOVE_TECHNO_BLAST] = FORBIDDEN_METRONOME, - [MOVE_THIEF] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_THOUSAND_ARROWS] = FORBIDDEN_METRONOME, - [MOVE_THOUSAND_WAVES] = FORBIDDEN_METRONOME, - [MOVE_THRASH] = FORBIDDEN_INSTRUCT, - [MOVE_THUNDER_CAGE] = FORBIDDEN_METRONOME, - [MOVE_THUNDEROUS_KICK] = FORBIDDEN_METRONOME, - [MOVE_TIDY_UP] = FORBIDDEN_METRONOME, - [MOVE_TRAILBLAZE] = FORBIDDEN_METRONOME, - [MOVE_TRANSFORM] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_MIMIC | FORBIDDEN_INSTRUCT, - [MOVE_TRICK] = FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_TRIPLE_AXEL] = FORBIDDEN_PARENTAL_BOND, - [MOVE_TRIPLE_KICK] = FORBIDDEN_PARENTAL_BOND, - [MOVE_TWINEEDLE] = FORBIDDEN_PARENTAL_BOND, - [MOVE_TWIN_BEAM] = FORBIDDEN_METRONOME, - [MOVE_UPROAR] = FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT | FORBIDDEN_PARENTAL_BOND, - [MOVE_V_CREATE] = FORBIDDEN_METRONOME, - [MOVE_VEEVEE_VOLLEY] = FORBIDDEN_METRONOME, - [MOVE_WATER_SHURIKEN] = FORBIDDEN_PARENTAL_BOND, - [MOVE_WHIRLWIND] = FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT, - [MOVE_WICKED_BLOW] = FORBIDDEN_METRONOME, - [MOVE_WICKED_TORQUE] = FORBIDDEN_MIMIC | FORBIDDEN_METRONOME | FORBIDDEN_ASSIST | FORBIDDEN_COPYCAT | FORBIDDEN_SLEEP_TALK | FORBIDDEN_INSTRUCT, - [MOVE_WIDE_GUARD] = FORBIDDEN_METRONOME, - [MOVE_ZIPPY_ZAP] = FORBIDDEN_METRONOME, -}; - static const u16 sFinalStrikeOnlyEffects[] = { EFFECT_RELIC_SONG, @@ -1608,7 +1378,7 @@ static void Cmd_attackcanceler(void) } if (gProtectStructs[gBattlerTarget].bounceMove - && gBattleMoves[gCurrentMove].flags & FLAG_MAGIC_COAT_AFFECTED + && gBattleMoves[gCurrentMove].magicCoatAffected && !gProtectStructs[gBattlerAttacker].usesBouncedMove) { PressurePPLose(gBattlerAttacker, gBattlerTarget, MOVE_MAGIC_COAT); @@ -1629,7 +1399,7 @@ static void Cmd_attackcanceler(void) return; } else if (GetBattlerAbility(gBattlerTarget) == ABILITY_MAGIC_BOUNCE - && gBattleMoves[gCurrentMove].flags & FLAG_MAGIC_COAT_AFFECTED + && gBattleMoves[gCurrentMove].magicCoatAffected && !gProtectStructs[gBattlerAttacker].usesBouncedMove) { gProtectStructs[gBattlerTarget].usesBouncedMove = TRUE; @@ -1651,7 +1421,7 @@ static void Cmd_attackcanceler(void) for (i = 0; i < gBattlersCount; i++) { - if ((gProtectStructs[gBattlerByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED) + if ((gProtectStructs[gBattlerByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].snatchAffected) { PressurePPLose(gBattlerAttacker, gBattlerByTurnOrder[i], MOVE_SNATCH); gProtectStructs[gBattlerByTurnOrder[i]].stealMove = FALSE; @@ -1794,9 +1564,9 @@ static bool32 AccuracyCalcHelper(u16 move) } if ((gStatuses3[gBattlerTarget] & STATUS3_PHANTOM_FORCE) - || (!(gBattleMoves[move].flags & (FLAG_DMG_IN_AIR | FLAG_DMG_2X_IN_AIR)) && gStatuses3[gBattlerTarget] & STATUS3_ON_AIR) - || (!(gBattleMoves[move].flags & FLAG_DMG_UNDERGROUND) && gStatuses3[gBattlerTarget] & STATUS3_UNDERGROUND) - || (!(gBattleMoves[move].flags & FLAG_DMG_UNDERWATER) && gStatuses3[gBattlerTarget] & STATUS3_UNDERWATER)) + || ((gStatuses3[gBattlerTarget] & STATUS3_ON_AIR) && !(gBattleMoves[move].damagesAirborne || gBattleMoves[move].damagesAirborneDoubleDamage)) + || ((gStatuses3[gBattlerTarget] & STATUS3_UNDERGROUND) && !gBattleMoves[move].damagesUnderground) + || ((gStatuses3[gBattlerTarget] & STATUS3_UNDERWATER) && !gBattleMoves[move].damagesUnderwater)) { gMoveResultFlags |= MOVE_RESULT_MISSED; JumpIfMoveFailed(7, move); @@ -1828,7 +1598,7 @@ static bool32 AccuracyCalcHelper(u16 move) } #if B_MINIMIZE_DMG_ACC >= GEN_6 - if ((gStatuses3[gBattlerTarget] & STATUS3_MINIMIZED) && (gBattleMoves[move].flags & FLAG_DMG_MINIMIZE)) + if ((gStatuses3[gBattlerTarget] & STATUS3_MINIMIZED) && gBattleMoves[move].minimizeDoubleDamage) { JumpIfMoveFailed(7, move); return TRUE; @@ -1856,7 +1626,7 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u evasionStage = gBattleMons[battlerDef].statStages[STAT_EVASION]; if (atkAbility == ABILITY_UNAWARE || atkAbility == ABILITY_KEEN_EYE) evasionStage = DEFAULT_STAT_STAGE; - if (gBattleMoves[move].flags & FLAG_STAT_STAGES_IGNORED) + if (gBattleMoves[move].ignoresTargetDefenseEvasionStages) evasionStage = DEFAULT_STAT_STAGE; if (defAbility == ABILITY_UNAWARE) accStage = DEFAULT_STAT_STAGE; @@ -2115,7 +1885,7 @@ s32 CalcCritChanceStage(u8 battlerAtk, u8 battlerDef, u32 move, bool32 recordAbi else { critChance = 2 * ((gBattleMons[gBattlerAttacker].status2 & STATUS2_FOCUS_ENERGY) != 0) - + ((gBattleMoves[gCurrentMove].flags & FLAG_HIGH_CRIT) != 0) + + (gBattleMoves[gCurrentMove].highCritRatio) + (holdEffectAtk == HOLD_EFFECT_SCOPE_LENS) + 2 * (holdEffectAtk == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBattlerAttacker].species == SPECIES_CHANSEY) + 2 * BENEFITS_FROM_LEEK(battlerAtk, holdEffectAtk) @@ -5626,7 +5396,7 @@ static void Cmd_moveend(void) if (gBattleMons[gBattlerTarget].status1 & STATUS1_FROSTBITE && gBattleMons[gBattlerTarget].hp != 0 && gBattlerAttacker != gBattlerTarget - && gBattleMoves[originallyUsedMove].flags & FLAG_THAW_USER + && gBattleMoves[originallyUsedMove].thawsUser && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { gBattleMons[gBattlerTarget].status1 &= ~STATUS1_FROSTBITE; @@ -5966,7 +5736,7 @@ static void Cmd_moveend(void) case MOVEEND_MIRROR_MOVE: // mirror move if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker]) && !(gBattleStruct->absentBattlerFlags & gBitTable[gBattlerAttacker]) - && gBattleMoves[originallyUsedMove].flags & FLAG_MIRROR_MOVE_AFFECTED + && !gBattleMoves[originallyUsedMove].mirrorMoveBanned && gHitMarker & HITMARKER_OBEYS && gBattlerAttacker != gBattlerTarget && !(gHitMarker & HITMARKER_FAINTED(gBattlerTarget)) @@ -6252,7 +6022,7 @@ static void Cmd_moveend(void) gBattleScripting.moveendState++; break; case MOVEEND_DANCER: // Special case because it's so annoying - if (gBattleMoves[gCurrentMove].flags & FLAG_DANCE) + if (gBattleMoves[gCurrentMove].danceMove) { u8 battler, nextDancer = 0; @@ -9736,7 +9506,7 @@ static void Cmd_various(void) } else { - if (GetBattlerAbility(gBattlerAttacker) == ABILITY_MEGA_LAUNCHER && gBattleMoves[gCurrentMove].flags & FLAG_MEGA_LAUNCHER_BOOST) + if (GetBattlerAbility(gBattlerAttacker) == ABILITY_MEGA_LAUNCHER && gBattleMoves[gCurrentMove].pulseMove) gBattleMoveDamage = -(gBattleMons[gActiveBattler].maxHP * 75 / 100); else gBattleMoveDamage = -(gBattleMons[gActiveBattler].maxHP / 2); @@ -9782,35 +9552,17 @@ static void Cmd_various(void) case VARIOUS_TRY_ME_FIRST: { VARIOUS_ARGS(const u8 *failInstr); - if (GetBattlerTurnOrderNum(gBattlerAttacker) > GetBattlerTurnOrderNum(gBattlerTarget)) - gBattlescriptCurrInstr = cmd->failInstr; - else if (IS_MOVE_STATUS(gBattleMons[gBattlerTarget].moves[gBattleStruct->chosenMovePositions[gBattlerTarget]])) + u16 move = gBattleMons[gBattlerTarget].moves[gBattleStruct->chosenMovePositions[gBattlerTarget]]; + if (IS_MOVE_STATUS(move) || gBattleMoves[move].meFirstBanned + || GetBattlerTurnOrderNum(gBattlerAttacker) > GetBattlerTurnOrderNum(gBattlerTarget)) gBattlescriptCurrInstr = cmd->failInstr; else { - u16 move = gBattleMons[gBattlerTarget].moves[gBattleStruct->chosenMovePositions[gBattlerTarget]]; - switch (move) - { - case MOVE_STRUGGLE: - case MOVE_CHATTER: - case MOVE_FOCUS_PUNCH: - case MOVE_THIEF: - case MOVE_COVET: - case MOVE_COUNTER: - case MOVE_MIRROR_COAT: - case MOVE_METAL_BURST: - case MOVE_ME_FIRST: - case MOVE_BEAK_BLAST: - gBattlescriptCurrInstr = cmd->failInstr; - break; - default: - gCalledMove = move; - gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; - gBattlerTarget = GetMoveTarget(gCalledMove, NO_TARGET_OVERRIDE); - gStatuses3[gBattlerAttacker] |= STATUS3_ME_FIRST; - gBattlescriptCurrInstr = cmd->nextInstr; - break; - } + gCalledMove = move; + gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; + gBattlerTarget = GetMoveTarget(gCalledMove, NO_TARGET_OVERRIDE); + gStatuses3[gBattlerAttacker] |= STATUS3_ME_FIRST; + gBattlescriptCurrInstr = cmd->nextInstr; } return; } @@ -10009,7 +9761,7 @@ static void Cmd_various(void) case VARIOUS_TRY_COPYCAT: { VARIOUS_ARGS(const u8 *failInstr); - if (gLastUsedMove == 0xFFFF || (sForbiddenMoves[gLastUsedMove] & FORBIDDEN_COPYCAT)) + if (gLastUsedMove == MOVE_UNAVAILABLE || gBattleMoves[gLastUsedMove].copycatBanned) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -10025,8 +9777,8 @@ static void Cmd_various(void) case VARIOUS_TRY_INSTRUCT: { VARIOUS_ARGS(const u8 *failInstr); - if ((sForbiddenMoves[gLastMoves[gBattlerTarget]] & FORBIDDEN_INSTRUCT) - || gLastMoves[gBattlerTarget] == 0xFFFF) + u16 move = gLastMoves[gBattlerTarget]; + if (move == MOVE_UNAVAILABLE || gBattleMoves[move].instructBanned) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -11254,7 +11006,7 @@ static void Cmd_setprotectlike(void) bool32 fail = TRUE; bool32 notLastTurn = TRUE; - if (!(gBattleMoves[gLastResultingMoves[gBattlerAttacker]].flags & FLAG_PROTECTION_MOVE)) + if (!gBattleMoves[gLastResultingMoves[gBattlerAttacker]].protectionMove) gDisableStructs[gBattlerAttacker].protectUses = 0; if (gCurrentTurnActionNumber == (gBattlersCount - 1)) @@ -12954,7 +12706,7 @@ static void Cmd_mimicattackcopy(void) { CMD_ARGS(const u8 *failInstr); - if ((sForbiddenMoves[gLastMoves[gBattlerTarget]] & FORBIDDEN_MIMIC) + if ((gBattleMoves[gLastMoves[gBattlerTarget]].mimicBanned) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED) || gLastMoves[gBattlerTarget] == MOVE_UNAVAILABLE) { @@ -13017,7 +12769,7 @@ static void Cmd_metronome(void) if (gBattleMoves[gCurrentMove].effect == EFFECT_PLACEHOLDER) continue; - if (!(sForbiddenMoves[gCurrentMove] & FORBIDDEN_METRONOME)) + if (!gBattleMoves[gCurrentMove].metronomeBanned) { gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; @@ -13326,7 +13078,8 @@ static bool8 IsTwoTurnsMove(u16 move) || gBattleMoves[move].effect == EFFECT_SOLAR_BEAM || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE || gBattleMoves[move].effect == EFFECT_BIDE - || gBattleMoves[move].effect == EFFECT_METEOR_BEAM) + || gBattleMoves[move].effect == EFFECT_METEOR_BEAM + || gBattleMoves[move].effect == EFFECT_GEOMANCY) return TRUE; else return FALSE; @@ -13360,7 +13113,7 @@ static void Cmd_trychoosesleeptalkmove(void) for (i = 0; i < MAX_MON_MOVES; i++) { - if ((sForbiddenMoves[gBattleMons[gBattlerAttacker].moves[i]] & FORBIDDEN_SLEEP_TALK) + if ((gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].sleepTalkBanned) || IsTwoTurnsMove(gBattleMons[gBattlerAttacker].moves[i])) { unusableMovesBits |= gBitTable[i]; @@ -14281,7 +14034,7 @@ static void Cmd_setforcedtarget(void) gSideTimers[GetBattlerSide(gBattlerTarget)].followmeTimer = 1; gSideTimers[GetBattlerSide(gBattlerTarget)].followmeTarget = gBattlerTarget; - gSideTimers[GetBattlerSide(gBattlerTarget)].followmePowder = TestMoveFlags(gCurrentMove, FLAG_POWDER); + gSideTimers[GetBattlerSide(gBattlerTarget)].followmePowder = gBattleMoves[gCurrentMove].powderMove; gBattlescriptCurrInstr = cmd->nextInstr; } @@ -14852,7 +14605,9 @@ static void Cmd_assistattackselect(void) { u16 move = GetMonData(&party[monId], MON_DATA_MOVE1 + moveId); - if (sForbiddenMoves[move] & FORBIDDEN_ASSIST) + if (gBattleMoves[move].copycatBanned + || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE + || gBattleMoves[move].effect == EFFECT_SKY_DROP) continue; validMoves[chooseableMovesNo++] = move; @@ -15211,10 +14966,10 @@ bool32 DoesSubstituteBlockMove(u8 battlerAtk, u8 battlerDef, u32 move) if (!(gBattleMons[battlerDef].status2 & STATUS2_SUBSTITUTE)) return FALSE; #if B_SOUND_SUBSTITUTE >= GEN_6 - else if (gBattleMoves[move].flags & FLAG_SOUND) + else if (gBattleMoves[move].soundMove) return FALSE; #endif - else if (gBattleMoves[move].flags & FLAG_HIT_IN_SUBSTITUTE) + else if (gBattleMoves[move].ignoresSubstitute) return FALSE; else if (GetBattlerAbility(battlerAtk) == ABILITY_INFILTRATOR) return FALSE; @@ -16252,11 +16007,43 @@ static bool32 CriticalCapture(u32 odds) #endif } +static const u16 sParentalBondBannedEffects[] = +{ + EFFECT_BEAT_UP, + EFFECT_BIDE, // Note: Bide should work with Parental Bond. This will be addressed in future. + EFFECT_ENDEAVOR, + EFFECT_EXPLOSION, + EFFECT_FINAL_GAMBIT, + EFFECT_FLING, + EFFECT_GEOMANCY, + EFFECT_METEOR_BEAM, + EFFECT_MULTI_HIT, + EFFECT_OHKO, + EFFECT_ROLLOUT, + EFFECT_SCALE_SHOT, + EFFECT_SEMI_INVULNERABLE, + EFFECT_SKULL_BASH, + EFFECT_SKY_DROP, + EFFECT_SOLAR_BEAM, + EFFECT_TRIPLE_KICK, + EFFECT_TWO_TURNS_ATTACK, + EFFECT_UPROAR, +}; + bool8 IsMoveAffectedByParentalBond(u16 move, u8 battlerId) { - if (gBattleMoves[move].split != SPLIT_STATUS - && !(sForbiddenMoves[move] & FORBIDDEN_PARENTAL_BOND)) + if (move != MOVE_NONE && move != MOVE_STRUGGLE + && gBattleMoves[move].split != SPLIT_STATUS + && !gBattleMoves[move].twoStrikes + && !gBattleMoves[move].threeStrikes) { + u32 i; + for (i = 0; i < ARRAY_COUNT(sParentalBondBannedEffects); i++) + { + if (gBattleMoves[move].effect == sParentalBondBannedEffects[i]) + return FALSE; + } + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { switch (GetBattlerMoveTargetType(battlerId, move)) diff --git a/src/battle_tv.c b/src/battle_tv.c index 7379b72e4b..d282393516 100644 --- a/src/battle_tv.c +++ b/src/battle_tv.c @@ -217,7 +217,7 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_PURSUIT] = 2, [EFFECT_RAPID_SPIN] = 2, [EFFECT_SONICBOOM] = 1, -// [EFFECT_UNUSED_83] = 1, +// [EFFECT_UNUSED_83] = 1, [EFFECT_MORNING_SUN] = 4, [EFFECT_SYNTHESIS] = 4, [EFFECT_MOONLIGHT] = 4, @@ -227,16 +227,16 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_DEFENSE_UP_HIT] = 1, [EFFECT_ATTACK_UP_HIT] = 1, [EFFECT_ALL_STATS_UP_HIT] = 1, -// [EFFECT_UNUSED_8D] = 1, +// [EFFECT_UNUSED_8D] = 1, [EFFECT_BELLY_DRUM] = 7, [EFFECT_PSYCH_UP] = 7, [EFFECT_MIRROR_COAT] = 6, [EFFECT_SKULL_BASH] = 3, - [EFFECT_TWISTER] = 1, +// [EFFECT_TWISTER] = 1, [EFFECT_EARTHQUAKE] = 1, [EFFECT_FUTURE_SIGHT] = 1, [EFFECT_GUST] = 1, - [EFFECT_FLINCH_MINIMIZE_HIT] = 1, +// [EFFECT_FLINCH_MINIMIZE_HIT] = 1, [EFFECT_SOLAR_BEAM] = 1, [EFFECT_THUNDER] = 1, [EFFECT_TELEPORT] = 1, diff --git a/src/battle_util.c b/src/battle_util.c index 792b8dfb1f..a94f13bf28 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -889,43 +889,6 @@ void HandleAction_ActionFinished(void) #endif } -static const u8 sMovesNotAffectedByStench[] = -{ - [MOVE_AIR_SLASH] = 1, - [MOVE_ASTONISH] = 1, - [MOVE_BITE] = 1, - [MOVE_BONE_CLUB] = 1, - [MOVE_DARK_PULSE] = 1, - [MOVE_DOUBLE_IRON_BASH] = 1, - [MOVE_DRAGON_RUSH] = 1, - [MOVE_EXTRASENSORY] = 1, - [MOVE_FAKE_OUT] = 1, - [MOVE_FIERY_WRATH] = 1, - [MOVE_FIRE_FANG] = 1, - [MOVE_FLING] = 1, - [MOVE_FLOATY_FALL] = 1, - [MOVE_HEADBUTT] = 1, - [MOVE_HEART_STAMP] = 1, - [MOVE_HYPER_FANG] = 1, - [MOVE_ICE_FANG] = 1, - [MOVE_ICICLE_CRASH] = 1, - [MOVE_IRON_HEAD] = 1, - [MOVE_NEEDLE_ARM] = 1, - [MOVE_NONE] = 1, - [MOVE_ROCK_SLIDE] = 1, - [MOVE_ROLLING_KICK] = 1, - [MOVE_SECRET_POWER] = 1, - [MOVE_SKY_ATTACK] = 1, - [MOVE_SNORE] = 1, - [MOVE_STEAMROLLER] = 1, - [MOVE_STOMP] = 1, - [MOVE_THUNDER_FANG] = 1, - [MOVE_TWISTER] = 1, - [MOVE_WATERFALL] = 1, - [MOVE_ZEN_HEADBUTT] = 1, - [MOVE_ZING_ZAP] = 1, -}; - static const u8 sAbilitiesAffectedByMoldBreaker[] = { [ABILITY_BATTLE_ARMOR] = 1, @@ -1607,22 +1570,7 @@ static bool32 IsGravityPreventingMove(u32 move) if (!(gFieldStatuses & STATUS_FIELD_GRAVITY)) return FALSE; - switch (move) - { - case MOVE_BOUNCE: - case MOVE_FLY: - case MOVE_FLYING_PRESS: - case MOVE_HIGH_JUMP_KICK: - case MOVE_JUMP_KICK: - case MOVE_MAGNET_RISE: - case MOVE_SKY_DROP: - case MOVE_SPLASH: - case MOVE_TELEKINESIS: - case MOVE_FLOATY_FALL: - return TRUE; - default: - return FALSE; - } + return gBattleMoves[move].gravityBanned; } bool32 IsHealBlockPreventingMove(u32 battler, u32 move) @@ -1715,7 +1663,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[gActiveBattler].throatChopTimer != 0 && gBattleMoves[move].flags & FLAG_SOUND) + if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[gActiveBattler].throatChopTimer != 0 && gBattleMoves[move].soundMove) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1933,7 +1881,7 @@ u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u16 check) else if (check & MOVE_LIMITATION_BELCH && IsBelchPreventingMove(battlerId, gBattleMons[battlerId].moves[i])) unusableMoves |= gBitTable[i]; // Throat Chop - else if (check & MOVE_LIMITATION_THROAT_CHOP && gDisableStructs[battlerId].throatChopTimer && gBattleMoves[gBattleMons[battlerId].moves[i]].flags & FLAG_SOUND) + else if (check & MOVE_LIMITATION_THROAT_CHOP && gDisableStructs[battlerId].throatChopTimer && gBattleMoves[gBattleMons[battlerId].moves[i]].soundMove) unusableMoves |= gBitTable[i]; // Stuff Cheeks else if (check & MOVE_LIMITATION_STUFF_CHEEKS && gBattleMons[battlerId].moves[i] == MOVE_STUFF_CHEEKS && ItemId_GetPocket(gBattleMons[gActiveBattler].item) != POCKET_BERRIES) @@ -3452,7 +3400,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleStruct->atkCancellerTracker++; break; case CANCELLER_FROZEN: // check being frozen - if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FREEZE && !(gBattleMoves[gCurrentMove].flags & FLAG_THAW_USER)) + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FREEZE && !(gBattleMoves[gCurrentMove].thawsUser)) { if (!RandomPercentage(RNG_FROZEN, 20)) { @@ -3674,7 +3622,7 @@ u8 AtkCanceller_UnableToUseMove(void) } effect = 2; } - if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FROSTBITE && (gBattleMoves[gCurrentMove].flags & FLAG_THAW_USER)) + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FROSTBITE && gBattleMoves[gCurrentMove].thawsUser) { if (!(gBattleMoves[gCurrentMove].effect == EFFECT_BURN_UP && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_FIRE))) { @@ -3688,7 +3636,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleStruct->atkCancellerTracker++; break; case CANCELLER_POWDER_MOVE: - if ((gBattleMoves[gCurrentMove].flags & FLAG_POWDER) && (gBattlerAttacker != gBattlerTarget)) + if ((gBattleMoves[gCurrentMove].powderMove) && (gBattlerAttacker != gBattlerTarget)) { #if B_POWDER_GRASS >= GEN_6 if (IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_GRASS) || GetBattlerAbility(gBattlerTarget) == ABILITY_OVERCOAT) @@ -3730,7 +3678,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleStruct->atkCancellerTracker++; break; case CANCELLER_THROAT_CHOP: - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[gBattlerAttacker].throatChopTimer && gBattleMoves[gCurrentMove].flags & FLAG_SOUND) + if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[gBattlerAttacker].throatChopTimer && gBattleMoves[gCurrentMove].soundMove) { gProtectStructs[gBattlerAttacker].usedThroatChopPreventedMove = TRUE; CancelMultiTurnMoves(gBattlerAttacker); @@ -3789,7 +3737,7 @@ u8 AtkCanceller_UnableToUseMove(void) PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 1, 0) } - else if (gBattleMoves[gCurrentMove].flags & FLAG_TWO_STRIKES) + else if (gBattleMoves[gCurrentMove].twoStrikes) { gMultiHitCounter = 2; PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 1, 0) @@ -3798,7 +3746,7 @@ u8 AtkCanceller_UnableToUseMove(void) // TODO } } - else if (gBattleMoves[gCurrentMove].effect == EFFECT_TRIPLE_KICK || gBattleMoves[gCurrentMove].flags & FLAG_THREE_STRIKES) + else if (gBattleMoves[gCurrentMove].effect == EFFECT_TRIPLE_KICK || gBattleMoves[gCurrentMove].threeStrikes) { gMultiHitCounter = 3; PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 1, 0) @@ -4950,8 +4898,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move u16 battlerAbility = GetBattlerAbility(battler); u16 targetAbility = GetBattlerAbility(gBattlerTarget); - if ((gLastUsedAbility == ABILITY_SOUNDPROOF && gBattleMoves[move].flags & FLAG_SOUND && !(moveTarget & MOVE_TARGET_USER)) - || (gLastUsedAbility == ABILITY_BULLETPROOF && gBattleMoves[move].flags & FLAG_BALLISTIC)) + if ((gLastUsedAbility == ABILITY_SOUNDPROOF && gBattleMoves[move].soundMove && !(moveTarget & MOVE_TARGET_USER)) + || (gLastUsedAbility == ABILITY_BULLETPROOF && gBattleMoves[move].ballisticMove)) { if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS) gHitMarker |= HITMARKER_NO_PPDEDUCT; @@ -5063,7 +5011,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move effect = 2, statId = STAT_DEF, statAmount = 2; break; case ABILITY_WIND_RIDER: - if (gBattleMoves[gCurrentMove].flags & FLAG_WIND_MOVE && !(GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove) & MOVE_TARGET_USER)) + if (gBattleMoves[gCurrentMove].windMove && !(GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove) & MOVE_TARGET_USER)) effect = 2, statId = STAT_ATK; break; case ABILITY_EARTH_EATER: @@ -5291,7 +5239,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && IsBattlerAlive(gBattlerAttacker) && TARGET_TURN_DAMAGED - && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)) + && IsMoveMakingContact(move, gBattlerAttacker)) { switch (gBattleMons[gBattlerAttacker].ability) { @@ -5676,7 +5624,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move } break; case ABILITY_WIND_POWER: - if (!(gBattleMoves[gCurrentMove].flags & FLAG_WIND_MOVE)) + if (!(gBattleMoves[gCurrentMove].windMove)) break; // fall through case ABILITY_ELECTROMORPHOSIS: @@ -5733,7 +5681,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && RandomWeighted(RNG_STENCH, 9, 1) && !IS_MOVE_STATUS(move) - && !sMovesNotAffectedByStench[gCurrentMove]) + && !gBattleMoves[gCurrentMove].effect != EFFECT_FLINCH_HIT + && !gBattleMoves[gCurrentMove].effect != EFFECT_FLINCH_STATUS + && !gBattleMoves[gCurrentMove].effect != EFFECT_TRIPLE_ARROWS) { gBattleScripting.moveEffect = MOVE_EFFECT_FLINCH; BattleScriptPushCursor(); @@ -5758,7 +5708,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move { case ABILITY_DANCER: if (IsBattlerAlive(battler) - && (gBattleMoves[gCurrentMove].flags & FLAG_DANCE) + && (gBattleMoves[gCurrentMove].danceMove) && !gSpecialStatuses[battler].dancerUsedMove && gBattlerAttacker != battler) { @@ -6150,7 +6100,7 @@ u32 GetBattlerAbility(u8 battlerId) || gBattleMons[gBattlerAttacker].ability == ABILITY_TERAVOLT || gBattleMons[gBattlerAttacker].ability == ABILITY_TURBOBLAZE) && !(gStatuses3[gBattlerAttacker] & STATUS3_GASTRO_ACID)) - || gBattleMoves[gCurrentMove].flags & FLAG_TARGET_ABILITY_IGNORED) + || gBattleMoves[gCurrentMove].ignoresTargetAbility) && sAbilitiesAffectedByMoldBreaker[gBattleMons[battlerId].ability] && gBattlerByTurnOrder[gCurrentTurnActionNumber] == gBattlerAttacker && gActionsByTurnOrder[gBattlerByTurnOrder[gBattlerAttacker]] == B_ACTION_USE_MOVE @@ -7545,21 +7495,25 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) switch (atkHoldEffect) { case HOLD_EFFECT_FLINCH: - #if B_SERENE_GRACE_BOOST >= GEN_5 - if (GetBattlerAbility(gBattlerAttacker) == ABILITY_SERENE_GRACE) - atkHoldEffectParam *= 2; - #endif - if (gBattleMoveDamage != 0 // Need to have done damage - && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && TARGET_TURN_DAMAGED - && RandomPercentage(RNG_HOLD_EFFECT_FLINCH, atkHoldEffectParam) - && gBattleMoves[gCurrentMove].flags & FLAG_KINGS_ROCK_AFFECTED - && gBattleMons[gBattlerTarget].hp) { - gBattleScripting.moveEffect = MOVE_EFFECT_FLINCH; - BattleScriptPushCursor(); - SetMoveEffect(FALSE, 0); - BattleScriptPop(); + u16 ability = GetBattlerAbility(gBattlerAttacker); + #if B_SERENE_GRACE_BOOST >= GEN_5 + if (ability == ABILITY_SERENE_GRACE) + atkHoldEffectParam *= 2; + #endif + if (gBattleMoveDamage != 0 // Need to have done damage + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && TARGET_TURN_DAMAGED + && !gBattleMoves[gCurrentMove].ignoresKingsRock + && gBattleMons[gBattlerTarget].hp + && RandomPercentage(RNG_HOLD_EFFECT_FLINCH, atkHoldEffectParam) + && ability != ABILITY_STENCH) + { + gBattleScripting.moveEffect = MOVE_EFFECT_FLINCH; + BattleScriptPushCursor(); + SetMoveEffect(FALSE, 0); + BattleScriptPop(); + } } break; case HOLD_EFFECT_BLUNDER_POLICY: @@ -7621,7 +7575,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_THROAT_SPRAY: // Does NOT need to be a damaging move if (gProtectStructs[gBattlerAttacker].targetAffected && gBattleMons[gBattlerAttacker].hp != 0 - && gBattleMoves[gCurrentMove].flags & FLAG_SOUND + && gBattleMoves[gCurrentMove].soundMove && CompareStat(gBattlerAttacker, STAT_SPATK, MAX_STAT_STAGE, CMP_LESS_THAN) && !NoAliveMonsForEitherParty()) // Don't activate if battle will end { @@ -8135,14 +8089,14 @@ bool32 IsMoveMakingContact(u16 move, u8 battlerAtk) { u16 atkHoldEffect = GetBattlerHoldEffect(battlerAtk, TRUE); - if (!(gBattleMoves[move].flags & FLAG_MAKES_CONTACT)) + if (!gBattleMoves[move].makesContact) { if (gBattleMoves[move].effect == EFFECT_SHELL_SIDE_ARM && gBattleStruct->swapDamageCategory) return TRUE; else return FALSE; } - else if ((atkHoldEffect == HOLD_EFFECT_PUNCHING_GLOVE && (gBattleMoves[move].flags & FLAG_IRON_FIST_BOOST)) + else if ((atkHoldEffect == HOLD_EFFECT_PUNCHING_GLOVE && gBattleMoves[move].punchingMove) || atkHoldEffect == HOLD_EFFECT_PROTECTIVE_PADS || GetBattlerAbility(battlerAtk) == ABILITY_LONG_REACH) { @@ -8179,11 +8133,11 @@ bool32 IsBattlerProtected(u8 battlerId, u16 move) // Protective Pads doesn't stop Unseen Fist from bypassing Protect effects, so IsMoveMakingContact() isn't used here. // This means extra logic is needed to handle Shell Side Arm. if (GetBattlerAbility(gBattlerAttacker) == ABILITY_UNSEEN_FIST - && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT || (gBattleMoves[move].effect == EFFECT_SHELL_SIDE_ARM && gBattleStruct->swapDamageCategory))) + && (gBattleMoves[move].makesContact || (gBattleMoves[move].effect == EFFECT_SHELL_SIDE_ARM && gBattleStruct->swapDamageCategory))) return FALSE; - else if (!(gBattleMoves[move].flags & FLAG_PROTECT_AFFECTED)) + else if (gBattleMoves[move].ignoresProtect) return FALSE; - else if (gBattleMoves[move].effect == MOVE_EFFECT_FEINT) + else if (gBattleMoves[move].effect == EFFECT_FEINT) return FALSE; else if (gProtectStructs[battlerId].protected) return TRUE; @@ -8734,15 +8688,15 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe MulModifier(&modifier, UQ_4_12(1.5)); break; case ABILITY_RECKLESS: - if (gBattleMoves[move].flags & FLAG_RECKLESS_BOOST) + if (IS_MOVE_RECOIL(move)) MulModifier(&modifier, UQ_4_12(1.2)); break; case ABILITY_IRON_FIST: - if (gBattleMoves[move].flags & FLAG_IRON_FIST_BOOST) + if (gBattleMoves[move].punchingMove) MulModifier(&modifier, UQ_4_12(1.2)); break; case ABILITY_SHEER_FORCE: - if (gBattleMoves[move].flags & FLAG_SHEER_FORCE_BOOST) + if (gBattleMoves[move].sheerForceBoost) MulModifier(&modifier, UQ_4_12(1.3)); break; case ABILITY_SAND_FORCE: @@ -8765,11 +8719,11 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe MulModifier(&modifier, UQ_4_12(1.3)); break; case ABILITY_STRONG_JAW: - if (gBattleMoves[move].flags & FLAG_STRONG_JAW_BOOST) + if (gBattleMoves[move].bitingMove) MulModifier(&modifier, UQ_4_12(1.5)); break; case ABILITY_MEGA_LAUNCHER: - if (gBattleMoves[move].flags & FLAG_MEGA_LAUNCHER_BOOST) + if (gBattleMoves[move].pulseMove) MulModifier(&modifier, UQ_4_12(1.5)); break; case ABILITY_WATER_BUBBLE: @@ -8801,7 +8755,7 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe MulModifier(&modifier, UQ_4_12(1.2)); break; case ABILITY_PUNK_ROCK: - if (gBattleMoves[move].flags & FLAG_SOUND) + if (gBattleMoves[move].soundMove) MulModifier(&modifier, UQ_4_12(1.3)); break; case ABILITY_STEELY_SPIRIT: @@ -8847,7 +8801,7 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe MulModifier(&modifier, UQ_4_12(1.3)); break; case ABILITY_SHARPNESS: - if (gBattleMoves[move].flags & FLAG_SLICING_MOVE) + if (gBattleMoves[move].slicingMove) MulModifier(&modifier, UQ_4_12(1.5)); break; case ABILITY_SUPREME_OVERLORD: @@ -9013,7 +8967,7 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe MulModifier(&modifier, holdEffectModifier); break; case HOLD_EFFECT_PUNCHING_GLOVE: - if (gBattleMoves[move].flags & FLAG_IRON_FIST_BOOST) + if (gBattleMoves[move].punchingMove) MulModifier(&modifier, UQ_4_12(1.1)); break; } @@ -9350,7 +9304,7 @@ static u32 CalcDefenseStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, if (GetBattlerAbility(battlerAtk) == ABILITY_UNAWARE) defStage = DEFAULT_STAT_STAGE; // certain moves also ignore stat changes - if (gBattleMoves[move].flags & FLAG_STAT_STAGES_IGNORED) + if (gBattleMoves[move].ignoresTargetDefenseEvasionStages) defStage = DEFAULT_STAT_STAGE; defStat *= gStatStageRatios[defStage][0]; @@ -9391,7 +9345,7 @@ static u32 CalcDefenseStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, MulModifier(&modifier, UQ_4_12(1.5)); break; case ABILITY_PUNK_ROCK: - if (gBattleMoves[move].flags & FLAG_SOUND) + if (gBattleMoves[move].soundMove) MulModifier(&modifier, UQ_4_12(2.0)); break; case ABILITY_PURIFYING_SALT: @@ -9635,13 +9589,13 @@ static u32 CalcFinalDmg(u32 dmg, u16 move, u8 battlerAtk, u8 battlerDef, u8 move break; } - if (gBattleMoves[move].flags & FLAG_DMG_MINIMIZE && gStatuses3[battlerDef] & STATUS3_MINIMIZED) + if (gBattleMoves[move].minimizeDoubleDamage && gStatuses3[battlerDef] & STATUS3_MINIMIZED) MulModifier(&finalModifier, UQ_4_12(2.0)); - if (gBattleMoves[move].flags & FLAG_DMG_UNDERGROUND && gStatuses3[battlerDef] & STATUS3_UNDERGROUND) + if (gBattleMoves[move].damagesUnderground && gStatuses3[battlerDef] & STATUS3_UNDERGROUND) MulModifier(&finalModifier, UQ_4_12(2.0)); - if (gBattleMoves[move].flags & FLAG_DMG_UNDERWATER && gStatuses3[battlerDef] & STATUS3_UNDERWATER) + if (gBattleMoves[move].damagesUnderwater && gStatuses3[battlerDef] & STATUS3_UNDERWATER) MulModifier(&finalModifier, UQ_4_12(2.0)); - if (gBattleMoves[move].flags & FLAG_DMG_2X_IN_AIR && gStatuses3[battlerDef] & STATUS3_ON_AIR) + if (gBattleMoves[move].damagesAirborneDoubleDamage && gStatuses3[battlerDef] & STATUS3_ON_AIR) MulModifier(&finalModifier, UQ_4_12(2.0)); dmg = ApplyModifier(finalModifier, dmg); @@ -9801,7 +9755,7 @@ static u16 CalcTypeEffectivenessMultiplierInternal(u16 move, u8 moveType, u8 bat } #endif } - else if (moveType == TYPE_GROUND && !IsBattlerGrounded2(battlerDef, TRUE) && !(gBattleMoves[move].flags & FLAG_DMG_UNGROUNDED_IGNORE_TYPE_IF_FLYING)) + else if (moveType == TYPE_GROUND && !IsBattlerGrounded2(battlerDef, TRUE) && !(gBattleMoves[move].ignoreTypeIfFlyingAndUngrounded)) { modifier = UQ_4_12(0.0); if (recordAbilities && defAbility == ABILITY_LEVITATE) @@ -9821,7 +9775,7 @@ static u16 CalcTypeEffectivenessMultiplierInternal(u16 move, u8 moveType, u8 bat #endif // Thousand Arrows ignores type modifiers for flying mons - if (!IsBattlerGrounded(battlerDef) && (gBattleMoves[move].flags & FLAG_DMG_UNGROUNDED_IGNORE_TYPE_IF_FLYING) + if (!IsBattlerGrounded(battlerDef) && (gBattleMoves[move].ignoreTypeIfFlyingAndUngrounded) && (gBattleMons[battlerDef].type1 == TYPE_FLYING || gBattleMons[battlerDef].type2 == TYPE_FLYING || gBattleMons[battlerDef].type3 == TYPE_FLYING)) { modifier = UQ_4_12(1.0); @@ -10430,13 +10384,6 @@ u8 GetSplitBasedOnStats(u8 battlerId) return SPLIT_PHYSICAL; } -bool32 TestMoveFlags(u16 move, u32 flag) -{ - if (gBattleMoves[move].flags & flag) - return TRUE; - return FALSE; -} - static u8 GetFlingPowerFromItemId(u16 itemId) { if (itemId >= ITEM_TM01 && itemId <= ITEM_HM08) @@ -10678,7 +10625,7 @@ bool32 IsBattlerAffectedByHazards(u8 battlerId, bool32 toxicSpikes) bool32 TestSheerForceFlag(u8 battler, u16 move) { - if (GetBattlerAbility(battler) == ABILITY_SHEER_FORCE && gBattleMoves[move].flags & FLAG_SHEER_FORCE_BOOST) + if (GetBattlerAbility(battler) == ABILITY_SHEER_FORCE && gBattleMoves[move].sheerForceBoost) return TRUE; else return FALSE; diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 65ace8f3b8..96e6e56481 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -10,8 +10,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, + .mimicBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_POUND] = @@ -24,9 +28,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS == GEN_4, }, [MOVE_KARATE_CHOP] = @@ -39,9 +44,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .highCritRatio = TRUE, }, [MOVE_DOUBLE_SLAP] = @@ -54,9 +60,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_COMET_PUNCH] = @@ -69,9 +75,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, }, [MOVE_MEGA_PUNCH] = @@ -84,9 +91,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, }, [MOVE_PAY_DAY] = @@ -99,7 +107,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -114,9 +121,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_ICE_PUNCH] = @@ -133,9 +142,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_THUNDER_PUNCH] = @@ -148,9 +159,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_SCRATCH] = @@ -163,9 +176,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_VISE_GRIP] = @@ -178,9 +191,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_GUILLOTINE] = @@ -193,18 +206,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_RAZOR_WIND] = { - #if B_UPDATED_MOVE_DATA >= GEN_4 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - #endif .effect = EFFECT_TWO_TURNS_ATTACK, .power = 80, .type = TYPE_NORMAL, @@ -215,6 +223,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .highCritRatio = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_SWORDS_DANCE] = @@ -231,9 +242,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED | FLAG_DANCE, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .danceMove = TRUE, + .snatchAffected = TRUE, }, [MOVE_CUT] = @@ -246,9 +258,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .slicingMove = TRUE, }, [MOVE_GUST] = @@ -261,9 +274,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_2X_IN_AIR | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_4) || (B_UPDATED_MOVE_FLAGS < GEN_3), + .damagesAirborneDoubleDamage = TRUE, + .windMove = TRUE, }, [MOVE_WING_ATTACK] = @@ -276,22 +291,17 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_WHIRLWIND] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .accuracy = 0, - .flags = FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_WIND_MOVE, - #elif B_UPDATED_MOVE_DATA == GEN_5 - .accuracy = 100, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, #else .accuracy = 100, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, #endif .effect = EFFECT_ROAR, .power = 0, @@ -302,6 +312,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -6, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .windMove = TRUE, + .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .copycatBanned = TRUE, }, [MOVE_FLY] = @@ -318,9 +332,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .gravityBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_BIND] = @@ -337,9 +354,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, }, [MOVE_SLAM] = @@ -352,9 +370,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_VINE_WHIP] = @@ -362,7 +380,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 45, .pp = 25, - #elif B_UPDATED_MOVE_DATA == GEN_4 || B_UPDATED_MOVE_DATA == GEN_5 + #elif B_UPDATED_MOVE_DATA >= GEN_4 .power = 35, .pp = 15, #else @@ -375,9 +393,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_STOMP] = @@ -390,9 +408,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_DMG_MINIMIZE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .minimizeDoubleDamage = TRUE, }, [MOVE_DOUBLE_KICK] = @@ -405,9 +425,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .twoStrikes = TRUE, }, [MOVE_MEGA_KICK] = @@ -420,9 +441,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_JUMP_KICK] = @@ -443,18 +464,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .gravityBanned = TRUE, }, [MOVE_ROLLING_KICK] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #endif .effect = EFFECT_FLINCH_HIT, .power = 60, .type = TYPE_FIGHTING, @@ -465,6 +482,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, + .sheerForceBoost = TRUE, }, [MOVE_SAND_ATTACK] = @@ -477,9 +497,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_HEADBUTT] = @@ -492,9 +512,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_HORN_ATTACK] = @@ -507,9 +528,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_FURY_ATTACK] = @@ -522,9 +543,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_HORN_DRILL] = @@ -537,9 +558,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_TACKLE] = @@ -547,7 +568,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_7 .power = 40, .accuracy = 100, - #elif B_UPDATED_MOVE_DATA == GEN_5 || B_UPDATED_MOVE_DATA == GEN_6 + #elif B_UPDATED_MOVE_DATA >= GEN_5 .power = 50, .accuracy = 100, #else @@ -560,18 +581,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_BODY_SLAM] = { - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_DMG_MINIMIZE, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #endif .effect = EFFECT_PARALYZE_HIT, .power = 85, .type = TYPE_NORMAL, @@ -582,6 +598,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_WRAP] = @@ -598,9 +617,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_TAKE_DOWN] = @@ -613,9 +632,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_THRASH] = @@ -633,9 +652,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_RANDOM, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_DOUBLE_EDGE] = @@ -648,9 +667,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_TAIL_WHIP] = @@ -663,9 +682,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_POISON_STING] = @@ -678,9 +697,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_TWINEEDLE] = @@ -693,9 +712,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_TWO_STRIKES, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .twoStrikes = TRUE, }, [MOVE_PIN_MISSILE] = @@ -713,7 +734,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -728,9 +748,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_BITE] = @@ -743,9 +763,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_STRONG_JAW_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .bitingMove = TRUE, }, [MOVE_GROWL] = @@ -758,22 +780,18 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .magicCoatAffected = TRUE, + .soundMove = TRUE, }, [MOVE_ROAR] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .accuracy = 0, - .flags = FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_MAGIC_COAT_AFFECTED, - #elif B_UPDATED_MOVE_DATA == GEN_5 - .accuracy = 100, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_MAGIC_COAT_AFFECTED, #else .accuracy = 100, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, #endif .effect = EFFECT_ROAR, .power = 0, @@ -784,6 +802,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -6, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .soundMove = TRUE, + .copycatBanned = TRUE, }, [MOVE_SING] = @@ -796,9 +818,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .magicCoatAffected = TRUE, + .soundMove = TRUE, }, [MOVE_SUPERSONIC] = @@ -811,9 +834,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .magicCoatAffected = TRUE, + .soundMove = TRUE, }, [MOVE_SONIC_BOOM] = @@ -826,7 +850,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -835,13 +858,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_5 .accuracy = 100, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGIC_COAT_AFFECTED, #elif B_UPDATED_MOVE_DATA == GEN_4 .accuracy = 80, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, #else .accuracy = 55, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, #endif .effect = EFFECT_DISABLE, .power = 0, @@ -852,6 +872,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_ACID] = @@ -868,9 +889,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_EMBER] = @@ -883,9 +904,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_FLAMETHROWER] = @@ -902,9 +923,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_MIST] = @@ -917,9 +938,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .snatchAffected = TRUE, }, [MOVE_WATER_GUN] = @@ -932,7 +953,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -951,7 +971,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -961,7 +980,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 90, .target = MOVE_TARGET_FOES_AND_ALLY, - #elif B_UPDATED_MOVE_DATA == GEN_4 || B_UPDATED_MOVE_DATA == GEN_5 + #elif B_UPDATED_MOVE_DATA >= GEN_4 .power = 95, .target = MOVE_TARGET_FOES_AND_ALLY, #else @@ -974,9 +993,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 15, .secondaryEffectChance = 0, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_UNDERWATER, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .damagesUnderwater = TRUE, }, [MOVE_ICE_BEAM] = @@ -999,9 +1018,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_BLIZZARD] = @@ -1022,9 +1041,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .windMove = TRUE, }, [MOVE_PSYBEAM] = @@ -1037,9 +1057,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_BUBBLE_BEAM] = @@ -1052,9 +1072,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_AURORA_BEAM] = @@ -1067,9 +1087,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_HYPER_BEAM] = @@ -1082,9 +1102,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, + .instructBanned = TRUE, }, [MOVE_PECK] = @@ -1097,9 +1118,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_DRILL_PECK] = @@ -1112,9 +1133,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_SUBMISSION] = @@ -1131,9 +1152,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_LOW_KICK] = @@ -1146,20 +1167,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_COUNTER] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED, - #elif B_UPDATED_MOVE_DATA == GEN_4 - .flags = FLAG_MAKES_CONTACT, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED, - #endif .effect = EFFECT_COUNTER, .power = 1, .type = TYPE_FIGHTING, @@ -1170,6 +1184,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -5, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .meFirstBanned = TRUE, + .metronomeBanned = TRUE, // B_UPDATED_MOVE_FLAGS >= GEN_2 + .copycatBanned = TRUE, }, [MOVE_SEISMIC_TOSS] = @@ -1182,9 +1202,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_STRENGTH] = @@ -1197,9 +1217,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_ABSORB] = @@ -1216,9 +1236,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 }, [MOVE_MEGA_DRAIN] = @@ -1235,9 +1255,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 }, [MOVE_LEECH_SEED] = @@ -1250,9 +1270,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .magicCoatAffected = TRUE, }, [MOVE_GROWTH] = @@ -1273,9 +1293,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .snatchAffected = TRUE, }, [MOVE_RAZOR_LEAF] = @@ -1288,9 +1308,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .highCritRatio = TRUE, + .slicingMove = TRUE, }, [MOVE_SOLAR_BEAM] = @@ -1303,9 +1324,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_POISON_POWDER] = @@ -1318,9 +1340,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_POWDER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .magicCoatAffected = TRUE, + .powderMove = TRUE, }, [MOVE_STUN_SPORE] = @@ -1333,9 +1356,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_POWDER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .magicCoatAffected = TRUE, + .powderMove = TRUE, }, [MOVE_SLEEP_POWDER] = @@ -1348,9 +1372,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_POWDER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .magicCoatAffected = TRUE, + .powderMove = TRUE, }, [MOVE_PETAL_DANCE] = @@ -1371,9 +1396,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_RANDOM, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DANCE, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .danceMove = TRUE, }, [MOVE_STRING_SHOT] = @@ -1390,9 +1416,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_DRAGON_RAGE] = @@ -1405,9 +1431,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_4) || (B_UPDATED_MOVE_FLAGS < GEN_3), }, [MOVE_FIRE_SPIN] = @@ -1425,10 +1451,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, }, [MOVE_THUNDER_SHOCK] = @@ -1441,9 +1466,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_THUNDERBOLT] = @@ -1460,9 +1485,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_THUNDER_WAVE] = @@ -1479,9 +1504,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_THUNDER] = @@ -1498,9 +1523,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_DMG_IN_AIR, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .damagesAirborne = TRUE, }, [MOVE_ROCK_THROW] = @@ -1513,7 +1539,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1528,9 +1553,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_UNDERGROUND, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, + .damagesUnderground = TRUE, }, [MOVE_FISSURE] = @@ -1543,9 +1569,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_DMG_UNDERGROUND, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .damagesUnderground = TRUE, }, [MOVE_DIG] = @@ -1562,9 +1588,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_TOXIC] = @@ -1581,9 +1609,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_CONFUSION] = @@ -1596,9 +1624,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_PSYCHIC] = @@ -1611,9 +1639,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_HYPNOSIS] = @@ -1626,9 +1654,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_MEDITATE] = @@ -1641,9 +1669,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .snatchAffected = TRUE, }, [MOVE_AGILITY] = @@ -1656,9 +1684,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_QUICK_ATTACK] = @@ -1671,9 +1699,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_RAGE] = @@ -1686,9 +1714,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_TELEPORT] = @@ -1701,7 +1729,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = -6, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, }, @@ -1716,7 +1743,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -1731,9 +1757,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .mimicBanned = TRUE, + .metronomeBanned = TRUE, // B_UPDATED_MOVE_FLAGS >= GEN_2 + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_SCREECH] = @@ -1746,9 +1776,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .magicCoatAffected = TRUE, + .soundMove = TRUE, }, [MOVE_DOUBLE_TEAM] = @@ -1761,9 +1792,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_RECOVER] = @@ -1782,9 +1813,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_HARDEN] = @@ -1797,9 +1828,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .snatchAffected = TRUE, }, [MOVE_MINIMIZE] = @@ -1816,9 +1847,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_SMOKESCREEN] = @@ -1831,9 +1862,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_CONFUSE_RAY] = @@ -1846,9 +1877,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_WITHDRAW] = @@ -1861,9 +1892,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .snatchAffected = TRUE, }, [MOVE_DEFENSE_CURL] = @@ -1876,9 +1907,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .snatchAffected = TRUE, }, [MOVE_BARRIER] = @@ -1895,9 +1926,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_LIGHT_SCREEN] = @@ -1910,9 +1941,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .snatchAffected = TRUE, }, [MOVE_HAZE] = @@ -1925,7 +1956,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, }, @@ -1940,9 +1970,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .snatchAffected = TRUE, }, [MOVE_FOCUS_ENERGY] = @@ -1955,9 +1985,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .snatchAffected = TRUE, + .sleepTalkBanned = TRUE, }, [MOVE_BIDE] = @@ -1975,9 +2006,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_METRONOME] = @@ -1990,9 +2023,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_DEPENDS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_3, + .instructBanned = TRUE, }, [MOVE_MIRROR_MOVE] = @@ -2005,9 +2041,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_DEPENDS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_2, + .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, + .copycatBanned = TRUE, + .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_3, + .instructBanned = TRUE, }, [MOVE_SELF_DESTRUCT] = @@ -2020,7 +2059,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2035,9 +2073,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ballisticMove = TRUE, }, [MOVE_LICK] = @@ -2054,9 +2092,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_SMOG] = @@ -2073,9 +2112,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 40, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_SLUDGE] = @@ -2088,9 +2127,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_BONE_CLUB] = @@ -2103,9 +2142,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_FIRE_BLAST] = @@ -2122,22 +2161,17 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_WATERFALL] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 + #if B_UPDATED_MOVE_DATA >= GEN_4 .effect = EFFECT_FLINCH_HIT, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #elif B_UPDATED_MOVE_DATA == GEN_4 - .effect = EFFECT_FLINCH_HIT, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, #else .effect = EFFECT_HIT, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, #endif .power = 80, .type = TYPE_WATER, @@ -2148,6 +2182,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_CLAMP] = @@ -2165,9 +2201,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, }, [MOVE_SWIFT] = @@ -2180,7 +2217,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2200,9 +2236,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_SPIKE_CANNON] = @@ -2215,7 +2253,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2230,9 +2267,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_AMNESIA] = @@ -2245,18 +2283,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_KINESIS] = { - #if B_UPDATED_MOVE_DATA >= GEN_4 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGIC_COAT_AFFECTED, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #endif .effect = EFFECT_ACCURACY_DOWN, .power = 0, .type = TYPE_PSYCHIC, @@ -2267,6 +2300,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_SOFT_BOILED] = @@ -2283,9 +2317,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_HIGH_JUMP_KICK] = @@ -2306,9 +2340,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .gravityBanned = TRUE, }, [MOVE_GLARE] = @@ -2327,9 +2362,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_DREAM_EATER] = @@ -2342,7 +2377,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2365,9 +2399,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 40, .secondaryEffectChance = 0, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_BARRAGE] = @@ -2380,9 +2414,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ballisticMove = TRUE, }, [MOVE_LEECH_LIFE] = @@ -2400,9 +2434,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 }, [MOVE_LOVELY_KISS] = @@ -2415,18 +2450,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_SKY_ATTACK] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #endif .effect = EFFECT_TWO_TURNS_ATTACK, .power = 140, .type = TYPE_FLYING, @@ -2438,6 +2468,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_FLINCH, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_TRANSFORM] = @@ -2450,9 +2483,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .ignoresProtect = TRUE, + .mimicBanned = TRUE, + .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, + .copycatBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_BUBBLE] = @@ -2469,9 +2506,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_DIZZY_PUNCH] = @@ -2484,9 +2521,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_SPORE] = @@ -2499,9 +2538,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_POWDER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .magicCoatAffected = TRUE, + .powderMove = TRUE, }, [MOVE_FLASH] = @@ -2518,9 +2558,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_PSYWAVE] = @@ -2537,7 +2577,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2552,9 +2591,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_3, + .gravityBanned = TRUE, }, [MOVE_ACID_ARMOR] = @@ -2571,9 +2610,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_CRABHAMMER] = @@ -2594,9 +2633,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .highCritRatio = TRUE, }, [MOVE_EXPLOSION] = @@ -2609,7 +2649,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -2624,9 +2663,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_BONEMERANG] = @@ -2639,9 +2678,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoStrikes = TRUE, }, [MOVE_REST] = @@ -2658,9 +2697,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_ROCK_SLIDE] = @@ -2673,9 +2712,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_HYPER_FANG] = @@ -2688,9 +2727,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_STRONG_JAW_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .bitingMove = TRUE, }, [MOVE_SHARPEN] = @@ -2703,18 +2744,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .snatchAffected = TRUE, }, [MOVE_CONVERSION] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_SNATCH_AFFECTED, - #else - .flags = 0, - #endif .effect = EFFECT_CONVERSION, .power = 0, .type = TYPE_NORMAL, @@ -2725,6 +2761,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_TRI_ATTACK] = @@ -2737,9 +2774,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_SUPER_FANG] = @@ -2752,9 +2789,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 }, [MOVE_SLASH] = @@ -2767,9 +2805,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .highCritRatio = TRUE, + .slicingMove = TRUE, }, [MOVE_SUBSTITUTE] = @@ -2782,20 +2822,18 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_STRUGGLE] = { #if B_UPDATED_MOVE_DATA >= GEN_4 .accuracy = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .effect = EFFECT_RECOIL_HP_25, #else .accuracy = 100, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .effect = EFFECT_RECOIL_25, #endif .power = 50, @@ -2806,6 +2844,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, + .meFirstBanned = TRUE, + .mimicBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_SKETCH] = @@ -2818,9 +2863,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .ignoresProtect = TRUE, + .mimicBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, + .instructBanned = TRUE, }, [MOVE_TRIPLE_KICK] = @@ -2833,9 +2883,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_THIEF] = @@ -2853,18 +2903,17 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .meFirstBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_SPIDER_WEB] = { - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flags = FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #endif .effect = EFFECT_MEAN_LOOK, .power = 0, .type = TYPE_BUG, @@ -2875,6 +2924,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = (B_UPDATED_MOVE_FLAGS >= GEN_6) || (B_UPDATED_MOVE_FLAGS <= GEN_3), + .magicCoatAffected = TRUE, }, [MOVE_MIND_READER] = @@ -2891,7 +2942,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -2910,9 +2960,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = B_UPDATED_MOVE_FLAGS <= GEN_3, }, [MOVE_FLAME_WHEEL] = @@ -2925,22 +2975,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_THAW_USER, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .thawsUser = TRUE, }, [MOVE_SNORE] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 50, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND, - #elif B_UPDATED_MOVE_DATA == GEN_5 - .power = 40, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND, #else .power = 40, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND, #endif .effect = EFFECT_SNORE, .type = TYPE_NORMAL, @@ -2951,6 +2998,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .soundMove = TRUE, + .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_CURSE] = @@ -2967,9 +3017,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_CURSE, + .ignoresProtect = TRUE, }, [MOVE_FLAIL] = @@ -2982,9 +3032,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_CONVERSION_2] = @@ -2997,9 +3047,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_AEROBLAST] = @@ -3012,9 +3062,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .highCritRatio = TRUE, }, [MOVE_COTTON_SPORE] = @@ -3035,9 +3085,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 40, .secondaryEffectChance = 0, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_POWDER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .magicCoatAffected = TRUE, + .powderMove = TRUE, }, [MOVE_REVERSAL] = @@ -3050,18 +3101,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_SPITE] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGIC_COAT_AFFECTED, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #endif .effect = EFFECT_SPITE, .power = 0, .type = TYPE_GHOST, @@ -3072,6 +3118,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_POWDER_SNOW] = @@ -3088,9 +3135,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_PROTECT] = @@ -3107,9 +3154,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, - .flags = FLAG_PROTECTION_MOVE, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .protectionMove = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_MACH_PUNCH] = @@ -3122,9 +3171,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, }, [MOVE_SCARY_FACE] = @@ -3141,17 +3191,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_FEINT_ATTACK] = { #if B_UPDATED_MOVE_DATA >= GEN_4 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .makesContact = TRUE, #endif .effect = EFFECT_HIT, .power = 60, @@ -3179,9 +3227,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_BELLY_DRUM] = @@ -3194,9 +3242,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .snatchAffected = TRUE, }, [MOVE_SLUDGE_BOMB] = @@ -3209,9 +3257,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_BALLISTIC, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .ballisticMove = TRUE, }, [MOVE_MUD_SLAP] = @@ -3224,9 +3273,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_OCTAZOOKA] = @@ -3239,18 +3288,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 50, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_BALLISTIC | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .ballisticMove = TRUE, }, [MOVE_SPIKES] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_MAGIC_COAT_AFFECTED, - #else - .flags = 0, - #endif .effect = EFFECT_SPIKES, .power = 0, .type = TYPE_GROUND, @@ -3261,6 +3306,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_ZAP_CANNON] = @@ -3277,22 +3323,18 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_BALLISTIC, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .ballisticMove = TRUE, }, [MOVE_FORESIGHT] = { #if B_UPDATED_MOVE_DATA >= GEN_5 .accuracy = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGIC_COAT_AFFECTED, - #elif B_UPDATED_MOVE_DATA == GEN_4 - .accuracy = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, #else .accuracy = 100, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, #endif .effect = EFFECT_FORESIGHT, .power = 0, @@ -3303,6 +3345,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_DESTINY_BOND] = @@ -3315,9 +3358,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_FOLLOW_ME, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_PERISH_SONG] = @@ -3330,9 +3374,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = FLAG_SOUND, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .soundMove = TRUE, }, [MOVE_ICY_WIND] = @@ -3345,9 +3390,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .windMove = TRUE, }, [MOVE_DETECT] = @@ -3364,9 +3410,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 5, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, - .flags = FLAG_PROTECTION_MOVE, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, + .protectionMove = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_BONE_RUSH] = @@ -3383,7 +3431,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -3402,7 +3449,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -3425,9 +3471,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_RANDOM, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .instructBanned = TRUE, }, [MOVE_SANDSTORM] = @@ -3440,9 +3487,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = FLAG_WIND_MOVE, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .windMove = TRUE, }, [MOVE_GIGA_DRAIN] = @@ -3463,9 +3510,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 }, [MOVE_ENDURE] = @@ -3482,9 +3529,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, - .flags = FLAG_PROTECTION_MOVE, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .protectionMove = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_CHARM] = @@ -3501,9 +3550,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_ROLLOUT] = @@ -3516,9 +3565,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .instructBanned = TRUE, }, [MOVE_FALSE_SWIPE] = @@ -3531,9 +3581,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_SWAGGER] = @@ -3550,9 +3600,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .magicCoatAffected = TRUE, }, [MOVE_MILK_DRINK] = @@ -3569,9 +3619,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_SPARK] = @@ -3584,9 +3634,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_FURY_CUTTER] = @@ -3605,9 +3656,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .slicingMove = TRUE, }, [MOVE_STEEL_WING] = @@ -3620,18 +3672,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_MEAN_LOOK] = { - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flags = FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #endif .effect = EFFECT_MEAN_LOOK, .power = 0, .type = TYPE_NORMAL, @@ -3642,6 +3690,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = (B_UPDATED_MOVE_FLAGS >= GEN_6) || (B_UPDATED_MOVE_FLAGS <= GEN_3), + .magicCoatAffected = TRUE, }, [MOVE_ATTRACT] = @@ -3654,9 +3704,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .magicCoatAffected = TRUE, }, [MOVE_SLEEP_TALK] = @@ -3669,18 +3719,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_DEPENDS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_HEAL_BELL] = { - #if B_UPDATED_MOVE_DATA != GEN_5 - .flags = FLAG_SNATCH_AFFECTED | FLAG_SOUND, - #else - .flags = FLAG_SNATCH_AFFECTED, - #endif .effect = EFFECT_HEAL_BELL, .power = 0, .type = TYPE_NORMAL, @@ -3691,6 +3739,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .snatchAffected = TRUE, + .soundMove = B_UPDATED_MOVE_FLAGS != GEN_5, }, [MOVE_RETURN] = @@ -3703,9 +3753,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_PRESENT] = @@ -3718,9 +3768,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 }, [MOVE_FRUSTRATION] = @@ -3733,9 +3783,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_SAFEGUARD] = @@ -3748,9 +3798,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .snatchAffected = TRUE, }, [MOVE_PAIN_SPLIT] = @@ -3763,7 +3813,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -3778,9 +3827,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 50, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_THAW_USER, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .thawsUser = TRUE, }, [MOVE_MAGNITUDE] = @@ -3793,9 +3843,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_UNDERGROUND, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .damagesUnderground = TRUE, }, [MOVE_DYNAMIC_PUNCH] = @@ -3808,9 +3858,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_MEGAHORN] = @@ -3823,9 +3875,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_DRAGON_BREATH] = @@ -3838,9 +3890,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, }, [MOVE_BATON_PASS] = @@ -3853,18 +3906,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, }, [MOVE_ENCORE] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGIC_COAT_AFFECTED, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #endif .effect = EFFECT_ENCORE, .power = 0, .type = TYPE_NORMAL, @@ -3875,6 +3922,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_PURSUIT] = @@ -3887,9 +3935,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 }, [MOVE_RAPID_SPIN] = @@ -3906,9 +3955,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_SWEET_SCENT] = @@ -3925,9 +3974,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_IRON_TAIL] = @@ -3940,9 +3989,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_METAL_CLAW] = @@ -3955,9 +4005,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_VITAL_THROW] = @@ -3970,9 +4021,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = -1, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_MORNING_SUN] = @@ -3985,9 +4036,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_SYNTHESIS] = @@ -4000,9 +4051,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_MOONLIGHT] = @@ -4019,9 +4070,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_HIDDEN_POWER] = @@ -4038,7 +4089,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4053,19 +4103,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .highCritRatio = TRUE, }, [MOVE_TWISTER] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_DMG_2X_IN_AIR | FLAG_WIND_MOVE, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_DMG_2X_IN_AIR, - #endif - .effect = EFFECT_TWISTER, + .effect = EFFECT_FLINCH_HIT, .power = 40, .type = TYPE_DRAGON, .accuracy = 100, @@ -4075,6 +4121,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .damagesAirborneDoubleDamage = TRUE, + .windMove = TRUE, }, [MOVE_RAIN_DANCE] = @@ -4087,7 +4136,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -4102,7 +4150,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -4121,20 +4168,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_STRONG_JAW_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .bitingMove = TRUE, }, [MOVE_MIRROR_COAT] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_PROTECT_AFFECTED, - #elif B_UPDATED_MOVE_DATA == GEN_4 - .flags = 0, - #else - .flags = FLAG_MIRROR_MOVE_AFFECTED, - #endif .effect = EFFECT_MIRROR_COAT, .power = 1, .type = TYPE_PSYCHIC, @@ -4145,15 +4187,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -5, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, + .meFirstBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_PSYCH_UP] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = 0, - #else - .flags = FLAG_SNATCH_AFFECTED, - #endif .effect = EFFECT_PSYCH_UP, .power = 0, .type = TYPE_NORMAL, @@ -4164,6 +4205,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .ignoresProtect = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, }, [MOVE_EXTREME_SPEED] = @@ -4180,17 +4223,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 5, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_ANCIENT_POWER] = { - #if B_UPDATED_MOVE_DATA >= GEN_4 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, + #if B_UPDATED_MOVE_DATA < GEN_4 + .makesContact = TRUE, #endif .effect = EFFECT_ALL_STATS_UP_HIT, .power = 60, @@ -4202,6 +4243,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_SHADOW_BALL] = @@ -4214,9 +4256,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_BALLISTIC, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .ballisticMove = TRUE, }, [MOVE_FUTURE_SIGHT] = @@ -4239,9 +4282,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ROCK_SMASH] = @@ -4258,9 +4302,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 50, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_WHIRLPOOL] = @@ -4278,9 +4323,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_UNDERWATER, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .damagesUnderwater = TRUE, }, [MOVE_BEAT_UP] = @@ -4297,7 +4342,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4306,13 +4350,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = { #if B_UPDATED_MOVE_DATA >= GEN_5 .priority = 3, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, + .makesContact = TRUE, #elif B_UPDATED_MOVE_DATA == GEN_4 .priority = 1, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, + .makesContact = TRUE, #else .priority = 1, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, #endif .effect = EFFECT_FAKE_OUT, .power = 40, @@ -4323,6 +4366,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_UPROAR] = @@ -4339,9 +4383,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_RANDOM, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .soundMove = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_STOCKPILE] = @@ -4358,9 +4404,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .snatchAffected = TRUE, }, [MOVE_SPIT_UP] = @@ -4377,9 +4423,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = TRUE, }, [MOVE_SWALLOW] = @@ -4392,9 +4438,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_HEAT_WAVE] = @@ -4411,9 +4457,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .windMove = TRUE, }, [MOVE_HAIL] = @@ -4426,18 +4473,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, [MOVE_TORMENT] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGIC_COAT_AFFECTED, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #endif .effect = EFFECT_TORMENT, .power = 0, .type = TYPE_DARK, @@ -4448,6 +4489,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_FLATTER] = @@ -4460,9 +4502,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_WILL_O_WISP] = @@ -4479,9 +4521,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_MEMENTO] = @@ -4494,7 +4536,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESTORE_REPLACEMENT_HP, }, @@ -4509,9 +4550,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_FOCUS_PUNCH] = @@ -4524,9 +4565,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = -3, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .mirrorMoveBanned = TRUE, + .punchingMove = TRUE, + .meFirstBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_SMELLING_SALTS] = @@ -4543,10 +4590,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, .argument = STATUS1_PARALYSIS, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_FOLLOW_ME] = @@ -4563,9 +4610,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 20, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_NATURE_POWER] = @@ -4578,9 +4626,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_DEPENDS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_CHARGE] = @@ -4593,20 +4644,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .snatchAffected = TRUE, }, [MOVE_TAUNT] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #elif B_UPDATED_MOVE_DATA == GEN_4 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #else - .flags = FLAG_PROTECT_AFFECTED, - #endif .effect = EFFECT_TAUNT, .power = 0, .type = TYPE_DARK, @@ -4617,6 +4661,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_HELPING_HAND] = @@ -4633,9 +4678,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 20, .secondaryEffectChance = 0, .priority = 5, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_TRICK] = @@ -4648,9 +4694,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_ROLE_PLAY] = @@ -4663,18 +4710,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, }, [MOVE_WISH] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_SNATCH_AFFECTED, - #else - .flags = 0, - #endif .effect = EFFECT_WISH, .power = 0, .type = TYPE_NORMAL, @@ -4685,6 +4727,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_ASSIST] = @@ -4697,9 +4740,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_DEPENDS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_INGRAIN] = @@ -4712,9 +4758,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .snatchAffected = TRUE, }, [MOVE_SUPERPOWER] = @@ -4727,9 +4773,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_MAGIC_COAT] = @@ -4742,18 +4788,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_DEPENDS, .priority = 4, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, }, [MOVE_RECYCLE] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_SNATCH_AFFECTED, - #else - .flags = 0, - #endif .effect = EFFECT_RECYCLE, .power = 0, .type = TYPE_NORMAL, @@ -4764,6 +4804,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_REVENGE] = @@ -4776,9 +4817,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = -4, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_BRICK_BREAK] = @@ -4791,9 +4832,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_YAWN] = @@ -4806,9 +4847,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_KNOCK_OFF] = @@ -4825,9 +4866,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_ENDEAVOR] = @@ -4840,9 +4881,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_ERUPTION] = @@ -4855,7 +4896,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -4870,18 +4910,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, [MOVE_IMPRISON] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_PROTECT_AFFECTED | FLAG_SNATCH_AFFECTED, - #else - .flags = FLAG_PROTECT_AFFECTED, - #endif .effect = EFFECT_IMPRISON, .power = 0, .type = TYPE_PSYCHIC, @@ -4892,6 +4926,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_REFRESH] = @@ -4904,9 +4939,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .snatchAffected = TRUE, }, [MOVE_GRUDGE] = @@ -4919,7 +4954,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_FOLLOW_ME, }, @@ -4934,9 +4968,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_DEPENDS, .priority = 4, - .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_SECRET_POWER] = @@ -4949,9 +4985,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_DIVE] = @@ -4968,9 +5004,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_ARM_THRUST] = @@ -4983,9 +5021,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_CAMOUFLAGE] = @@ -4998,9 +5036,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, + .snatchAffected = TRUE, }, [MOVE_TAIL_GLOW] = @@ -5017,9 +5055,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_LUSTER_PURGE] = @@ -5032,9 +5070,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 50, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_MIST_BALL] = @@ -5047,9 +5085,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 50, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_BALLISTIC | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .ballisticMove = TRUE, }, [MOVE_FEATHER_DANCE] = @@ -5062,18 +5101,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_DANCE, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .magicCoatAffected = TRUE, + .danceMove = TRUE, }, [MOVE_TEETER_DANCE] = { - #if B_UPDATED_MOVE_DATA >= GEN_4 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_DANCE, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_DANCE, - #endif .effect = EFFECT_TEETER_DANCE, .power = 0, .type = TYPE_NORMAL, @@ -5084,6 +5119,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .danceMove = TRUE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_4, }, [MOVE_BLAZE_KICK] = @@ -5096,9 +5133,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_HIGH_CRIT | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .highCritRatio = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_MUD_SPORT] = @@ -5111,7 +5150,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -5126,18 +5164,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .ballisticMove = TRUE, + .instructBanned = TRUE, }, [MOVE_NEEDLE_ARM] = { - #if B_UPDATED_MOVE_DATA >= GEN_4 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_DMG_MINIMIZE, - #endif .effect = EFFECT_FLINCH_HIT, .power = 60, .type = TYPE_GRASS, @@ -5148,6 +5183,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_4, }, [MOVE_SLACK_OFF] = @@ -5164,9 +5202,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_HYPER_VOICE] = @@ -5179,9 +5217,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .soundMove = TRUE, }, [MOVE_POISON_FANG] = @@ -5198,9 +5236,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 15, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_STRONG_JAW_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .bitingMove = TRUE, }, [MOVE_CRUSH_CLAW] = @@ -5213,9 +5253,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 50, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_BLAST_BURN] = @@ -5228,9 +5269,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .instructBanned = TRUE, }, [MOVE_HYDRO_CANNON] = @@ -5243,9 +5284,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .instructBanned = TRUE, }, [MOVE_METEOR_MASH] = @@ -5263,18 +5304,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_ASTONISH] = { - #if B_UPDATED_MOVE_DATA >= GEN_4 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_DMG_MINIMIZE, - #endif .effect = EFFECT_FLINCH_HIT, .power = 30, .type = TYPE_GHOST, @@ -5285,6 +5323,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_4, }, [MOVE_WEATHER_BALL] = @@ -5297,9 +5338,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ballisticMove = TRUE, }, [MOVE_AROMATHERAPY] = @@ -5312,9 +5353,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .snatchAffected = TRUE, }, [MOVE_FAKE_TEARS] = @@ -5327,9 +5368,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_AIR_CUTTER] = @@ -5346,22 +5387,22 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SLICING_MOVE | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .highCritRatio = TRUE, + .windMove = TRUE, + .slicingMove = TRUE, }, [MOVE_OVERHEAT] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 130, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - #elif B_UPDATED_MOVE_DATA == GEN_4 || B_UPDATED_MOVE_DATA == GEN_5 + #elif B_UPDATED_MOVE_DATA >= GEN_4 .power = 140, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #else .power = 140, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .makesContact = TRUE, #endif .effect = EFFECT_OVERHEAT, .type = TYPE_FIRE, @@ -5376,15 +5417,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_ODOR_SLEUTH] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 + #if B_UPDATED_MOVE_DATA >= GEN_4 .accuracy = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGIC_COAT_AFFECTED, - #elif B_UPDATED_MOVE_DATA == GEN_4 - .accuracy = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, #else .accuracy = 100, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, #endif .effect = EFFECT_FORESIGHT, .power = 0, @@ -5395,6 +5431,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_ROCK_TOMB] = @@ -5413,9 +5450,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_SILVER_WIND] = @@ -5428,9 +5465,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_METAL_SOUND] = @@ -5443,9 +5480,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .magicCoatAffected = TRUE, + .soundMove = TRUE, }, [MOVE_GRASS_WHISTLE] = @@ -5458,9 +5496,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .magicCoatAffected = TRUE, + .soundMove = TRUE, }, [MOVE_TICKLE] = @@ -5473,9 +5512,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_COSMIC_POWER] = @@ -5488,9 +5527,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .snatchAffected = TRUE, }, [MOVE_WATER_SPOUT] = @@ -5503,7 +5542,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5518,9 +5556,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_SHADOW_PUNCH] = @@ -5533,22 +5571,18 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, }, [MOVE_EXTRASENSORY] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .pp = 20, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #elif B_UPDATED_MOVE_DATA == GEN_4 || B_UPDATED_MOVE_DATA == GEN_5 - .pp = 30, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, #else .pp = 30, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_DMG_MINIMIZE, #endif .effect = EFFECT_FLINCH_HIT, .power = 80, @@ -5559,6 +5593,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_4, }, [MOVE_SKY_UPPERCUT] = @@ -5571,9 +5607,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_DMG_IN_AIR, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, + .damagesAirborne = TRUE, }, [MOVE_SAND_TOMB] = @@ -5591,7 +5629,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5606,7 +5643,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5625,9 +5661,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_BULLET_SEED] = @@ -5644,9 +5680,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ballisticMove = TRUE, }, [MOVE_AERIAL_ACE] = @@ -5659,9 +5695,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .slicingMove = TRUE, }, [MOVE_ICICLE_SPEAR] = @@ -5678,7 +5715,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5693,18 +5729,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_BLOCK] = { - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flags = FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #endif .effect = EFFECT_MEAN_LOOK, .power = 0, .type = TYPE_NORMAL, @@ -5715,15 +5746,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = (B_UPDATED_MOVE_FLAGS >= GEN_6) || (B_UPDATED_MOVE_FLAGS <= GEN_3), + .magicCoatAffected = TRUE, }, [MOVE_HOWL] = { #if B_UPDATED_MOVE_DATA >= GEN_8 - .flags = FLAG_SNATCH_AFFECTED | FLAG_SOUND, .effect = EFFECT_ATTACK_UP_USER_ALLY, #else - .flags = FLAG_SNATCH_AFFECTED, .effect = EFFECT_ATTACK_UP, #endif .power = 0, @@ -5735,6 +5766,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .snatchAffected = TRUE, + .soundMove = B_UPDATED_MOVE_FLAGS >= GEN_8, }, [MOVE_DRAGON_CLAW] = @@ -5747,9 +5780,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_FRENZY_PLANT] = @@ -5762,7 +5795,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5777,9 +5809,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .snatchAffected = TRUE, }, [MOVE_BOUNCE] = @@ -5792,10 +5824,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_PARALYSIS, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .gravityBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_MUD_SHOT] = @@ -5808,9 +5844,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_POISON_TAIL] = @@ -5823,9 +5859,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .highCritRatio = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_COVET] = @@ -5833,19 +5871,18 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 60, .pp = 25, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .makesContact = TRUE, #elif B_UPDATED_MOVE_DATA == GEN_5 .power = 60, .pp = 40, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .makesContact = TRUE, #elif B_UPDATED_MOVE_DATA == GEN_4 .power = 40, .pp = 40, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .makesContact = TRUE, #else .power = 40, .pp = 40, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, #endif .effect = EFFECT_THIEF, .type = TYPE_NORMAL, @@ -5855,6 +5892,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .meFirstBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_VOLT_TACKLE] = @@ -5872,9 +5912,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_MAGICAL_LEAF] = @@ -5887,7 +5928,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -5902,7 +5942,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -5917,9 +5956,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_LEAF_BLADE] = @@ -5936,9 +5975,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .highCritRatio = TRUE, + .slicingMove = TRUE, }, [MOVE_DRAGON_DANCE] = @@ -5951,22 +5992,18 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED | FLAG_DANCE, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .danceMove = TRUE, + .snatchAffected = TRUE, }, [MOVE_ROCK_BLAST] = { - #if B_UPDATED_MOVE_DATA >= GEN_7 + #if B_UPDATED_MOVE_DATA >= GEN_5 .accuracy = 90, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, - #elif B_UPDATED_MOVE_DATA == GEN_5 || B_UPDATED_MOVE_DATA == GEN_6 - .accuracy = 90, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #else .accuracy = 80, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #endif .effect = EFFECT_MULTI_HIT, .power = 25, @@ -5977,6 +6014,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ballisticMove = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_SHOCK_WAVE] = @@ -5989,7 +6027,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6004,9 +6041,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_MEGA_LAUNCHER_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .pulseMove = TRUE, }, [MOVE_DOOM_DESIRE] = @@ -6024,9 +6062,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_PSYCHO_BOOST] = @@ -6039,7 +6078,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6058,9 +6096,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_GRAVITY] = @@ -6073,18 +6111,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, [MOVE_MIRACLE_EYE] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #endif .effect = EFFECT_MIRACLE_EYE, .power = 0, .type = TYPE_PSYCHIC, @@ -6095,6 +6127,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_WAKE_UP_SLAP] = @@ -6111,10 +6144,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .argument = STATUS1_SLEEP, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_HAMMER_ARM] = @@ -6127,9 +6160,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, }, [MOVE_GYRO_BALL] = @@ -6142,18 +6176,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .ballisticMove = TRUE, }, [MOVE_HEALING_WISH] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_SNATCH_AFFECTED, - #else - .flags = 0, - #endif .effect = EFFECT_HEALING_WISH, .power = 0, .type = TYPE_PSYCHIC, @@ -6164,6 +6194,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_BRINE] = @@ -6176,7 +6207,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6191,22 +6221,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_FEINT] = { - #if B_UPDATED_MOVE_DATA >= GEN_6 + #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 30, - .flags = FLAG_MIRROR_MOVE_AFFECTED, - #elif B_UPDATED_MOVE_DATA >= GEN_5 - .power = 30, - .flags = 0, #else .power = 50, - .flags = 0, #endif .effect = EFFECT_FEINT, .type = TYPE_NORMAL, @@ -6217,6 +6241,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 2, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_6, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_PLUCK] = @@ -6229,9 +6257,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_TAILWIND] = @@ -6248,18 +6276,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED | FLAG_WIND_MOVE, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, + .snatchAffected = TRUE, + .windMove = TRUE, }, [MOVE_ACUPRESSURE] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = 0, - #else - .flags = FLAG_SNATCH_AFFECTED, - #endif .effect = EFFECT_ACUPRESSURE, .power = 0, .type = TYPE_NORMAL, @@ -6270,15 +6294,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, + .ignoresProtect = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, }, [MOVE_METAL_BURST] = { - #if B_UPDATED_MOVE_DATA >= GEN_4 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #else - .flags = FLAG_MIRROR_MOVE_AFFECTED, - #endif .effect = EFFECT_METAL_BURST, .power = 0, .type = TYPE_STEEL, @@ -6289,6 +6310,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .meFirstBanned = TRUE, }, [MOVE_U_TURN] = @@ -6301,9 +6323,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_CLOSE_COMBAT] = @@ -6316,9 +6338,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_PAYBACK] = @@ -6331,9 +6353,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_ASSURANCE] = @@ -6350,18 +6372,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_EMBARGO] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #endif .effect = EFFECT_EMBARGO, .power = 0, .type = TYPE_DARK, @@ -6372,6 +6389,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_FLING] = @@ -6384,7 +6402,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6403,7 +6420,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_2, }, @@ -6418,17 +6434,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, + .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_HEAL_BLOCK] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #endif .effect = EFFECT_HEAL_BLOCK, .power = 0, .type = TYPE_PSYCHIC, @@ -6439,6 +6451,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_2, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_WRING_OUT] = @@ -6451,17 +6464,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, + .makesContact = TRUE, }, [MOVE_POWER_TRICK] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_SNATCH_AFFECTED, - #else - .flags = 0, - #endif .effect = EFFECT_POWER_TRICK, .power = 0, .type = TYPE_PSYCHIC, @@ -6472,6 +6480,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_GASTRO_ACID] = @@ -6484,18 +6493,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_LUCKY_CHANT] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_SNATCH_AFFECTED, - #else - .flags = 0, - #endif .effect = EFFECT_LUCKY_CHANT, .power = 0, .type = TYPE_NORMAL, @@ -6506,6 +6510,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_ME_FIRST] = @@ -6518,9 +6523,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_COPYCAT] = @@ -6533,9 +6541,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_DEPENDS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_POWER_SWAP] = @@ -6548,7 +6559,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -6563,7 +6573,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -6578,9 +6587,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_LAST_RESORT] = @@ -6597,9 +6606,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_WORRY_SEED] = @@ -6612,9 +6621,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_SUCKER_PUNCH] = @@ -6631,18 +6640,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_TOXIC_SPIKES] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_MAGIC_COAT_AFFECTED, - #else - .flags = 0, - #endif .effect = EFFECT_TOXIC_SPIKES, .power = 0, .type = TYPE_POISON, @@ -6653,6 +6657,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_HEART_SWAP] = @@ -6665,18 +6670,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, }, [MOVE_AQUA_RING] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_SNATCH_AFFECTED, - #else - .flags = 0, - #endif .effect = EFFECT_AQUA_RING, .power = 0, .type = TYPE_WATER, @@ -6687,15 +6686,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_MAGNET_RISE] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_SNATCH_AFFECTED, - #else - .flags = 0, - #endif .effect = EFFECT_MAGNET_RISE, .power = 0, .type = TYPE_ELECTRIC, @@ -6706,6 +6701,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .gravityBanned = TRUE, }, [MOVE_FLARE_BLITZ] = @@ -6718,10 +6715,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_RECKLESS_BOOST | FLAG_THAW_USER, .split = SPLIT_PHYSICAL, .argument = STATUS1_BURN, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .thawsUser = TRUE, }, [MOVE_FORCE_PALM] = @@ -6734,9 +6733,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_AURA_SPHERE] = @@ -6753,9 +6753,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_MEGA_LAUNCHER_BOOST | FLAG_BALLISTIC, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .pulseMove = TRUE, + .ballisticMove = TRUE, }, [MOVE_ROCK_POLISH] = @@ -6768,9 +6769,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_POISON_JAB] = @@ -6783,18 +6784,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_DARK_PULSE] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_MEGA_LAUNCHER_BOOST, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_MEGA_LAUNCHER_BOOST, - #endif .effect = EFFECT_FLINCH_HIT, .power = 80, .type = TYPE_DARK, @@ -6805,6 +6802,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .pulseMove = TRUE, }, [MOVE_NIGHT_SLASH] = @@ -6817,9 +6816,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .highCritRatio = TRUE, + .slicingMove = TRUE, }, [MOVE_AQUA_TAIL] = @@ -6832,9 +6833,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_SEED_BOMB] = @@ -6847,22 +6848,17 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ballisticMove = TRUE, }, [MOVE_AIR_SLASH] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .pp = 15, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SLICING_MOVE, - #elif B_UPDATED_MOVE_DATA == GEN_5 - .pp = 20, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, #else .pp = 20, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, #endif .effect = EFFECT_FLINCH_HIT, .power = 75, @@ -6873,6 +6869,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .slicingMove = TRUE, }, [MOVE_X_SCISSOR] = @@ -6885,9 +6883,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .slicingMove = TRUE, }, [MOVE_BUG_BUZZ] = @@ -6900,9 +6899,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .soundMove = TRUE, }, [MOVE_DRAGON_PULSE] = @@ -6919,20 +6919,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_MEGA_LAUNCHER_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .pulseMove = TRUE, }, [MOVE_DRAGON_RUSH] = { - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_DMG_MINIMIZE, - #elif B_UPDATED_MOVE_DATA == GEN_5 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #endif .effect = EFFECT_FLINCH_HIT, .power = 100, .type = TYPE_DRAGON, @@ -6943,6 +6936,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_POWER_GEM] = @@ -6959,7 +6955,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -6979,9 +6974,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, }, [MOVE_VACUUM_WAVE] = @@ -6994,7 +6990,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7009,9 +7004,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_BALLISTIC, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .ballisticMove = TRUE, }, [MOVE_ENERGY_BALL] = @@ -7028,9 +7024,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_BALLISTIC | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .ballisticMove = TRUE, }, [MOVE_BRAVE_BIRD] = @@ -7043,9 +7040,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_EARTH_POWER] = @@ -7058,9 +7055,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_SWITCHEROO] = @@ -7073,9 +7070,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_GIGA_IMPACT] = @@ -7088,9 +7086,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .instructBanned = TRUE, }, [MOVE_NASTY_PLOT] = @@ -7103,9 +7102,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_BULLET_PUNCH] = @@ -7118,9 +7117,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, }, [MOVE_AVALANCHE] = @@ -7133,9 +7133,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = -4, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_ICE_SHARD] = @@ -7148,7 +7148,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7163,18 +7162,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .highCritRatio = TRUE, }, [MOVE_THUNDER_FANG] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_STRONG_JAW_BOOST, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_STRONG_JAW_BOOST, - #endif .effect = EFFECT_FLINCH_STATUS, .power = 65, .type = TYPE_ELECTRIC, @@ -7186,15 +7181,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .argument = STATUS1_PARALYSIS, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .bitingMove = TRUE, }, [MOVE_ICE_FANG] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_STRONG_JAW_BOOST, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_STRONG_JAW_BOOST, - #endif #if B_USE_FROSTBITE == TRUE .argument = STATUS1_FROSTBITE, #else @@ -7210,15 +7203,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .bitingMove = TRUE, }, [MOVE_FIRE_FANG] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_STRONG_JAW_BOOST, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_STRONG_JAW_BOOST, - #endif .effect = EFFECT_FLINCH_STATUS, .power = 65, .type = TYPE_FIRE, @@ -7230,6 +7221,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .argument = STATUS1_BURN, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .bitingMove = TRUE, }, [MOVE_SHADOW_SNEAK] = @@ -7242,9 +7236,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_MUD_BOMB] = @@ -7257,9 +7251,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_BALLISTIC, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .ballisticMove = TRUE, }, [MOVE_PSYCHO_CUT] = @@ -7272,9 +7267,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .highCritRatio = TRUE, + .slicingMove = TRUE, }, [MOVE_ZEN_HEADBUTT] = @@ -7287,9 +7283,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_MIRROR_SHOT] = @@ -7302,9 +7299,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_FLASH_CANNON] = @@ -7317,9 +7314,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_ROCK_CLIMB] = @@ -7332,18 +7329,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_DEFOG] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #endif .effect = EFFECT_DEFOG, .power = 0, .type = TYPE_FLYING, @@ -7354,6 +7347,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_TRICK_ROOM] = @@ -7366,7 +7360,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = -7, - .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, }, @@ -7385,7 +7378,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7400,9 +7392,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_LAVA_PLUME] = @@ -7415,9 +7407,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_LEAF_STORM] = @@ -7434,7 +7426,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7449,9 +7440,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_ROCK_WRECKER] = @@ -7464,9 +7455,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ballisticMove = TRUE, + .instructBanned = TRUE, }, [MOVE_CROSS_POISON] = @@ -7479,9 +7471,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SHEER_FORCE_BOOST | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .highCritRatio = TRUE, + .sheerForceBoost = TRUE, + .slicingMove = TRUE, }, [MOVE_GUNK_SHOT] = @@ -7498,18 +7493,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_IRON_HEAD] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #endif .effect = EFFECT_FLINCH_HIT, .power = 80, .type = TYPE_STEEL, @@ -7520,6 +7510,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_MAGNET_BOMB] = @@ -7532,7 +7524,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7547,9 +7538,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .highCritRatio = TRUE, }, [MOVE_CAPTIVATE] = @@ -7562,18 +7553,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, + .magicCoatAffected = TRUE, }, [MOVE_STEALTH_ROCK] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_MAGIC_COAT_AFFECTED, - #else - .flags = 0, - #endif .effect = EFFECT_STEALTH_ROCK, .power = 0, .type = TYPE_ROCK, @@ -7584,6 +7570,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, [MOVE_GRASS_KNOT] = @@ -7596,9 +7583,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_CHATTER] = @@ -7606,15 +7593,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 65, .secondaryEffectChance = 100, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, #elif B_UPDATED_MOVE_DATA == GEN_5 .power = 60, .secondaryEffectChance = 10, - .flags = FLAG_PROTECT_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, #else .power = 60, .secondaryEffectChance = 31, - .flags = FLAG_PROTECT_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, #endif .effect = EFFECT_CONFUSE_HIT, .type = TYPE_FLYING, @@ -7624,6 +7608,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .soundMove = TRUE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_6, + .meFirstBanned = TRUE, + .mimicBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_JUDGMENT] = @@ -7636,7 +7629,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .argument = HOLD_EFFECT_PLATE, .zMoveEffect = Z_EFFECT_NONE, @@ -7652,9 +7644,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_CHARGE_BEAM] = @@ -7667,9 +7659,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 70, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_WOOD_HAMMER] = @@ -7682,9 +7674,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_AQUA_JET] = @@ -7697,9 +7689,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_ATTACK_ORDER] = @@ -7712,9 +7704,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .highCritRatio = TRUE, }, [MOVE_DEFEND_ORDER] = @@ -7727,9 +7719,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .snatchAffected = TRUE, }, [MOVE_HEAL_ORDER] = @@ -7742,9 +7734,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_HEAD_SMASH] = @@ -7757,9 +7749,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_DOUBLE_HIT] = @@ -7772,9 +7764,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .twoStrikes = TRUE, }, [MOVE_ROAR_OF_TIME] = @@ -7787,9 +7780,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .instructBanned = TRUE, }, [MOVE_SPACIAL_REND] = @@ -7802,18 +7795,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .highCritRatio = TRUE, }, [MOVE_LUNAR_DANCE] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flags = FLAG_DANCE | FLAG_SNATCH_AFFECTED, - #else - .flags = FLAG_DANCE, - #endif .effect = EFFECT_HEALING_WISH, .power = 0, .type = TYPE_PSYCHIC, @@ -7824,6 +7812,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .danceMove = TRUE, }, [MOVE_CRUSH_GRIP] = @@ -7836,9 +7826,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_MAGMA_STORM] = @@ -7859,7 +7849,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -7878,9 +7867,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .magicCoatAffected = TRUE, }, [MOVE_SEED_FLARE] = @@ -7893,9 +7882,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 40, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_OMINOUS_WIND] = @@ -7908,18 +7897,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_SHADOW_FORCE] = { - #if B_UPDATED_MOVE_DATA == GEN_6 - .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_MINIMIZE, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - #endif .effect = EFFECT_SEMI_INVULNERABLE, .power = 120, .type = TYPE_GHOST, @@ -7930,7 +7914,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, .argument = MOVE_EFFECT_FEINT, + .ignoresProtect = TRUE, + .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_HONE_CLAWS] = @@ -7943,9 +7932,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .snatchAffected = TRUE, }, [MOVE_WIDE_GUARD] = @@ -7958,10 +7947,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 3, - .flags = FLAG_PROTECTION_MOVE | FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_DEF_UP_1, + .snatchAffected = TRUE, + .protectionMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_GUARD_SPLIT] = @@ -7974,7 +7965,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -7989,7 +7979,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -8008,7 +7997,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, - .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -8023,7 +8011,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8038,7 +8025,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8053,9 +8039,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_RAGE_POWDER] = @@ -8072,9 +8058,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 20, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, - .flags = FLAG_POWDER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .powderMove = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_TELEKINESIS] = @@ -8087,9 +8075,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .magicCoatAffected = TRUE, + .gravityBanned = TRUE, }, [MOVE_MAGIC_ROOM] = @@ -8106,7 +8095,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, - .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -8121,9 +8109,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_IN_AIR, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .damagesAirborne = TRUE, }, [MOVE_STORM_THROW] = @@ -8140,9 +8128,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_FLAME_BURST] = @@ -8155,7 +8143,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8170,9 +8157,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_QUIVER_DANCE] = @@ -8185,18 +8172,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED | FLAG_DANCE, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_HEAVY_SLAM] = { - #if B_UPDATED_MOVE_DATA >= GEN_7 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_MINIMIZE, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - #endif .effect = EFFECT_HEAT_CRASH, .power = 1, .type = TYPE_STEEL, @@ -8207,6 +8189,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .danceMove = TRUE, + .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_7, }, [MOVE_SYNCHRONOISE] = @@ -8224,7 +8209,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8239,9 +8223,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ballisticMove = TRUE, }, [MOVE_SOAK] = @@ -8254,9 +8238,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_FLAME_CHARGE] = @@ -8269,9 +8253,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_COIL] = @@ -8284,9 +8269,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_LOW_SWEEP] = @@ -8303,9 +8288,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_ACID_SPRAY] = @@ -8318,9 +8304,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .ballisticMove = TRUE, }, [MOVE_FOUL_PLAY] = @@ -8333,9 +8320,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_SIMPLE_BEAM] = @@ -8348,9 +8335,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_ENTRAINMENT] = @@ -8363,9 +8350,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_AFTER_YOU] = @@ -8378,9 +8365,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .metronomeBanned = TRUE, }, [MOVE_ROUND] = @@ -8393,9 +8380,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .soundMove = TRUE, }, [MOVE_ECHOED_VOICE] = @@ -8408,9 +8395,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .soundMove = TRUE, }, [MOVE_CHIP_AWAY] = @@ -8423,9 +8410,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_STAT_STAGES_IGNORED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .ignoresTargetDefenseEvasionStages = TRUE, }, [MOVE_CLEAR_SMOG] = @@ -8438,7 +8426,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8453,7 +8440,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8468,10 +8454,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 3, - .flags = FLAG_PROTECTION_MOVE | FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_DEF_UP_1, + .snatchAffected = TRUE, + .protectionMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_ALLY_SWITCH] = @@ -8488,7 +8476,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 15, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, }, @@ -8503,9 +8490,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_THAW_USER, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .thawsUser = TRUE, }, [MOVE_SHELL_SMASH] = @@ -8518,9 +8506,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_HEAL_PULSE] = @@ -8533,9 +8521,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MEGA_LAUNCHER_BOOST, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .magicCoatAffected = TRUE, + .pulseMove = TRUE, }, [MOVE_HEX] = @@ -8552,7 +8541,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8567,9 +8555,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .gravityBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_SHIFT_GEAR] = @@ -8582,9 +8573,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_CIRCLE_THROW] = @@ -8597,9 +8588,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = -6, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .copycatBanned = TRUE, }, [MOVE_INCINERATE] = @@ -8616,7 +8608,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8631,9 +8622,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .magicCoatAffected = TRUE, + .metronomeBanned = TRUE, }, [MOVE_ACROBATICS] = @@ -8646,9 +8638,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_REFLECT_TYPE] = @@ -8661,9 +8653,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .snatchAffected = TRUE, }, [MOVE_RETALIATE] = @@ -8676,9 +8668,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_FINAL_GAMBIT] = @@ -8691,18 +8683,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = TRUE, }, [MOVE_BESTOW] = { - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flags = FLAG_MIRROR_MOVE_AFFECTED, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, - #endif .effect = EFFECT_BESTOW, .power = 0, .type = TYPE_NORMAL, @@ -8713,6 +8700,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_INFERNO] = @@ -8725,9 +8715,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_WATER_PLEDGE] = @@ -8744,7 +8734,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8763,7 +8752,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8782,7 +8770,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8797,7 +8784,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8816,9 +8802,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_BULLDOZE] = @@ -8831,9 +8817,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_FROST_BREATH] = @@ -8850,7 +8836,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -8865,9 +8850,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = -6, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .copycatBanned = TRUE, }, [MOVE_WORK_UP] = @@ -8880,9 +8866,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .snatchAffected = TRUE, }, [MOVE_ELECTROWEB] = @@ -8895,9 +8881,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_WILD_CHARGE] = @@ -8910,9 +8896,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_DRILL_RUN] = @@ -8925,9 +8911,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .highCritRatio = TRUE, }, [MOVE_DUAL_CHOP] = @@ -8940,9 +8927,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .twoStrikes = TRUE, }, [MOVE_HEART_STAMP] = @@ -8955,9 +8943,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_HORN_LEECH] = @@ -8970,9 +8959,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_SACRED_SWORD] = @@ -8989,9 +8978,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_STAT_STAGES_IGNORED | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .ignoresTargetDefenseEvasionStages = TRUE, + .slicingMove = TRUE, }, [MOVE_RAZOR_SHELL] = @@ -9004,18 +8995,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 50, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .slicingMove = TRUE, }, [MOVE_HEAT_CRASH] = { - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_MINIMIZE, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - #endif .effect = EFFECT_HEAT_CRASH, .power = 1, .type = TYPE_FIRE, @@ -9026,6 +9014,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_LEAF_TORNADO] = @@ -9038,9 +9028,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 50, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_STEAMROLLER] = @@ -9054,8 +9044,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_DMG_MINIMIZE, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .minimizeDoubleDamage = TRUE, }, [MOVE_COTTON_GUARD] = @@ -9068,9 +9060,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_NIGHT_DAZE] = @@ -9083,9 +9075,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 40, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_PSYSTRIKE] = @@ -9098,7 +9090,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9113,9 +9104,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_HURRICANE] = @@ -9132,9 +9123,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_DMG_IN_AIR | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .windMove = TRUE, + .damagesAirborne = TRUE, }, [MOVE_HEAD_CHARGE] = @@ -9147,9 +9140,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_GEAR_GRIND] = @@ -9162,9 +9155,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .twoStrikes = TRUE, }, [MOVE_SEARING_SHOT] = @@ -9177,9 +9171,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .ballisticMove = TRUE, }, [MOVE_TECHNO_BLAST] = @@ -9196,10 +9191,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .argument = HOLD_EFFECT_DRIVE, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_RELIC_SONG] = @@ -9212,10 +9207,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .argument = STATUS1_SLEEP, + .sheerForceBoost = TRUE, + .soundMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_SECRET_SWORD] = @@ -9228,9 +9225,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_GLACIATE] = @@ -9243,9 +9240,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_BOLT_STRIKE] = @@ -9258,9 +9255,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_BLUE_FLARE] = @@ -9273,9 +9271,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_FIERY_DANCE] = @@ -9288,9 +9286,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 50, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DANCE | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .danceMove = TRUE, }, [MOVE_FREEZE_SHOCK] = @@ -9303,10 +9302,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_PARALYSIS, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .metronomeBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_ICE_BURN] = @@ -9319,10 +9321,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .argument = MOVE_EFFECT_BURN, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .metronomeBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_SNARL] = @@ -9335,9 +9340,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .soundMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_ICICLE_CRASH] = @@ -9350,9 +9357,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_V_CREATE] = @@ -9365,9 +9372,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = TRUE, }, [MOVE_FUSION_FLARE] = @@ -9380,9 +9388,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_THAW_USER, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .thawsUser = TRUE, }, [MOVE_FUSION_BOLT] = @@ -9395,7 +9403,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9414,10 +9421,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_MINIMIZE, .split = SPLIT_PHYSICAL, .argument = TYPE_FLYING, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .minimizeDoubleDamage = TRUE, + .gravityBanned = TRUE, }, [MOVE_MAT_BLOCK] = @@ -9430,10 +9439,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_DEF_UP_1, + .snatchAffected = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_BELCH] = @@ -9446,9 +9457,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_ROTOTILLER] = @@ -9461,9 +9477,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresProtect = TRUE, }, [MOVE_STICKY_WEB] = @@ -9476,9 +9492,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_OPPONENTS_FIELD, .priority = 0, - .flags = FLAG_MAGIC_COAT_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_FELL_STINGER] = @@ -9495,18 +9511,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_PHANTOM_FORCE] = { - #if B_UPDATED_MOVE_DATA == GEN_6 - .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_MINIMIZE, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - #endif .effect = EFFECT_SEMI_INVULNERABLE, .power = 90, .type = TYPE_GHOST, @@ -9518,6 +9529,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_FEINT, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .makesContact = TRUE, + .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_TRICK_OR_TREAT] = @@ -9530,7 +9546,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .argument = TYPE_GHOST, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, @@ -9546,9 +9561,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .magicCoatAffected = TRUE, + .soundMove = TRUE, }, [MOVE_ION_DELUGE] = @@ -9561,7 +9577,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 1, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -9580,7 +9595,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9595,7 +9609,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .argument = TYPE_GRASS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, @@ -9611,9 +9624,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_WIND_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .windMove = TRUE, }, [MOVE_FREEZE_DRY] = @@ -9626,9 +9639,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_DISARMING_VOICE] = @@ -9641,9 +9654,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .soundMove = TRUE, }, [MOVE_PARTING_SHOT] = @@ -9656,9 +9669,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESTORE_REPLACEMENT_HP, + .magicCoatAffected = TRUE, + .soundMove = TRUE, }, [MOVE_TOPSY_TURVY] = @@ -9675,9 +9689,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_DRAINING_KISS] = @@ -9690,11 +9704,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .argument = 75, // restores 75% HP instead of 50% HP .zMoveEffect = Z_EFFECT_NONE, - + .makesContact = TRUE, }, [MOVE_CRAFTY_SHIELD] = @@ -9707,10 +9720,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 3, - .flags = 0, .split = SPLIT_STATUS, .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .metronomeBanned = TRUE, }, [MOVE_FLOWER_SHIELD] = @@ -9723,9 +9736,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, }, [MOVE_GRASSY_TERRAIN] = @@ -9738,7 +9751,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -9753,7 +9765,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, }, @@ -9768,7 +9779,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -9783,9 +9793,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_FAIRY_WIND] = @@ -9798,9 +9809,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .windMove = TRUE, }, [MOVE_MOONBLAST] = @@ -9813,9 +9824,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_BOOMBURST] = @@ -9828,9 +9839,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .soundMove = TRUE, }, [MOVE_FAIRY_LOCK] = @@ -9843,7 +9854,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, }, @@ -9858,9 +9868,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 4, - .flags = FLAG_PROTECTION_MOVE, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .protectionMove = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_PLAY_NICE] = @@ -9873,9 +9886,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .magicCoatAffected = TRUE, }, [MOVE_CONFIDE] = @@ -9888,9 +9902,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .magicCoatAffected = TRUE, + .soundMove = TRUE, }, [MOVE_DIAMOND_STORM] = @@ -9907,9 +9923,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 50, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .metronomeBanned = TRUE, }, [MOVE_STEAM_ERUPTION] = @@ -9922,9 +9939,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_THAW_USER, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .soundMove = TRUE, + .thawsUser = TRUE, + .metronomeBanned = TRUE, }, [MOVE_HYPERSPACE_HOLE] = @@ -9937,9 +9956,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .metronomeBanned = TRUE, }, [MOVE_WATER_SHURIKEN] = @@ -9957,7 +9977,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .zMoveEffect = Z_EFFECT_NONE, }, @@ -9976,9 +9995,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_SPIKY_SHIELD] = @@ -9991,9 +10010,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 4, - .flags = FLAG_PROTECTION_MOVE, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .protectionMove = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_AROMATIC_MIST] = @@ -10006,9 +10027,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALLY, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, + .ignoresProtect = TRUE, }, [MOVE_EERIE_IMPULSE] = @@ -10021,9 +10042,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_VENOM_DRENCH] = @@ -10036,9 +10057,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_POWDER] = @@ -10051,9 +10072,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_POWDER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, + .magicCoatAffected = TRUE, }, [MOVE_GEOMANCY] = @@ -10066,9 +10087,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_MAGNETIC_FLUX] = @@ -10081,9 +10103,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .snatchAffected = TRUE, }, [MOVE_HAPPY_HOUR] = @@ -10096,7 +10118,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, }, @@ -10111,7 +10132,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -10126,7 +10146,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10141,9 +10160,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_HOLD_HANDS] = @@ -10156,9 +10178,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALLY, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .ignoresProtect = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_BABY_DOLL_EYES] = @@ -10171,9 +10197,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_NUZZLE] = @@ -10186,9 +10212,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_HOLD_BACK] = @@ -10201,9 +10228,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_INFESTATION] = @@ -10216,9 +10243,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_POWER_UP_PUNCH] = @@ -10231,9 +10258,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_OBLIVION_WING] = @@ -10246,7 +10275,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .argument = 75, // restores 75% HP instead of 50% HP .zMoveEffect = Z_EFFECT_NONE, @@ -10262,9 +10290,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DMG_IN_AIR | FLAG_DMG_UNGROUNDED_IGNORE_TYPE_IF_FLYING, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .damagesAirborne = TRUE, + .ignoreTypeIfFlyingAndUngrounded = TRUE, + .metronomeBanned = TRUE, }, [MOVE_THOUSAND_WAVES] = @@ -10277,9 +10307,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_LANDS_WRATH] = @@ -10292,7 +10322,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10307,9 +10336,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_RECKLESS_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_ORIGIN_PULSE] = @@ -10322,9 +10351,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_MEGA_LAUNCHER_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .pulseMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_PRECIPICE_BLADES] = @@ -10337,9 +10367,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_DRAGON_ASCENT] = @@ -10352,9 +10382,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = TRUE, }, [MOVE_HYPERSPACE_FURY] = @@ -10367,8 +10398,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIT_IN_SUBSTITUTE, .split = SPLIT_PHYSICAL, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .metronomeBanned = TRUE, }, [MOVE_SHORE_UP] = @@ -10385,9 +10418,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .snatchAffected = TRUE, }, [MOVE_FIRST_IMPRESSION] = @@ -10400,9 +10433,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 2, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_BANEFUL_BUNKER] = @@ -10415,9 +10448,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 4, - .flags = FLAG_PROTECTION_MOVE, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .protectionMove = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_SPIRIT_SHACKLE] = @@ -10430,9 +10465,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_DARKEST_LARIAT] = @@ -10445,9 +10480,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_STAT_STAGES_IGNORED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .ignoresTargetDefenseEvasionStages = TRUE, }, [MOVE_SPARKLING_ARIA] = @@ -10460,10 +10496,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .argument = STATUS1_BURN, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .soundMove = TRUE, }, [MOVE_ICE_HAMMER] = @@ -10476,9 +10513,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, }, [MOVE_FLORAL_HEALING] = @@ -10491,9 +10529,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .magicCoatAffected = TRUE, }, [MOVE_HIGH_HORSEPOWER] = @@ -10506,9 +10544,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_STRENGTH_SAP] = @@ -10521,9 +10559,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_SOLAR_BLADE] = @@ -10536,9 +10574,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .slicingMove = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_LEAFAGE] = @@ -10551,7 +10592,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10566,9 +10606,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 3, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .magicCoatAffected = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_TOXIC_THREAD] = @@ -10581,9 +10623,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_LASER_FOCUS] = @@ -10596,9 +10638,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .snatchAffected = TRUE, }, [MOVE_GEAR_UP] = @@ -10611,9 +10653,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .snatchAffected = TRUE, }, [MOVE_THROAT_CHOP] = @@ -10626,9 +10668,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_POLLEN_PUFF] = @@ -10641,9 +10684,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ballisticMove = B_UPDATED_MOVE_FLAGS < GEN_9, }, [MOVE_ANCHOR_SHOT] = @@ -10656,9 +10699,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_PSYCHIC_TERRAIN] = @@ -10671,7 +10715,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, }, @@ -10686,9 +10729,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_FIRE_LASH] = @@ -10701,9 +10745,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_POWER_TRIP] = @@ -10716,9 +10761,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_BURN_UP] = @@ -10731,9 +10776,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_THAW_USER, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .thawsUser = TRUE, }, [MOVE_SPEED_SWAP] = @@ -10746,7 +10791,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, }, @@ -10761,9 +10805,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_PURIFY] = @@ -10776,9 +10820,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_REVELATION_DANCE] = @@ -10791,9 +10835,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DANCE, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .danceMove = TRUE, }, [MOVE_CORE_ENFORCER] = @@ -10806,7 +10850,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -10821,9 +10864,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_INSTRUCT] = @@ -10836,9 +10880,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .metronomeBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_BEAK_BLAST] = @@ -10851,9 +10896,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = -3, - .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = TRUE, + .ballisticMove = TRUE, + .meFirstBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_CLANGING_SCALES] = @@ -10866,9 +10917,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .soundMove = TRUE, }, [MOVE_DRAGON_HAMMER] = @@ -10881,9 +10932,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_BRUTAL_SWING] = @@ -10896,9 +10947,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_AURORA_VEIL] = @@ -10911,9 +10962,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .snatchAffected = TRUE, }, [MOVE_SHELL_TRAP] = @@ -10926,9 +10977,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = -3, - .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_FLEUR_CANNON] = @@ -10941,9 +10997,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_PSYCHIC_FANGS] = @@ -10956,9 +11012,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_STRONG_JAW_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .bitingMove = TRUE, }, [MOVE_STOMPING_TANTRUM] = @@ -10971,9 +11028,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_SHADOW_BONE] = @@ -10986,9 +11043,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_ACCELEROCK] = @@ -11001,9 +11058,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_LIQUIDATION] = @@ -11016,9 +11073,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_PRISMATIC_LASER] = @@ -11031,9 +11089,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .instructBanned = TRUE, }, [MOVE_SPECTRAL_THIEF] = @@ -11046,9 +11104,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = TRUE, }, [MOVE_SUNSTEEL_STRIKE] = @@ -11061,9 +11120,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TARGET_ABILITY_IGNORED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .ignoresTargetAbility = TRUE, + .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_8, }, [MOVE_MOONGEIST_BEAM] = @@ -11076,9 +11137,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TARGET_ABILITY_IGNORED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresTargetAbility = TRUE, + .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_8, }, [MOVE_TEARFUL_LOOK] = @@ -11091,9 +11153,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .magicCoatAffected = TRUE, }, [MOVE_ZING_ZAP] = @@ -11106,9 +11169,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_NATURES_MADNESS] = @@ -11121,9 +11184,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_8, }, [MOVE_MULTI_ATTACK] = @@ -11140,10 +11204,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .argument = HOLD_EFFECT_MEMORY, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_MIND_BLOWN] = @@ -11156,9 +11220,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_PLASMA_FISTS] = @@ -11171,9 +11235,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_PHOTON_GEYSER] = @@ -11186,9 +11252,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TARGET_ABILITY_IGNORED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresTargetAbility = TRUE, + .metronomeBanned = TRUE, }, [MOVE_ZIPPY_ZAP] = @@ -11197,12 +11264,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .power = 80, .effect = EFFECT_EVASION_UP_HIT, .pp = 10, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, + .sheerForceBoost = TRUE, #else .effect = EFFECT_ALWAYS_CRIT, .power = 50, .pp = 15, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #endif .type = TYPE_ELECTRIC, .accuracy = 100, @@ -11211,15 +11277,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 2, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .metronomeBanned = TRUE, }, [MOVE_SPLISHY_SPLASH] = { - #if B_UPDATED_MOVE_DATA >= GEN_8 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #endif .effect = EFFECT_PARALYZE_HIT, .power = 90, .type = TYPE_WATER, @@ -11230,15 +11294,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .metronomeBanned = TRUE, }, [MOVE_FLOATY_FALL] = { - #if B_UPDATED_MOVE_DATA >= GEN_8 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_SHEER_FORCE_BOOST, - #endif .effect = EFFECT_FLINCH_HIT, .power = 90, .type = TYPE_FLYING, @@ -11249,15 +11311,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .gravityBanned = TRUE, + .metronomeBanned = TRUE, }, [MOVE_PIKA_PAPOW] = { - #if B_UPDATED_MOVE_DATA >= GEN_8 - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - #else - .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - #endif .effect = EFFECT_RETURN, .power = 1, .type = TYPE_ELECTRIC, @@ -11268,6 +11330,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, }, [MOVE_BOUNCY_BUBBLE] = @@ -11275,12 +11338,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_8 .power = 60, .pp = 20, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .argument = 100, // restores 100% HP instead of 50% HP #else .power = 90, .pp = 15, - .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #endif .effect = EFFECT_ABSORB, .type = TYPE_WATER, @@ -11290,6 +11351,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .metronomeBanned = TRUE, }, [MOVE_BUZZY_BUZZ] = @@ -11297,11 +11360,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_8 .power = 60, .pp = 20, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #else .power = 90, .pp = 15, - .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #endif .effect = EFFECT_PARALYZE_HIT, .type = TYPE_ELECTRIC, @@ -11311,6 +11372,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .metronomeBanned = TRUE, }, [MOVE_SIZZLY_SLIDE] = @@ -11318,11 +11381,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_8 .power = 60, .pp = 20, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_THAW_USER, #else .power = 90, .pp = 15, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_THAW_USER, #endif .effect = EFFECT_BURN_HIT, .type = TYPE_FIRE, @@ -11332,6 +11393,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .thawsUser = TRUE, + .metronomeBanned = TRUE, }, [MOVE_GLITZY_GLOW] = @@ -11339,11 +11404,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_8 .power = 80, .accuracy = 95, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #else .power = 90, .accuracy = 100, - .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #endif .effect = EFFECT_GLITZY_GLOW, .type = TYPE_PSYCHIC, @@ -11353,6 +11416,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .metronomeBanned = TRUE, }, [MOVE_BADDY_BAD] = @@ -11360,11 +11425,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #if B_UPDATED_MOVE_DATA >= GEN_8 .power = 80, .accuracy = 95, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #else .power = 90, .accuracy = 100, - .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #endif .effect = EFFECT_BADDY_BAD, .type = TYPE_DARK, @@ -11374,6 +11437,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .metronomeBanned = TRUE, }, [MOVE_SAPPY_SEED] = @@ -11382,12 +11447,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .power = 100, .accuracy = 90, .pp = 10, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #else .power = 90, .accuracy = 100, .pp = 15, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #endif .effect = EFFECT_SAPPY_SEED, .type = TYPE_GRASS, @@ -11396,6 +11459,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .magicCoatAffected = TRUE, + .metronomeBanned = TRUE, }, [MOVE_FREEZY_FROST] = @@ -11404,12 +11470,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .power = 100, .accuracy = 90, .pp = 10, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #else .power = 90, .accuracy = 100, .pp = 15, - .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #endif .effect = EFFECT_FREEZY_FROST, .type = TYPE_ICE, @@ -11418,6 +11482,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .metronomeBanned = TRUE, }, [MOVE_SPARKLY_SWIRL] = @@ -11426,12 +11492,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .power = 120, .accuracy = 85, .pp = 5, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #else .power = 90, .accuracy = 100, .pp = 15, - .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, #endif .effect = EFFECT_SPARKLY_SWIRL, .type = TYPE_FAIRY, @@ -11440,15 +11504,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .metronomeBanned = TRUE, }, [MOVE_VEEVEE_VOLLEY] = { - #if B_UPDATED_MOVE_DATA >= GEN_8 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, - #endif .effect = EFFECT_RETURN, .power = 1, .type = TYPE_NORMAL, @@ -11459,15 +11520,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .metronomeBanned = TRUE, }, [MOVE_DOUBLE_IRON_BASH] = { - #if B_UPDATED_MOVE_DATA >= GEN_8 - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST | FLAG_TWO_STRIKES, - #else - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_DMG_MINIMIZE | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST | FLAG_TWO_STRIKES, - #endif .effect = EFFECT_FLINCH_HIT, .power = 60, .type = TYPE_STEEL, @@ -11478,6 +11537,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, + .sheerForceBoost = TRUE, + .twoStrikes = TRUE, + .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_8, + .metronomeBanned = TRUE, }, [MOVE_DYNAMAX_CANNON] = @@ -11490,9 +11555,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_SNIPE_SHOT] = @@ -11505,9 +11573,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .highCritRatio = TRUE, }, [MOVE_JAW_LOCK] = @@ -11520,9 +11588,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_STRONG_JAW_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .bitingMove = TRUE, }, [MOVE_STUFF_CHEEKS] = @@ -11535,9 +11604,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .snatchAffected = TRUE, }, [MOVE_NO_RETREAT] = @@ -11550,9 +11619,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .snatchAffected = TRUE, }, [MOVE_TAR_SHOT] = @@ -11565,9 +11634,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .magicCoatAffected = TRUE, }, [MOVE_MAGIC_POWDER] = @@ -11580,10 +11649,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_POWDER, .split = SPLIT_STATUS, .argument = TYPE_PSYCHIC, .zMoveEffect = Z_EFFECT_NONE, + .magicCoatAffected = TRUE, + .powderMove = TRUE, }, [MOVE_DRAGON_DARTS] = @@ -11596,9 +11666,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoStrikes = TRUE, }, [MOVE_TEATIME] = @@ -11611,9 +11681,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, }, [MOVE_OCTOLOCK] = @@ -11626,7 +11696,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11641,9 +11710,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_FISHIOUS_REND] = @@ -11656,9 +11725,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_STRONG_JAW_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .bitingMove = TRUE, }, [MOVE_COURT_CHANGE] = @@ -11671,7 +11741,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, }, @@ -11686,9 +11755,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED | FLAG_SOUND, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .snatchAffected = TRUE, + .soundMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_BODY_PRESS] = @@ -11701,13 +11772,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = TRUE, }, [MOVE_DECORATE] = { + .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_5, .effect = EFFECT_DECORATE, .power = 0, .type = TYPE_FAIRY, @@ -11716,9 +11789,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_DRUM_BEATING] = @@ -11731,9 +11804,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .metronomeBanned = TRUE, }, [MOVE_SNAP_TRAP] = @@ -11746,9 +11820,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = TRUE, }, [MOVE_PYRO_BALL] = @@ -11761,9 +11836,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_BALLISTIC | FLAG_SHEER_FORCE_BOOST | FLAG_THAW_USER, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .thawsUser = TRUE, + .ballisticMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_BEHEMOTH_BLADE] = @@ -11776,9 +11854,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .slicingMove = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_BEHEMOTH_BASH] = @@ -11791,9 +11872,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, }, [MOVE_AURA_WHEEL] = @@ -11806,9 +11889,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_BREAKING_SWIPE] = @@ -11821,9 +11904,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .metronomeBanned = TRUE, }, [MOVE_BRANCH_POKE] = @@ -11836,9 +11921,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = TRUE, }, [MOVE_OVERDRIVE] = @@ -11851,9 +11937,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .soundMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_APPLE_ACID] = @@ -11866,9 +11953,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .metronomeBanned = TRUE, }, [MOVE_GRAV_APPLE] = @@ -11881,9 +11969,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .metronomeBanned = TRUE, }, [MOVE_SPIRIT_BREAK] = @@ -11896,9 +11985,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .metronomeBanned = TRUE, }, [MOVE_STRANGE_STEAM] = @@ -11911,9 +12002,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .metronomeBanned = TRUE, }, [MOVE_LIFE_DEW] = @@ -11926,9 +12018,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .snatchAffected = TRUE, + .metronomeBanned = TRUE, }, [MOVE_OBSTRUCT] = @@ -11941,9 +12034,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 4, - .flags = FLAG_PROTECTION_MOVE, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .protectionMove = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_FALSE_SURRENDER] = @@ -11956,9 +12052,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = TRUE, }, [MOVE_METEOR_ASSAULT] = @@ -11971,9 +12068,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_ETERNABEAM] = @@ -11986,9 +12084,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_STEEL_BEAM] = @@ -12001,9 +12100,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_EXPANDING_FORCE] = @@ -12016,7 +12115,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12031,9 +12129,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_SCALE_SHOT] = @@ -12046,7 +12144,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12061,9 +12158,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .instructBanned = TRUE, }, [MOVE_SHELL_SIDE_ARM] = @@ -12076,9 +12173,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_MISTY_EXPLOSION] = @@ -12091,7 +12188,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12110,9 +12206,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_RISING_VOLTAGE] = @@ -12125,7 +12221,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12140,9 +12235,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_MEGA_LAUNCHER_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .pulseMove = TRUE, }, [MOVE_SKITTER_SMACK] = @@ -12155,9 +12250,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_BURNING_JEALOUSY] = @@ -12170,9 +12266,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_LASH_OUT] = @@ -12185,9 +12281,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_POLTERGEIST] = @@ -12200,7 +12296,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12215,9 +12310,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .magicCoatAffected = TRUE, }, [MOVE_COACHING] = @@ -12230,7 +12325,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALLY, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12245,9 +12339,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_TRIPLE_AXEL] = @@ -12260,9 +12354,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_DUAL_WINGBEAT] = @@ -12275,9 +12369,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .twoStrikes = TRUE, }, [MOVE_SCORCHING_SANDS] = @@ -12290,9 +12385,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_THAW_USER, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .thawsUser = TRUE, }, [MOVE_JUNGLE_HEALING] = @@ -12307,6 +12403,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_WICKED_BLOW] = @@ -12323,9 +12420,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_SURGING_STRIKES] = @@ -12338,9 +12437,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_THREE_STRIKES, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, + .threeStrikes = TRUE, + .metronomeBanned = TRUE, }, [MOVE_THUNDER_CAGE] = @@ -12353,9 +12455,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_DRAGON_ENERGY] = @@ -12368,9 +12470,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_FREEZING_GLARE] = @@ -12387,9 +12489,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .metronomeBanned = TRUE, }, [MOVE_FIERY_WRATH] = @@ -12402,9 +12505,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_THUNDEROUS_KICK] = @@ -12417,9 +12520,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .metronomeBanned = TRUE, }, [MOVE_GLACIAL_LANCE] = @@ -12436,9 +12541,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_ASTRAL_BARRAGE] = @@ -12451,9 +12556,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_EERIE_SPELL] = @@ -12466,9 +12571,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .soundMove = TRUE, }, [MOVE_DIRE_CLAW] = @@ -12485,9 +12591,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 50, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_PSYSHIELD_BASH] = @@ -12500,9 +12607,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_POWER_SHIFT] = @@ -12515,9 +12623,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_STONE_AXE] = @@ -12530,10 +12638,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, .argument = MOVE_EFFECT_STEALTH_ROCK, + .sheerForceBoost = TRUE, + .slicingMove = TRUE, }, [MOVE_SPRINGTIDE_STORM] = @@ -12550,9 +12660,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .windMove = TRUE, }, [MOVE_MYSTICAL_POWER] = @@ -12565,9 +12676,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_RAGING_FURY] = @@ -12584,9 +12695,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_RANDOM, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = TRUE, }, [MOVE_WAVE_CRASH] = @@ -12603,9 +12715,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_CHLOROBLAST] = @@ -12622,7 +12734,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12637,9 +12748,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_VICTORY_DANCE] = @@ -12652,9 +12763,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED | FLAG_DANCE, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .danceMove = TRUE, + .snatchAffected = TRUE, }, [MOVE_HEADLONG_RUSH] = @@ -12671,9 +12783,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, }, [MOVE_BARB_BARRAGE] = @@ -12690,9 +12803,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 50, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_ESPER_WING] = @@ -12710,9 +12823,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .highCritRatio = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_BITTER_MALICE] = @@ -12729,9 +12843,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_SHELTER] = @@ -12744,9 +12858,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .snatchAffected = TRUE, }, [MOVE_TRIPLE_ARROWS] = @@ -12764,9 +12878,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, // 50% Defense down, 30% Flinch. Can be modified in 'SetMoveEffect' .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_HIGH_CRIT, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .highCritRatio = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_INFERNAL_PARADE] = @@ -12779,9 +12894,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_CEASELESS_EDGE] = @@ -12794,10 +12909,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, .argument = MOVE_EFFECT_SPIKES, + .sheerForceBoost = TRUE, + .slicingMove = TRUE, }, [MOVE_BLEAKWIND_STORM] = @@ -12815,9 +12932,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .windMove = TRUE, }, [MOVE_WILDBOLT_STORM] = @@ -12835,9 +12953,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .windMove = TRUE, }, [MOVE_SANDSEAR_STORM] = @@ -12855,9 +12974,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_WIND_MOVE, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .windMove = TRUE, }, [MOVE_LUNAR_BLESSING] = @@ -12870,9 +12990,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .snatchAffected = TRUE, }, [MOVE_TAKE_HEART] = @@ -12885,9 +13005,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .snatchAffected = TRUE, }, [MOVE_TERA_BLAST] = @@ -12900,7 +13020,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -12915,9 +13034,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 4, - .flags = FLAG_PROTECTION_MOVE, .split = SPLIT_STATUS, - .zMoveEffect = Z_EFFECT_NONE + .zMoveEffect = Z_EFFECT_NONE, + .protectionMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_AXE_KICK] = @@ -12930,9 +13050,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMoveEffect = Z_EFFECT_NONE + .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, }, [MOVE_LAST_RESPECTS] = @@ -12945,9 +13066,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMoveEffect = Z_EFFECT_NONE + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_LUMINA_CRASH] = @@ -12960,9 +13080,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, - .zMoveEffect = Z_EFFECT_NONE + .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_ORDER_UP] = @@ -12975,9 +13095,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMoveEffect = Z_EFFECT_NONE + .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .metronomeBanned = TRUE, }, [MOVE_JET_PUNCH] = @@ -12990,10 +13111,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, - // The datamine master sheet mentions uncopiable by Metronome but that sounds odd? not yet implemented + .makesContact = TRUE, + .punchingMove = TRUE, + .sheerForceBoost = TRUE, + .metronomeBanned = TRUE, }, [MOVE_SPICY_EXTRACT] = @@ -13006,10 +13129,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, - // The datamine master sheet mentions uncopiable by Metronome but that sounds odd? not yet implemented + .magicCoatAffected = TRUE, + .metronomeBanned = TRUE, }, [MOVE_SPIN_OUT] = @@ -13022,9 +13145,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMoveEffect = Z_EFFECT_NONE + .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, }, [MOVE_POPULATION_BOMB] = @@ -13037,10 +13160,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, // | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, - //Supposedly uncallable by Metronome? (if so, needs implementation) + .makesContact = TRUE, + .slicingMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_ICE_SPINNER] = @@ -13053,9 +13177,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, .argument = 1, // Remove the active field terrain if there is one. }, @@ -13069,9 +13193,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMoveEffect = Z_EFFECT_NONE + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_REVIVAL_BLESSING] = @@ -13084,10 +13207,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, - // Uncallable by Metronome (to be implemented) + .metronomeBanned = TRUE, }, [MOVE_SALT_CURE] = @@ -13100,10 +13222,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, - // Supposedly uncallable by Metronome, but dubious + .sheerForceBoost = TRUE, + .metronomeBanned = TRUE, }, [MOVE_TRIPLE_DIVE] = @@ -13116,9 +13238,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_THREE_STRIKES, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .threeStrikes = TRUE, }, [MOVE_MORTAL_SPIN] = @@ -13131,9 +13254,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMoveEffect = Z_EFFECT_NONE + .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, }, [MOVE_DOODLE] = @@ -13145,11 +13268,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, // Supposedly unconfirmed? - .priority = 0, - .flags = 0, // TO VERIFY + .priority = 0, // TO VERIFY .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, - // Supposedly uncallable by Metronome (unimplemented) + .metronomeBanned = TRUE, }, [MOVE_FILLET_AWAY] = @@ -13162,10 +13284,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, - // Supposedly uncallable by Metronome (unimplemented) + .snatchAffected = TRUE, + .metronomeBanned = TRUE, }, [MOVE_KOWTOW_CLEAVE] = @@ -13178,9 +13300,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, // | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .slicingMove = TRUE, }, [MOVE_FLOWER_TRICK] = @@ -13193,7 +13316,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13208,9 +13330,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .soundMove = TRUE, }, [MOVE_AQUA_STEP] = @@ -13223,9 +13346,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DANCE | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .sheerForceBoost = TRUE, + .danceMove = TRUE, }, [MOVE_RAGING_BULL] = @@ -13237,11 +13362,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, // TO VERIFY + .priority = 0, // TO VERIFY .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, - // Uncallable by Metronome (to be implemented) + .makesContact = TRUE, + .metronomeBanned = TRUE, }, [MOVE_MAKE_IT_RAIN] = @@ -13254,10 +13379,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - // Uncallable by Metronome (to be implemented) + .metronomeBanned = TRUE, }, [MOVE_RUINATION] = @@ -13270,10 +13394,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - // Uncallable by Metronome (to be implemented) + .metronomeBanned = TRUE, }, [MOVE_COLLISION_COURSE] = @@ -13286,10 +13409,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, - // Uncallable by Metronome (to be implemented) + .makesContact = TRUE, + .metronomeBanned = TRUE, }, [MOVE_ELECTRO_DRIFT] = @@ -13302,10 +13425,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - // Uncallable by Metronome (to be implemented) + .makesContact = TRUE, + .metronomeBanned = TRUE, }, [MOVE_SHED_TAIL] = @@ -13318,10 +13441,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, - // Uncallable by Metronome (to be implemented) + .metronomeBanned = TRUE, }, [MOVE_CHILLY_RECEPTION] = @@ -13334,10 +13456,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, - // Supposedly uncallable by Metronome? (to be implemented) + .metronomeBanned = TRUE, }, [MOVE_TIDY_UP] = @@ -13350,10 +13471,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, - // Supposedly uncallable by Metronome? (to be implemented) + .metronomeBanned = TRUE, }, [MOVE_SNOWSCAPE] = @@ -13366,10 +13486,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, - // Currently an exact copy of Hail until we figure out what to do with it + .metronomeBanned = TRUE, }, [MOVE_POUNCE] = @@ -13382,9 +13501,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = TRUE, }, [MOVE_TRAILBLAZE] = @@ -13397,9 +13517,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = TRUE, }, [MOVE_CHILLING_WATER] = @@ -13412,9 +13533,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_HYPER_DRILL] = @@ -13427,9 +13548,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = TRUE, }, [MOVE_TWIN_BEAM] = @@ -13442,9 +13564,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .twoStrikes = TRUE, + .metronomeBanned = TRUE, }, [MOVE_RAGE_FIST] = @@ -13457,9 +13580,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .punchingMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_ARMOR_CANNON] = @@ -13472,9 +13597,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_BITTER_BLADE] = @@ -13487,9 +13612,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, // | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .slicingMove = TRUE, }, [MOVE_DOUBLE_SHOCK] = @@ -13502,9 +13628,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, - .zMoveEffect = Z_EFFECT_NONE + .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_GIGATON_HAMMER] = @@ -13517,7 +13643,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13532,9 +13657,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_DEPENDS, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, }, [MOVE_AQUA_CUTTER] = @@ -13547,9 +13672,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, // | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .slicingMove = TRUE, + .highCritRatio = TRUE, }, [MOVE_BLAZING_TORQUE] = @@ -13562,9 +13688,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMoveEffect = Z_EFFECT_NONE + .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .mimicBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_WICKED_TORQUE] = @@ -13577,9 +13708,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMoveEffect = Z_EFFECT_NONE + .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .mimicBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_NOXIOUS_TORQUE] = @@ -13592,9 +13728,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMoveEffect = Z_EFFECT_NONE + .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .mimicBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_COMBAT_TORQUE] = @@ -13607,9 +13748,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMoveEffect = Z_EFFECT_NONE + .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .mimicBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_MAGICAL_TORQUE] = @@ -13622,9 +13768,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .zMoveEffect = Z_EFFECT_NONE + .zMoveEffect = Z_EFFECT_NONE, + .sheerForceBoost = TRUE, + .mimicBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, }, [MOVE_PSYBLADE] = @@ -13637,9 +13788,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .slicingMove = TRUE, }, [MOVE_HYDRO_STEAM] = @@ -13652,7 +13804,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -13668,9 +13819,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, //determined from move type - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_ALL_OUT_PUMMELING] = { @@ -13682,9 +13832,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_SUPERSONIC_SKYSTRIKE] = { @@ -13696,9 +13845,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_ACID_DOWNPOUR] = { @@ -13710,9 +13858,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_TECTONIC_RAGE] = { @@ -13724,9 +13871,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_CONTINENTAL_CRUSH] = { @@ -13738,9 +13884,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_SAVAGE_SPIN_OUT] = { @@ -13752,9 +13897,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_NEVER_ENDING_NIGHTMARE] = { @@ -13766,9 +13910,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_CORKSCREW_CRASH] = { @@ -13780,9 +13923,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_INFERNO_OVERDRIVE] = { @@ -13794,9 +13936,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_HYDRO_VORTEX] = { @@ -13808,9 +13949,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_BLOOM_DOOM] = { @@ -13822,9 +13962,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_GIGAVOLT_HAVOC] = { @@ -13836,9 +13975,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_SHATTERED_PSYCHE] = { @@ -13850,9 +13988,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_SUBZERO_SLAMMER] = { @@ -13864,9 +14001,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_DEVASTATING_DRAKE] = { @@ -13878,9 +14014,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_BLACK_HOLE_ECLIPSE] = { @@ -13892,9 +14027,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_TWINKLE_TACKLE] = { @@ -13906,9 +14040,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_CATASTROPIKA] = { @@ -13920,9 +14053,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_10000000_VOLT_THUNDERBOLT] = { @@ -13934,9 +14066,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_HIGH_CRIT, .split = SPLIT_SPECIAL, - .zMoveEffect = 0 + .zMoveEffect = 0, + .highCritRatio = TRUE, }, [MOVE_STOKED_SPARKSURFER] = { @@ -13948,9 +14080,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_SPECIAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_EXTREME_EVOBOOST] = { @@ -13962,9 +14093,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_PULVERIZING_PANCAKE] = { @@ -13976,9 +14106,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_GENESIS_SUPERNOVA] = { @@ -13990,10 +14119,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_SPECIAL, .argument = 0, // Set Psychic Terrain. If there's a different field terrain active, overwrite it. - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_SINISTER_ARROW_RAID] = { @@ -14005,9 +14133,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_MALICIOUS_MOONSAULT] = { @@ -14019,9 +14146,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_OCEANIC_OPERETTA] = { @@ -14033,9 +14159,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_SPECIAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_SPLINTERED_STORMSHARDS] = { @@ -14047,10 +14172,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, .argument = 1, // Remove the active field terrain if there is one. - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_LETS_SNUGGLE_FOREVER] = { @@ -14062,9 +14186,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_CLANGOROUS_SOULBLAZE] = { @@ -14076,9 +14199,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_SOUND, .split = SPLIT_SPECIAL, - .zMoveEffect = 0 + .zMoveEffect = 0, + .soundMove = TRUE, }, [MOVE_GUARDIAN_OF_ALOLA] = { @@ -14090,9 +14213,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_SPECIAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_SEARING_SUNRAZE_SMASH] = { @@ -14104,9 +14226,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_MENACING_MOONRAZE_MAELSTROM] = { @@ -14118,9 +14239,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_SPECIAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_LIGHT_THAT_BURNS_THE_SKY] = { @@ -14132,9 +14252,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_SPECIAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, [MOVE_SOUL_STEALING_7_STAR_STRIKE] = { @@ -14146,8 +14265,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_PHYSICAL, - .zMoveEffect = 0 + .zMoveEffect = 0, }, }; diff --git a/test/ability_cute_charm.c b/test/ability_cute_charm.c index ccf5c490b3..5ec6ca7c4d 100644 --- a/test/ability_cute_charm.c +++ b/test/ability_cute_charm.c @@ -7,15 +7,15 @@ SINGLE_BATTLE_TEST("Cute Charm inflicts infatuation on contact") PARAMETRIZE { move = MOVE_TACKLE; } PARAMETRIZE { move = MOVE_SWIFT; } GIVEN { - ASSUME(gBattleMoves[MOVE_TACKLE].flags & FLAG_MAKES_CONTACT); - ASSUME(!(gBattleMoves[MOVE_SWIFT].flags & FLAG_MAKES_CONTACT)); + ASSUME(gBattleMoves[MOVE_TACKLE].makesContact); + ASSUME(!gBattleMoves[MOVE_SWIFT].makesContact); PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); } OPPONENT(SPECIES_CLEFAIRY) { Gender(MON_FEMALE); Ability(ABILITY_CUTE_CHARM); } } WHEN { TURN { MOVE(player, move); } TURN { MOVE(player, move); } } SCENE { - if (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) { + if (gBattleMoves[move].makesContact) { ABILITY_POPUP(opponent, ABILITY_CUTE_CHARM); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, player); MESSAGE("Foe Clefairy's Cute Charm infatuated Wobbuffet!"); diff --git a/test/ability_damp.c b/test/ability_damp.c index 19a4ac5ad4..fc4580daad 100644 --- a/test/ability_damp.c +++ b/test/ability_damp.c @@ -60,7 +60,7 @@ SINGLE_BATTLE_TEST("Damp prevents explosion-like moves from self") SINGLE_BATTLE_TEST("Damp prevents damage from aftermath") { GIVEN { - ASSUME(gBattleMoves[MOVE_TACKLE].flags & FLAG_MAKES_CONTACT); + ASSUME(gBattleMoves[MOVE_TACKLE].makesContact); PLAYER(SPECIES_PARAS) { Ability(ABILITY_DAMP); } OPPONENT(SPECIES_VOLTORB) { Ability(ABILITY_AFTERMATH); HP(1); } OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/ability_flame_body.c b/test/ability_flame_body.c index 3033376931..6d0823062e 100644 --- a/test/ability_flame_body.c +++ b/test/ability_flame_body.c @@ -7,14 +7,14 @@ SINGLE_BATTLE_TEST("Flame Body inflicts burn on contact") PARAMETRIZE { move = MOVE_TACKLE; } PARAMETRIZE { move = MOVE_SWIFT; } GIVEN { - ASSUME(gBattleMoves[MOVE_TACKLE].flags & FLAG_MAKES_CONTACT); - ASSUME(!(gBattleMoves[MOVE_SWIFT].flags & FLAG_MAKES_CONTACT)); + ASSUME(gBattleMoves[MOVE_TACKLE].makesContact); + ASSUME(!gBattleMoves[MOVE_SWIFT].makesContact); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_MAGMAR) { Ability(ABILITY_FLAME_BODY); } } WHEN { TURN { MOVE(player, move); } } SCENE { - if (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) { + if (gBattleMoves[move].makesContact) { ABILITY_POPUP(opponent, ABILITY_FLAME_BODY); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player); MESSAGE("Foe Magmar's Flame Body burned Wobbuffet!"); diff --git a/test/ability_magic_bounce.c b/test/ability_magic_bounce.c index eaf925975c..d560bd7302 100644 --- a/test/ability_magic_bounce.c +++ b/test/ability_magic_bounce.c @@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Magic Bounce bounces back status moves") SINGLE_BATTLE_TEST("Magic Bounce bounces back powder moves") { GIVEN { - ASSUME(gBattleMoves[MOVE_STUN_SPORE].flags & FLAG_POWDER); + ASSUME(gBattleMoves[MOVE_STUN_SPORE].powderMove); ASSUME(gBattleMoves[MOVE_STUN_SPORE].effect == EFFECT_PARALYZE); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_ESPEON) { Ability(ABILITY_MAGIC_BOUNCE); } @@ -40,7 +40,7 @@ SINGLE_BATTLE_TEST("Magic Bounce bounces back powder moves") SINGLE_BATTLE_TEST("Magic Bounce cannot bounce back powder moves against Grass Types") { GIVEN { - ASSUME(gBattleMoves[MOVE_STUN_SPORE].flags & FLAG_POWDER); + ASSUME(gBattleMoves[MOVE_STUN_SPORE].powderMove); ASSUME(gSpeciesInfo[SPECIES_ODDISH].types[0] == TYPE_GRASS); PLAYER(SPECIES_ODDISH); OPPONENT(SPECIES_ESPEON) { Ability(ABILITY_MAGIC_BOUNCE); } diff --git a/test/ability_poison_point.c b/test/ability_poison_point.c index a85edd85ba..2628713982 100644 --- a/test/ability_poison_point.c +++ b/test/ability_poison_point.c @@ -7,15 +7,15 @@ SINGLE_BATTLE_TEST("Poison Point inflicts poison on contact") PARAMETRIZE { move = MOVE_TACKLE; } PARAMETRIZE { move = MOVE_SWIFT; } GIVEN { - ASSUME(gBattleMoves[MOVE_TACKLE].flags & FLAG_MAKES_CONTACT); - ASSUME(!(gBattleMoves[MOVE_SWIFT].flags & FLAG_MAKES_CONTACT)); + ASSUME(gBattleMoves[MOVE_TACKLE].makesContact); + ASSUME(!gBattleMoves[MOVE_SWIFT].makesContact); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_NIDORAN_M) { Ability(ABILITY_POISON_POINT); } } WHEN { TURN { MOVE(player, move); } TURN {} } SCENE { - if (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) { + if (gBattleMoves[move].makesContact) { ABILITY_POPUP(opponent, ABILITY_POISON_POINT); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); MESSAGE("Wobbuffet was poisoned by Foe Nidoran♂'s Poison Point!"); diff --git a/test/ability_static.c b/test/ability_static.c index 022efa5bb8..083540d5b1 100644 --- a/test/ability_static.c +++ b/test/ability_static.c @@ -7,14 +7,14 @@ SINGLE_BATTLE_TEST("Static inflicts paralysis on contact") PARAMETRIZE { move = MOVE_TACKLE; } PARAMETRIZE { move = MOVE_SWIFT; } GIVEN { - ASSUME(gBattleMoves[MOVE_TACKLE].flags & FLAG_MAKES_CONTACT); - ASSUME(!(gBattleMoves[MOVE_SWIFT].flags & FLAG_MAKES_CONTACT)); + ASSUME(gBattleMoves[MOVE_TACKLE].makesContact); + ASSUME(!gBattleMoves[MOVE_SWIFT].makesContact); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_PIKACHU) { Ability(ABILITY_STATIC); } } WHEN { TURN { MOVE(player, move); } } SCENE { - if (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) { + if (gBattleMoves[move].makesContact) { ABILITY_POPUP(opponent, ABILITY_STATIC); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); MESSAGE("Foe Pikachu's Static paralyzed Wobbuffet! It may be unable to move!"); diff --git a/test/ability_stench.c b/test/ability_stench.c index dd1d027e90..33964c355c 100644 --- a/test/ability_stench.c +++ b/test/ability_stench.c @@ -17,7 +17,6 @@ SINGLE_BATTLE_TEST("Stench has a 10% chance to flinch") SINGLE_BATTLE_TEST("Stench does not stack with King's Rock") { - KNOWN_FAILING; PASSES_RANDOMLY(1, 10, RNG_STENCH); GIVEN { ASSUME(gItems[ITEM_KINGS_ROCK].holdEffect == HOLD_EFFECT_FLINCH); diff --git a/test/move.c b/test/move.c index 9e23c2bd00..06a0abc7cf 100644 --- a/test/move.c +++ b/test/move.c @@ -99,7 +99,7 @@ SINGLE_BATTLE_TEST("Critical hits occur at a 1/24 rate") SINGLE_BATTLE_TEST("Slash's critical hits occur at a 1/8 rate") { ASSUME(B_CRIT_CHANCE >= GEN_7); - ASSUME(gBattleMoves[MOVE_SLASH].flags & FLAG_HIGH_CRIT); + ASSUME(gBattleMoves[MOVE_SLASH].highCritRatio); PASSES_RANDOMLY(1, 8, RNG_CRITICAL_HIT); GIVEN { PLAYER(SPECIES_WOBBUFFET); diff --git a/test/move_effect_beak_blast.c b/test/move_effect_beak_blast.c index a2d66b4059..5a8352021c 100644 --- a/test/move_effect_beak_blast.c +++ b/test/move_effect_beak_blast.c @@ -37,7 +37,7 @@ DOUBLE_BATTLE_TEST("Beak Blast burns all who make contact with the pokemon") { GIVEN { ASSUME(gBattleMoves[MOVE_BEAK_BLAST].priority < 0); - ASSUME(gBattleMoves[MOVE_TACKLE].flags & FLAG_MAKES_CONTACT); + ASSUME(gBattleMoves[MOVE_TACKLE].makesContact); PLAYER(SPECIES_WYNAUT) { Speed(10); } PLAYER(SPECIES_WOBBUFFET) { Speed(5); } OPPONENT(SPECIES_WOBBUFFET) { Speed(3); } @@ -80,9 +80,9 @@ SINGLE_BATTLE_TEST("Beak Blast burns only when contact moves are used") PARAMETRIZE { move = MOVE_LEER; burn = FALSE; } GIVEN { - ASSUME(gBattleMoves[MOVE_TACKLE].flags & FLAG_MAKES_CONTACT); - ASSUME(!(gBattleMoves[MOVE_WATER_GUN].flags & FLAG_MAKES_CONTACT)); - ASSUME(!(gBattleMoves[MOVE_LEER].flags & FLAG_MAKES_CONTACT)); + ASSUME(gBattleMoves[MOVE_TACKLE].makesContact); + ASSUME(!gBattleMoves[MOVE_WATER_GUN].makesContact); + ASSUME(!gBattleMoves[MOVE_LEER].makesContact); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/move_effect_recoil_if_miss.c b/test/move_effect_recoil_if_miss.c index 8a80309d74..471c8a2629 100644 --- a/test/move_effect_recoil_if_miss.c +++ b/test/move_effect_recoil_if_miss.c @@ -27,7 +27,7 @@ SINGLE_BATTLE_TEST("Jump Kick has 50% recoil on protect") { s16 recoil; GIVEN { - ASSUME(gBattleMoves[MOVE_JUMP_KICK].flags & FLAG_PROTECT_AFFECTED); + ASSUME(!gBattleMoves[MOVE_JUMP_KICK].ignoresProtect); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/move_effect_triple_arrows.c b/test/move_effect_triple_arrows.c index a899ab7a34..0e45521e49 100644 --- a/test/move_effect_triple_arrows.c +++ b/test/move_effect_triple_arrows.c @@ -46,7 +46,7 @@ SINGLE_BATTLE_TEST("Triple Arrows makes the foe flinch 30% of the time") SINGLE_BATTLE_TEST("Triple Arrows lands a critical hit") { ASSUME(B_CRIT_CHANCE >= GEN_7); - ASSUME(gBattleMoves[MOVE_TRIPLE_ARROWS].flags & FLAG_HIGH_CRIT); + ASSUME(gBattleMoves[MOVE_TRIPLE_ARROWS].highCritRatio == TRUE); PASSES_RANDOMLY(1, 8, RNG_CRITICAL_HIT); GIVEN { PLAYER(SPECIES_WOBBUFFET); diff --git a/test/move_flag_three_strikes.c b/test/move_flag_three_strikes.c index b597b4efef..acb7effc01 100644 --- a/test/move_flag_three_strikes.c +++ b/test/move_flag_three_strikes.c @@ -8,7 +8,7 @@ SINGLE_BATTLE_TEST("Three-strike flag turns a move into a 3-hit move") s16 thirdHit; GIVEN { - ASSUME(gBattleMoves[MOVE_TRIPLE_DIVE].flags & FLAG_THREE_STRIKES); + ASSUME(gBattleMoves[MOVE_TRIPLE_DIVE].threeStrikes); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -34,7 +34,7 @@ SINGLE_BATTLE_TEST("Surging Strikes hits 3 times with each hit being a critical s16 thirdHit; GIVEN { - ASSUME(gBattleMoves[MOVE_SURGING_STRIKES].flags & FLAG_THREE_STRIKES); + ASSUME(gBattleMoves[MOVE_SURGING_STRIKES].threeStrikes); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/powder_moves.c b/test/powder_moves.c index a0185ad371..fea64f8215 100644 --- a/test/powder_moves.c +++ b/test/powder_moves.c @@ -4,7 +4,7 @@ SINGLE_BATTLE_TEST("Powder Moves are blocked by Grass Types") { GIVEN { - ASSUME(gBattleMoves[MOVE_STUN_SPORE].flags & FLAG_POWDER); + ASSUME(gBattleMoves[MOVE_STUN_SPORE].powderMove); ASSUME(gSpeciesInfo[SPECIES_ODDISH].types[0] == TYPE_GRASS); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_ODDISH); @@ -19,7 +19,7 @@ SINGLE_BATTLE_TEST("Powder Moves are blocked by Grass Types") SINGLE_BATTLE_TEST("Powder Moves are blocked by Ability Overcoat") { GIVEN { - ASSUME(gBattleMoves[MOVE_STUN_SPORE].flags & FLAG_POWDER); + ASSUME(gBattleMoves[MOVE_STUN_SPORE].powderMove); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_PINECO) { Ability(ABILITY_OVERCOAT); } } WHEN { @@ -34,7 +34,7 @@ SINGLE_BATTLE_TEST("Powder Moves are blocked by Ability Overcoat") SINGLE_BATTLE_TEST("Powder Moves are blocked by Item Safety Goggles") { GIVEN { - ASSUME(gBattleMoves[MOVE_STUN_SPORE].flags & FLAG_POWDER); + ASSUME(gBattleMoves[MOVE_STUN_SPORE].powderMove); ASSUME(gItems[ITEM_SAFETY_GOGGLES].holdEffect == HOLD_EFFECT_SAFETY_GOGGLES); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_ABRA) { Item(ITEM_SAFETY_GOGGLES); } diff --git a/test/status1.c b/test/status1.c index c244b9a604..3c19d01c1c 100644 --- a/test/status1.c +++ b/test/status1.c @@ -101,7 +101,7 @@ SINGLE_BATTLE_TEST("Freeze is thawed by opponent's Fire-type attacks") SINGLE_BATTLE_TEST("Freeze is thawed by user's Flame Wheel") { GIVEN { - ASSUME(gBattleMoves[MOVE_FLAME_WHEEL].flags & FLAG_THAW_USER); + ASSUME(gBattleMoves[MOVE_FLAME_WHEEL].thawsUser); PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_FREEZE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/test_battle.h b/test/test_battle.h index 607589eeaf..6f21281241 100644 --- a/test/test_battle.h +++ b/test/test_battle.h @@ -87,7 +87,7 @@ * SINGLE_BATTLE_TEST("Stun Spore does not affect Grass-types") * { * GIVEN { - * ASSUME(gBattleMoves[MOVE_STUN_SPORE].flags & FLAG_POWDER); + * ASSUME(gBattleMoves[MOVE_STUN_SPORE].powderMove); * ASSUME(gSpeciesInfo[SPECIES_ODDISH].types[0] == TYPE_GRASS); * PLAYER(SPECIES_ODDISH); // 1. * OPPONENT(SPECIES_ODDISH); // 2.