diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 5a0bb8ffb6..366b8c6dcd 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -435,7 +435,6 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectCorrosiveGas @ EFFECT_CORROSIVE_GAS .4byte BattleScript_EffectHit @ EFFECT_POPULATION_BOMB .4byte BattleScript_EffectMortalSpin @ EFFECT_MORTAL_SPIN - .4byte BattleScript_EffectHit @ EFFECT_GIGATON_HAMMER .4byte BattleScript_EffectSaltCure @ EFFECT_SALT_CURE .4byte BattleScript_EffectMatchaGotcha @ EFFECT_MATCHA_GOTCHA .4byte BattleScript_EffectSyrupBomb @ EFFECT_SYRUP_BOMB diff --git a/include/battle.h b/include/battle.h index 90a392e15c..2d8b8afe3d 100644 --- a/include/battle.h +++ b/include/battle.h @@ -173,7 +173,6 @@ struct SpecialStatus u8 lightningRodRedirected:1; u8 restoredBattlerSprite: 1; u8 traced:1; - u8 ppNotAffectedByPressure:1; u8 faintedHasReplacement:1; u8 focusBanded:1; u8 focusSashed:1; diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h index 37e9c509da..76362a2c7a 100644 --- a/include/battle_ai_util.h +++ b/include/battle_ai_util.h @@ -132,6 +132,7 @@ bool32 IsStatRaisingEffect(u32 effect); bool32 IsAttackBoostMoveEffect(u32 effect); bool32 IsUngroundingEffect(u32 effect); bool32 IsSemiInvulnerable(u32 battlerDef, u32 move); +bool32 HasSubstituteIgnoringMove(u32 battler); bool32 HasSoundMove(u32 battler); bool32 HasHighCritRatioMove(u32 battler); bool32 HasMagicCoatAffectedMove(u32 battler); diff --git a/include/battle_util.h b/include/battle_util.h index 02c5afa7a3..0c67352b11 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -15,7 +15,7 @@ #define MOVE_LIMITATION_BELCH (1 << 11) #define MOVE_LIMITATION_THROAT_CHOP (1 << 12) #define MOVE_LIMITATION_STUFF_CHEEKS (1 << 13) -#define MOVE_LIMITATION_GIGATON_HAMMER (1 << 14) +#define MOVE_LIMITATION_CANT_USE_TWICE (1 << 14) #define MOVE_LIMITATION_PLACEHOLDER (1 << 15) #define MOVE_LIMITATIONS_ALL 0xFFFF @@ -115,9 +115,6 @@ void HandleAction_TryFinish(void); void HandleAction_NothingIsFainted(void); void HandleAction_ActionFinished(void); u8 GetBattlerForBattleScript(u8 caseId); -void PressurePPLose(u8 target, u8 attacker, u16 move); -void PressurePPLoseOnUsingPerishSong(u8 attacker); -void PressurePPLoseOnUsingImprison(u8 attacker); bool32 IsBattlerMarkedForControllerExec(u32 battler); void MarkBattlerForControllerExec(u32 battler); void MarkBattlerReceivedLinkData(u32 battler); diff --git a/include/config/battle.h b/include/config/battle.h index ca995e3271..bf210c1021 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -68,6 +68,7 @@ #define B_KLUTZ_FLING_INTERACTION GEN_LATEST // In Gen5+, Pokémon with the Klutz ability can't use Fling. #define B_UPDATED_CONVERSION GEN_LATEST // In Gen6+, Conversion changes the user's type to match their first move's. Before, it would choose a move at random. #define B_PP_REDUCED_BY_SPITE GEN_LATEST // In Gen4+, Spite reduces the foe's last move's PP by 4, instead of 2 to 5. +#define B_EXTRAPOLATED_MOVE_FLAGS TRUE // Adds move flags to moves that they don't officially have but would likely have if they were in the latest core series game. // Move accuracy settings #define B_TOXIC_NEVER_MISS GEN_LATEST // In Gen6+, if Toxic is used by a Poison-type Pokémon, it will never miss. @@ -84,7 +85,6 @@ #define B_GROWTH_STAT_RAISE GEN_LATEST // In Gen5+, Growth raises Attack in addition to Special Attack by 1 stage each. Under the effects of the sun, it raises them by 2 stages each instead. // Other move settings -#define B_SOUND_SUBSTITUTE GEN_LATEST // In Gen6+, sound moves bypass Substitute. #define B_INCINERATE_GEMS GEN_LATEST // In Gen6+, Incinerate can destroy Gems. #define B_CAN_SPITE_FAIL GEN_LATEST // In Gen4+, Spite can no longer fail if the foe's last move only has 1 remaining PP. #define B_CRASH_IF_TARGET_IMMUNE GEN_LATEST // In Gen4+, The user of Jump Kick or High Jump Kick will "keep going and crash" if it attacks a target that is immune to the move. diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index 421a191043..91b74feee7 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -412,13 +412,12 @@ #define EFFECT_CORROSIVE_GAS 406 #define EFFECT_POPULATION_BOMB 407 #define EFFECT_MORTAL_SPIN 408 -#define EFFECT_GIGATON_HAMMER 409 -#define EFFECT_SALT_CURE 410 -#define EFFECT_MATCHA_GOTCHA 411 -#define EFFECT_SYRUP_BOMB 412 -#define EFFECT_IVY_CUDGEL 413 -#define EFFECT_MAX_MOVE 414 +#define EFFECT_SALT_CURE 409 +#define EFFECT_MATCHA_GOTCHA 410 +#define EFFECT_SYRUP_BOMB 411 +#define EFFECT_IVY_CUDGEL 412 +#define EFFECT_MAX_MOVE 413 -#define NUM_BATTLE_MOVE_EFFECTS 415 +#define NUM_BATTLE_MOVE_EFFECTS 414 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/include/pokemon.h b/include/pokemon.h index a81f112e23..22c32971b2 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -357,6 +357,7 @@ struct BattleMove u32 mirrorMoveBanned:1; u32 ignoresKingsRock:1; u32 highCritRatio:1; + u32 twoTurnMove:1; u32 punchingMove:1; u32 sheerForceBoost:1; u32 bitingMove:1; @@ -379,13 +380,19 @@ struct BattleMove u32 thawsUser:1; u32 ignoresSubstitute:1; u32 strikeCount:4; // Max 15 hits. Defaults to 1 if not set. May apply its effect on each hit. - u32 meFirstBanned:1; + u32 forcePressure:1; + u32 cantUseTwice:1; u32 gravityBanned:1; + u32 healBlockBanned:1; + u32 meFirstBanned:1; u32 mimicBanned:1; u32 metronomeBanned:1; u32 copycatBanned:1; + u32 assistBanned:1; // Matches same moves as copycatBanned + semi-invulnerable moves and Mirror Coat. u32 sleepTalkBanned:1; u32 instructBanned:1; + u32 encoreBanned:1; + u32 parentalBondBanned:1; }; #define SPINDA_SPOT_WIDTH 16 diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index b31f66ec1e..e8453ae1e0 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -1442,7 +1442,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-8); else if (aiData->hpPercents[battlerAtk] <= 25) ADJUST_SCORE(-10); - else if (B_SOUND_SUBSTITUTE >= GEN_6 && HasSoundMove(battlerDef)) + else if (HasSubstituteIgnoringMove(battlerDef)) ADJUST_SCORE(-8); break; case EFFECT_LEECH_SEED: @@ -2521,6 +2521,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (instructedMove == MOVE_NONE || gBattleMoves[instructedMove].instructBanned + || gBattleMoves[instructedMove].twoTurnMove || gBattleMoves[instructedMove].effect == EFFECT_RECHARGE || IsZMove(instructedMove) || (gLockedMoves[battlerDef] != 0 && gLockedMoves[battlerDef] != 0xFFFF) diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 8f74dcd362..8c584c8509 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -1020,7 +1020,6 @@ u32 AI_WhichMoveBetter(u32 move1, u32 move2, u32 battlerAtk, u32 battlerDef, s32 return 0; } - // Check additional effects. effect1 = AI_IsMoveEffectInMinus(battlerAtk, battlerDef, move1, noOfHitsToKo); effect2 = AI_IsMoveEffectInMinus(battlerAtk, battlerDef, move2, noOfHitsToKo); @@ -2359,6 +2358,11 @@ bool32 HasDamagingMoveOfType(u32 battlerId, u32 type) return FALSE; } +bool32 HasSubstituteIgnoringMove(u32 battler) +{ + CHECK_MOVE_FLAG(ignoresSubstitute); +} + bool32 HasSoundMove(u32 battler) { CHECK_MOVE_FLAG(soundMove); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 03d2f9ea5a..3dc177635f 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -336,7 +336,6 @@ static const u16 sWhiteOutBadgeMoney[9] = { 8, 16, 24, 36, 48, 64, 80, 100, 120 #define TAG_LVLUP_BANNER_MON_ICON 55130 -static bool8 IsTwoTurnsMove(u16 move); static void TrySetDestinyBondToHappen(void); static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr); static bool32 IsMonGettingExpSentOut(void); @@ -1365,14 +1364,14 @@ static void Cmd_attackcanceler(void) gHitMarker |= HITMARKER_OBEYS; // Check if no available target present on the field. if (NoTargetPresent(gBattlerAttacker, gCurrentMove) - && (!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) + && (!gBattleMoves[gCurrentMove].twoTurnMove || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) { if (gBattleMoves[gCurrentMove].effect == EFFECT_FLING) // Edge case for removing a mon's item when there is no target available after using Fling. gBattlescriptCurrInstr = BattleScript_FlingFailConsumeItem; else gBattlescriptCurrInstr = BattleScript_FailedFromAtkString; - if (!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) + if (!gBattleMoves[gCurrentMove].twoTurnMove || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) CancelMultiTurnMoves(gBattlerAttacker); return; } @@ -1381,7 +1380,6 @@ static void Cmd_attackcanceler(void) && gBattleMoves[gCurrentMove].magicCoatAffected && !gProtectStructs[gBattlerAttacker].usesBouncedMove) { - PressurePPLose(gBattlerAttacker, gBattlerTarget, MOVE_MAGIC_COAT); gProtectStructs[gBattlerTarget].usesBouncedMove = TRUE; gBattleCommunication[MULTISTRING_CHOOSER] = 0; // Edge case for bouncing a powder move against a grass type pokemon. @@ -1426,7 +1424,6 @@ static void Cmd_attackcanceler(void) { if ((gProtectStructs[gBattlerByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].snatchAffected) { - PressurePPLose(gBattlerAttacker, gBattlerByTurnOrder[i], MOVE_SNATCH); gProtectStructs[gBattlerByTurnOrder[i]].stealMove = FALSE; gBattleScripting.battler = gBattlerByTurnOrder[i]; BattleScriptPushCursor(); @@ -1453,7 +1450,7 @@ static void Cmd_attackcanceler(void) } else if (IsBattlerProtected(gBattlerTarget, gCurrentMove) && (gCurrentMove != MOVE_CURSE || IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST)) - && ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) + && ((!gBattleMoves[gCurrentMove].twoTurnMove || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) && gBattleMoves[gCurrentMove].effect != EFFECT_SUCKER_PUNCH) { if (IsMoveMakingContact(gCurrentMove, gBattlerAttacker)) @@ -1825,35 +1822,27 @@ static void Cmd_ppreduce(void) CMD_ARGS(); s32 i, ppToDeduct = 1; + u32 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); if (gBattleControllerExecFlags) return; - if (!gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure) + if (moveTarget == MOVE_TARGET_BOTH + || moveTarget == MOVE_TARGET_FOES_AND_ALLY + || moveTarget == MOVE_TARGET_ALL_BATTLERS + || gBattleMoves[gCurrentMove].forcePressure) { - switch (GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove)) + for (i = 0; i < gBattlersCount; i++) { - case MOVE_TARGET_FOES_AND_ALLY: - for (i = 0; i < gBattlersCount; i++) - { - if (i != gBattlerAttacker && IsBattlerAlive(i)) - ppToDeduct += (GetBattlerAbility(i) == ABILITY_PRESSURE); - } - break; - case MOVE_TARGET_BOTH: - case MOVE_TARGET_OPPONENTS_FIELD: - for (i = 0; i < gBattlersCount; i++) - { - if (GetBattlerSide(i) != GetBattlerSide(gBattlerAttacker) && IsBattlerAlive(i)) - ppToDeduct += (GetBattlerAbility(i) == ABILITY_PRESSURE); - } - break; - default: - if (gBattlerAttacker != gBattlerTarget && GetBattlerAbility(gBattlerTarget) == ABILITY_PRESSURE) - ppToDeduct++; - break; + if (GetBattlerSide(i) != GetBattlerSide(gBattlerAttacker) && IsBattlerAlive(i)) + ppToDeduct += (GetBattlerAbility(i) == ABILITY_PRESSURE); } } + else if (moveTarget != MOVE_TARGET_OPPONENTS_FIELD) + { + if (gBattlerAttacker != gBattlerTarget && GetBattlerAbility(gBattlerTarget) == ABILITY_PRESSURE) + ppToDeduct++; + } if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBattlerAttacker].pp[gCurrMovePos]) { @@ -9569,7 +9558,7 @@ static void Cmd_various(void) case VARIOUS_TRY_COPYCAT: { VARIOUS_ARGS(const u8 *failInstr); - if (gLastUsedMove == MOVE_UNAVAILABLE || gBattleMoves[gLastUsedMove].copycatBanned) + if (gLastUsedMove == MOVE_NONE || gLastUsedMove == MOVE_UNAVAILABLE || gBattleMoves[gLastUsedMove].copycatBanned) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -9589,7 +9578,8 @@ static void Cmd_various(void) { VARIOUS_ARGS(const u8 *failInstr); u16 move = gLastMoves[gBattlerTarget]; - if (move == MOVE_UNAVAILABLE || gBattleMoves[move].instructBanned || IsDynamaxed(gBattlerTarget)) + if (move == MOVE_NONE || move == MOVE_UNAVAILABLE || gBattleMoves[move].effect == EFFECT_RECHARGE + || gBattleMoves[move].instructBanned || gBattleMoves[move].twoTurnMove || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -10970,7 +10960,6 @@ static void Cmd_trymirrormove(void) } else // no valid moves found { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -12458,6 +12447,7 @@ static void Cmd_mimicattackcopy(void) if ((gBattleMoves[gLastMoves[gBattlerTarget]].mimicBanned) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED) + || gLastMoves[gBattlerTarget] == MOVE_NONE || gLastMoves[gBattlerTarget] == MOVE_UNAVAILABLE) { gBattlescriptCurrInstr = cmd->failInstr; @@ -12565,7 +12555,6 @@ static void Cmd_counterdamagecalculator(void) } else { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->failInstr; } } @@ -12593,7 +12582,6 @@ static void Cmd_mirrorcoatdamagecalculator(void) } else { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->failInstr; } } @@ -12652,12 +12640,9 @@ static void Cmd_trysetencore(void) } } - if (gLastMoves[gBattlerTarget] == MOVE_NONE - || gLastMoves[gBattlerTarget] == MOVE_UNAVAILABLE - || gLastMoves[gBattlerTarget] == MOVE_STRUGGLE - || gLastMoves[gBattlerTarget] == MOVE_ENCORE - || gLastMoves[gBattlerTarget] == MOVE_MIRROR_MOVE - || gLastMoves[gBattlerTarget] == MOVE_SHELL_TRAP) + if ((gBattleMoves[gLastMoves[gBattlerTarget]].encoreBanned) + || gLastMoves[gBattlerTarget] == MOVE_NONE + || gLastMoves[gBattlerTarget] == MOVE_UNAVAILABLE) { i = MAX_MON_MOVES; } @@ -12712,7 +12697,7 @@ static void Cmd_settypetorandomresistance(void) { gBattlescriptCurrInstr = cmd->failInstr; } - else if (IsTwoTurnsMove(gLastLandedMoves[gBattlerAttacker]) + else if (gBattleMoves[gLastLandedMoves[gBattlerAttacker]].twoTurnMove && gBattleMons[gLastHitBy[gBattlerAttacker]].status2 & STATUS2_MULTIPLETURNS) { gBattlescriptCurrInstr = cmd->failInstr; @@ -12821,20 +12806,6 @@ static void Cmd_copymovepermanently(void) } } -static bool8 IsTwoTurnsMove(u16 move) -{ - if (gBattleMoves[move].effect == EFFECT_SKULL_BASH - || gBattleMoves[move].effect == EFFECT_TWO_TURNS_ATTACK - || 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_GEOMANCY) - return TRUE; - else - return FALSE; -} - static void Cmd_trychoosesleeptalkmove(void) { CMD_ARGS(const u8 *failInstr); @@ -12843,8 +12814,8 @@ static void Cmd_trychoosesleeptalkmove(void) for (i = 0; i < MAX_MON_MOVES; i++) { - if ((gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].sleepTalkBanned) - || IsTwoTurnsMove(gBattleMons[gBattlerAttacker].moves[i])) + if (gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].sleepTalkBanned + || gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].twoTurnMove) { unusableMovesBits |= gBitTable[i]; } @@ -13109,7 +13080,6 @@ static void Cmd_trysetspikes(void) if (gSideTimers[targetSide].spikesAmount == 3) { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->failInstr; } else @@ -13150,8 +13120,6 @@ static void Cmd_trysetperishsong(void) } } - PressurePPLoseOnUsingPerishSong(gBattlerAttacker); - if (notAffectedCount == gBattlersCount) gBattlescriptCurrInstr = cmd->failInstr; else @@ -14256,7 +14224,6 @@ static void Cmd_tryimprison(void) u8 battler, sideAttacker; sideAttacker = GetBattlerSide(gBattlerAttacker); - PressurePPLoseOnUsingImprison(gBattlerAttacker); for (battler = 0; battler < gBattlersCount; battler++) { if (sideAttacker != GetBattlerSide(battler)) @@ -14351,9 +14318,7 @@ static void Cmd_assistattackselect(void) { u16 move = GetMonData(&party[monId], MON_DATA_MOVE1 + moveId); - if (gBattleMoves[move].copycatBanned - || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE - || gBattleMoves[move].effect == EFFECT_SKY_DROP) + if (gBattleMoves[move].assistBanned) continue; validMoves[chooseableMovesNo++] = move; @@ -14380,8 +14345,6 @@ static void Cmd_trysetmagiccoat(void) { CMD_ARGS(const u8 *failInstr); - gBattlerTarget = gBattlerAttacker; - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; if (gCurrentTurnActionNumber == gBattlersCount - 1) // moves last turn { gBattlescriptCurrInstr = cmd->failInstr; @@ -14398,7 +14361,6 @@ static void Cmd_trysetsnatch(void) { CMD_ARGS(const u8 *failInstr); - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; if (gCurrentTurnActionNumber == gBattlersCount - 1) // moves last turn { gBattlescriptCurrInstr = cmd->failInstr; @@ -14705,8 +14667,6 @@ bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move) { if (!(gBattleMons[battlerDef].status2 & STATUS2_SUBSTITUTE)) return FALSE; - else if (B_SOUND_SUBSTITUTE >= GEN_6 && gBattleMoves[move].soundMove) - return FALSE; else if (gBattleMoves[move].ignoresSubstitute) return FALSE; else if (GetBattlerAbility(battlerAtk) == ABILITY_INFILTRATOR) @@ -15625,7 +15585,6 @@ void BS_CalcMetalBurstDmg(void) } else { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->failInstr; } } @@ -15726,41 +15685,13 @@ static bool32 CriticalCapture(u32 odds) return FALSE; } -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_SEMI_INVULNERABLE, - EFFECT_SKULL_BASH, - EFFECT_SKY_DROP, - EFFECT_SOLAR_BEAM, - EFFECT_TRIPLE_KICK, - EFFECT_TWO_TURNS_ATTACK, - EFFECT_UPROAR, -}; - bool32 IsMoveAffectedByParentalBond(u32 move, u32 battler) { - if (move != MOVE_NONE && move != MOVE_STRUGGLE + if (move != MOVE_NONE && move != MOVE_UNAVAILABLE && move != MOVE_STRUGGLE + && !gBattleMoves[move].parentalBondBanned && gBattleMoves[move].split != SPLIT_STATUS && gBattleMoves[move].strikeCount < 2) { - 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(battler, move)) diff --git a/src/battle_util.c b/src/battle_util.c index 370f851977..fb58181fbb 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1212,93 +1212,6 @@ u8 GetBattlerForBattleScript(u8 caseId) return ret; } -void PressurePPLose(u8 target, u8 attacker, u16 move) -{ - int moveIndex; - - if (GetBattlerAbility(target) != ABILITY_PRESSURE) - return; - - for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) - { - if (gBattleMons[attacker].moves[moveIndex] == move) - break; - } - - if (moveIndex == MAX_MON_MOVES) - return; - - if (gBattleMons[attacker].pp[moveIndex] != 0) - gBattleMons[attacker].pp[moveIndex]--; - - if (MOVE_IS_PERMANENT(attacker, moveIndex)) - { - BtlController_EmitSetMonData(attacker, BUFFER_A, REQUEST_PPMOVE1_BATTLE + moveIndex, 0, 1, &gBattleMons[attacker].pp[moveIndex]); - MarkBattlerForControllerExec(attacker); - } -} - -void PressurePPLoseOnUsingImprison(u8 attacker) -{ - int i, j; - int imprisonPos = MAX_MON_MOVES; - u8 atkSide = GetBattlerSide(attacker); - - for (i = 0; i < gBattlersCount; i++) - { - if (atkSide != GetBattlerSide(i) && GetBattlerAbility(i) == ABILITY_PRESSURE) - { - for (j = 0; j < MAX_MON_MOVES; j++) - { - if (gBattleMons[attacker].moves[j] == MOVE_IMPRISON) - break; - } - if (j != MAX_MON_MOVES) - { - imprisonPos = j; - if (gBattleMons[attacker].pp[j] != 0) - gBattleMons[attacker].pp[j]--; - } - } - } - - if (imprisonPos != MAX_MON_MOVES && MOVE_IS_PERMANENT(attacker, imprisonPos)) - { - BtlController_EmitSetMonData(attacker, BUFFER_A, REQUEST_PPMOVE1_BATTLE + imprisonPos, 0, 1, &gBattleMons[attacker].pp[imprisonPos]); - MarkBattlerForControllerExec(attacker); - } -} - -void PressurePPLoseOnUsingPerishSong(u8 attacker) -{ - int i, j; - int perishSongPos = MAX_MON_MOVES; - - for (i = 0; i < gBattlersCount; i++) - { - if (GetBattlerAbility(i) == ABILITY_PRESSURE && i != attacker) - { - for (j = 0; j < MAX_MON_MOVES; j++) - { - if (gBattleMons[attacker].moves[j] == MOVE_PERISH_SONG) - break; - } - if (j != MAX_MON_MOVES) - { - perishSongPos = j; - if (gBattleMons[attacker].pp[j] != 0) - gBattleMons[attacker].pp[j]--; - } - } - } - - if (perishSongPos != MAX_MON_MOVES && MOVE_IS_PERMANENT(attacker, perishSongPos)) - { - BtlController_EmitSetMonData(attacker, BUFFER_A, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[attacker].pp[perishSongPos]); - MarkBattlerForControllerExec(attacker); - } -} - static void UNUSED MarkAllBattlersForControllerExec(void) { int i; @@ -1575,26 +1488,7 @@ bool32 IsHealBlockPreventingMove(u32 battler, u32 move) if (!(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) return FALSE; - switch (gBattleMoves[move].effect) - { - case EFFECT_MORNING_SUN: - case EFFECT_SYNTHESIS: - case EFFECT_MOONLIGHT: - case EFFECT_RESTORE_HP: - case EFFECT_REST: - case EFFECT_ROOST: - case EFFECT_HEALING_WISH: - case EFFECT_WISH: - case EFFECT_HEAL_PULSE: - case EFFECT_JUNGLE_HEALING: - return TRUE; - case EFFECT_ABSORB: - case EFFECT_STRENGTH_SAP: - case EFFECT_DREAM_EATER: - return B_HEAL_BLOCKING >= GEN_6; - default: - return FALSE; - } + return gBattleMoves[move].healBlockBanned; } static bool32 IsBelchPreventingMove(u32 battler, u32 move) @@ -1755,7 +1649,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleMoves[move].effect == EFFECT_GIGATON_HAMMER && move == gLastResultingMoves[battler]) + if (gBattleMoves[move].cantUseTwice && move == gLastResultingMoves[battler]) { gCurrentMove = move; PREPARE_MOVE_BUFFER(gBattleTextBuff1, gCurrentMove); @@ -1910,7 +1804,8 @@ u8 CheckMoveLimitations(u32 battler, u8 unusableMoves, u16 check) // Gorilla Tactics else if (check & MOVE_LIMITATION_CHOICE_ITEM && GetBattlerAbility(battler) == ABILITY_GORILLA_TACTICS && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != gBattleMons[battler].moves[i]) unusableMoves |= gBitTable[i]; - else if (check & MOVE_LIMITATION_GIGATON_HAMMER && gBattleMoves[gBattleMons[battler].moves[i]].effect == EFFECT_GIGATON_HAMMER && gBattleMons[battler].moves[i] == gLastResultingMoves[battler]) + // Can't Use Twice flag + else if (check & MOVE_LIMITATION_CANT_USE_TWICE && gBattleMoves[gBattleMons[battler].moves[i]].cantUseTwice && gBattleMons[battler].moves[i] == gLastResultingMoves[battler]) unusableMoves |= gBitTable[i]; } return unusableMoves; @@ -8305,9 +8200,6 @@ bool32 IsBattlerProtected(u32 battler, u32 move) if (gProtectStructs[battler].maxGuarded && IsMoveBlockedByMaxGuard(move)) return TRUE; - if (move == MOVE_TEATIME) - return FALSE; - // 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 @@ -8316,8 +8208,6 @@ bool32 IsBattlerProtected(u32 battler, u32 move) return FALSE; else if (gBattleMoves[move].ignoresProtect) return FALSE; - else if (gBattleMoves[move].effect == EFFECT_FEINT) - return FALSE; else if (gProtectStructs[battler].protected) return TRUE; else if (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_WIDE_GUARD diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 896d4a530a..0ad7cc0719 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -11,11 +11,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .mimicBanned = TRUE, .metronomeBanned = TRUE, - .copycatBanned = TRUE, - .sleepTalkBanned = TRUE, - .instructBanned = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_POUND] = @@ -224,8 +221,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .highCritRatio = TRUE, + .twoTurnMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .windMove = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_SWORDS_DANCE] = @@ -314,8 +313,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .windMove = TRUE, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_FLY] = @@ -334,10 +335,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .gravityBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BIND] = @@ -655,6 +658,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .instructBanned = TRUE, }, [MOVE_DOUBLE_EDGE] = @@ -784,6 +788,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_DEF_UP_1, .magicCoatAffected = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_ROAR] = @@ -803,9 +808,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .soundMove = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SING] = @@ -820,6 +827,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -836,6 +844,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -872,6 +881,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -940,6 +950,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1105,7 +1117,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, - .instructBanned = TRUE, }, [MOVE_PECK] = @@ -1185,11 +1196,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .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, + .assistBanned = TRUE, }, [MOVE_SEISMIC_TOSS] = @@ -1239,6 +1250,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_MEGA_DRAIN] = @@ -1258,6 +1270,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_LEECH_SEED] = @@ -1295,6 +1308,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1326,6 +1341,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, }, @@ -1400,6 +1416,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .danceMove = TRUE, + .instructBanned = TRUE, }, [MOVE_STRING_SHOT] = @@ -1590,9 +1607,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TOXIC] = @@ -1671,6 +1690,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1686,6 +1707,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1731,6 +1754,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = -6, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_NIGHT_SHADE] = @@ -1759,11 +1784,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresSubstitute = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, // B_UPDATED_MOVE_FLAGS >= GEN_2 .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SCREECH] = @@ -1778,6 +1806,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -1794,6 +1823,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1815,6 +1846,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .snatchAffected = TRUE, }, @@ -1830,6 +1864,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1849,6 +1885,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1894,6 +1932,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1909,6 +1949,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1928,6 +1970,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1943,6 +1987,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1958,6 +2004,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_REFLECT] = @@ -1972,6 +2021,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1987,8 +2038,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, - .sleepTalkBanned = TRUE, }, [MOVE_BIDE] = @@ -2011,6 +2063,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_METRONOME] = @@ -2025,10 +2078,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_3, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_MIRROR_MOVE] = @@ -2043,10 +2101,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_2, + .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .copycatBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_3, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SELF_DESTRUCT] = @@ -2061,6 +2122,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .parentalBondBanned = TRUE, }, [MOVE_EGG_BOMB] = @@ -2238,6 +2300,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -2285,6 +2348,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -2319,6 +2384,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -2379,6 +2447,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_POISON_GAS] = @@ -2438,6 +2507,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_LOVELY_KISS] = @@ -2468,6 +2538,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_FLINCH, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -2486,10 +2557,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .copycatBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BUBBLE] = @@ -2593,6 +2667,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_3, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .gravityBanned = TRUE, }, @@ -2613,6 +2689,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CRABHAMMER] = @@ -2651,6 +2729,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .parentalBondBanned = TRUE, }, [MOVE_FURY_SWIPES] = @@ -2700,6 +2779,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, }, [MOVE_ROCK_SLIDE] = @@ -2747,6 +2829,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CONVERSION] = @@ -2762,6 +2846,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TRI_ATTACK] = @@ -2825,6 +2911,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_STRUGGLE] = @@ -2849,8 +2937,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, + .sleepTalkBanned = TRUE, .copycatBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SKETCH] = @@ -2866,11 +2957,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TRIPLE_KICK] = @@ -2911,6 +3006,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .meFirstBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SPIDER_WEB] = @@ -2999,6 +3095,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .sheerForceBoost = TRUE, .soundMove = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, @@ -3021,6 +3118,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_CURSE, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_FLAIL] = @@ -3051,6 +3150,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_AEROBLAST] = @@ -3120,6 +3221,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresSubstitute = TRUE, }, [MOVE_POWDER_SNOW] = @@ -3160,6 +3262,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .protectionMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_MACH_PUNCH] = @@ -3246,6 +3349,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SLUDGE_BOMB] = @@ -3307,7 +3412,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .forcePressure = TRUE, }, [MOVE_ZAP_CANNON] = @@ -3347,6 +3455,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresSubstitute = TRUE, }, [MOVE_DESTINY_BOND] = @@ -3361,8 +3470,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_FOLLOW_ME, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PERISH_SONG] = @@ -3378,6 +3491,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .ignoresProtect = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .mirrorMoveBanned = TRUE, .soundMove = TRUE, }, @@ -3413,9 +3528,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_USER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .protectionMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BONE_RUSH] = @@ -3490,6 +3608,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .windMove = TRUE, }, @@ -3514,6 +3634,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_ENDURE] = @@ -3532,9 +3653,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_USER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .protectionMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_CHARM] = @@ -3570,6 +3694,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .instructBanned = TRUE, + .parentalBondBanned = TRUE, }, [MOVE_FALSE_SWIPE] = @@ -3622,7 +3747,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SPARK] = @@ -3708,6 +3836,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .magicCoatAffected = TRUE, + .ignoresSubstitute = TRUE, }, [MOVE_SLEEP_TALK] = @@ -3722,10 +3851,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .mimicBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_HEAL_BELL] = @@ -3736,11 +3870,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .accuracy = 0, .pp = 5, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .soundMove = B_UPDATED_MOVE_FLAGS != GEN_5, }, @@ -3802,6 +3939,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_PAIN_SPLIT] = @@ -3909,6 +4048,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ENCORE] = @@ -3924,6 +4065,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .encoreBanned = TRUE, + .ignoresSubstitute = TRUE, }, [MOVE_PURSUIT] = @@ -4039,7 +4182,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SYNTHESIS] = @@ -4054,7 +4200,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_MOONLIGHT] = @@ -4073,7 +4222,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HIDDEN_POWER] = @@ -4135,6 +4287,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SUNNY_DAY] = @@ -4149,6 +4303,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CRUNCH] = @@ -4187,7 +4343,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .meFirstBanned = TRUE, .metronomeBanned = TRUE, - .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PSYCH_UP] = @@ -4203,6 +4359,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, }, @@ -4382,6 +4540,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -4404,6 +4563,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SPIT_UP] = @@ -4437,7 +4598,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAT_WAVE] = @@ -4472,6 +4636,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TORMENT] = @@ -4568,9 +4734,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .mirrorMoveBanned = TRUE, .punchingMove = TRUE, .meFirstBanned = TRUE, + .sleepTalkBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SMELLING_SALTS] = @@ -4609,8 +4777,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_USER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_NATURE_POWER] = @@ -4629,6 +4800,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, }, [MOVE_CHARGE] = @@ -4644,6 +4818,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TAUNT] = @@ -4658,6 +4834,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -4677,8 +4854,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 5, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TRICK] = @@ -4695,6 +4876,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_SPD_UP_2, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_ROLE_PLAY] = @@ -4710,6 +4892,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_WISH] = @@ -4724,7 +4908,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .healBlockBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ASSIST] = @@ -4739,10 +4926,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, }, [MOVE_INGRAIN] = @@ -4758,6 +4950,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SUPERPOWER] = @@ -4787,6 +4981,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 4, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_RECYCLE] = @@ -4802,6 +4998,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_REVENGE] = @@ -4881,6 +5079,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .parentalBondBanned = TRUE, }, [MOVE_ERUPTION] = @@ -4909,6 +5108,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = TRUE, }, [MOVE_IMPRISON] = @@ -4924,6 +5124,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, + .forcePressure = TRUE, }, [MOVE_REFRESH] = @@ -4939,6 +5143,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GRUDGE] = @@ -4953,6 +5159,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_FOLLOW_ME, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SNATCH] = @@ -4967,9 +5176,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 4, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .ignoresSubstitute = TRUE, + .forcePressure = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SECRET_POWER] = @@ -5003,9 +5214,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_ARM_THRUST] = @@ -5036,6 +5249,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TAIL_GLOW] = @@ -5055,6 +5270,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_LUSTER_PURGE] = @@ -5149,6 +5366,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ICE_BALL] = @@ -5166,6 +5385,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .makesContact = TRUE, .ballisticMove = TRUE, .instructBanned = TRUE, + .parentalBondBanned = TRUE, }, [MOVE_NEEDLE_ARM] = @@ -5201,7 +5421,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HYPER_VOICE] = @@ -5217,6 +5440,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_POISON_FANG] = @@ -5268,7 +5492,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .instructBanned = TRUE, }, [MOVE_HYDRO_CANNON] = @@ -5283,7 +5506,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .instructBanned = TRUE, }, [MOVE_METEOR_MASH] = @@ -5348,11 +5570,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .accuracy = 0, .pp = 5, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_FAKE_TEARS] = @@ -5428,6 +5652,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -5465,6 +5690,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .windMove = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_METAL_SOUND] = @@ -5479,6 +5705,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -5495,6 +5722,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -5527,6 +5755,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_WATER_SPOUT] = @@ -5729,6 +5959,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_BLOCK] = @@ -5764,6 +5996,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .soundMove = B_UPDATED_MOVE_FLAGS >= GEN_8, }, @@ -5809,6 +6043,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_BOUNCE] = @@ -5824,11 +6060,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_PARALYSIS, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .sheerForceBoost = TRUE, .gravityBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_MUD_SHOT] = @@ -5892,6 +6130,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .meFirstBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_VOLT_TACKLE] = @@ -5941,6 +6180,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CALM_MIND] = @@ -5956,6 +6197,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_LEAF_BLADE] = @@ -5993,6 +6236,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_RESET_STATS, .danceMove = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ROCK_BLAST] = @@ -6095,7 +6340,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GRAVITY] = @@ -6110,6 +6358,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_MIRACLE_EYE] = @@ -6124,6 +6374,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -6191,7 +6442,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .healBlockBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_BRINE] = @@ -6242,6 +6496,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_6, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PLUCK] = @@ -6277,6 +6532,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_BOOST_CRITS, .snatchAffected = TRUE, .windMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ACUPRESSURE] = @@ -6292,6 +6549,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, }, @@ -6401,6 +6659,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .parentalBondBanned = TRUE, }, [MOVE_PSYCHO_SHIFT] = @@ -6478,6 +6737,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GASTRO_ACID] = @@ -6508,6 +6769,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ME_FIRST] = @@ -6522,10 +6785,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, }, [MOVE_COPYCAT] = @@ -6540,10 +6809,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, }, [MOVE_POWER_SWAP] = @@ -6558,6 +6832,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = TRUE, }, [MOVE_GUARD_SWAP] = @@ -6572,6 +6847,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = TRUE, }, [MOVE_PUNISHMENT] = @@ -6654,7 +6930,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .forcePressure = TRUE, }, [MOVE_HEART_SWAP] = @@ -6669,6 +6948,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, + .ignoresSubstitute = TRUE, }, [MOVE_AQUA_RING] = @@ -6684,6 +6964,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_MAGNET_RISE] = @@ -6699,6 +6981,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .gravityBanned = TRUE, }, @@ -6769,6 +7053,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_POISON_JAB] = @@ -6900,6 +7186,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_DRAGON_PULSE] = @@ -6975,6 +7262,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .punchingMove = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_VACUUM_WAVE] = @@ -7071,6 +7359,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_SPD_UP_2, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_GIGA_IMPACT] = @@ -7086,7 +7375,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, - .instructBanned = TRUE, }, [MOVE_NASTY_PLOT] = @@ -7102,6 +7390,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_BULLET_PUNCH] = @@ -7344,6 +7634,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + //.ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -7359,6 +7650,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = -7, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresProtect = TRUE, }, [MOVE_DRACO_METEOR] = @@ -7455,7 +7747,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .ballisticMove = TRUE, - .instructBanned = TRUE, }, [MOVE_CROSS_POISON] = @@ -7523,6 +7814,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ballisticMove = TRUE, }, [MOVE_STONE_EDGE] = @@ -7568,6 +7860,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .forcePressure = TRUE, }, [MOVE_GRASS_KNOT] = @@ -7606,14 +7901,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_6, - .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_JUDGMENT] = @@ -7719,6 +8015,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAL_ORDER] = @@ -7733,7 +8031,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAD_SMASH] = @@ -7779,7 +8080,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .instructBanned = TRUE, }, [MOVE_SPACIAL_REND] = @@ -7810,6 +8110,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .danceMove = TRUE, }, @@ -7897,6 +8200,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .windMove = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_SHADOW_FORCE] = @@ -7913,10 +8217,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .argument = MOVE_EFFECT_FEINT, + .twoTurnMove = TRUE, .ignoresProtect = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_HONE_CLAWS] = @@ -7932,6 +8238,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_WIDE_GUARD] = @@ -7948,6 +8256,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .protectionMove = TRUE, .metronomeBanned = TRUE, }, @@ -7964,6 +8274,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .mirrorMoveBanned = TRUE, }, [MOVE_POWER_SPLIT] = @@ -7978,6 +8289,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .mirrorMoveBanned = TRUE, }, [MOVE_WONDER_ROOM] = @@ -7996,6 +8308,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_ALL_BATTLERS, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, }, [MOVE_PSYSHOCK] = @@ -8039,6 +8352,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_RAGE_POWDER] = @@ -8058,8 +8373,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .powderMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TELEKINESIS] = @@ -8094,6 +8412,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_ALL_BATTLERS, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, }, [MOVE_SMACK_DOWN] = @@ -8171,7 +8490,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .danceMove = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAVY_SLAM] = @@ -8187,7 +8509,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, - .danceMove = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_7, }, @@ -8269,6 +8590,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_LOW_SWEEP] = @@ -8364,6 +8687,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -8379,6 +8705,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -8394,6 +8721,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -8455,6 +8783,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .protectionMove = TRUE, .metronomeBanned = TRUE, }, @@ -8475,6 +8805,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_USER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SCALD] = @@ -8506,6 +8838,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAL_PULSE] = @@ -8521,6 +8855,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .magicCoatAffected = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .pulseMove = TRUE, }, @@ -8554,10 +8890,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .gravityBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SHIFT_GEAR] = @@ -8573,6 +8911,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CIRCLE_THROW] = @@ -8589,6 +8929,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_INCINERATE] = @@ -8621,7 +8962,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, - .magicCoatAffected = TRUE, .metronomeBanned = TRUE, }, @@ -8652,7 +8992,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, - .snatchAffected = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_RETALIATE] = @@ -8683,6 +9024,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .mirrorMoveBanned = TRUE, + .parentalBondBanned = TRUE, }, [MOVE_BESTOW] = @@ -8698,8 +9040,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_INFERNO] = @@ -8851,6 +9195,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_WORK_UP] = @@ -8866,6 +9211,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE }, [MOVE_ELECTROWEB] = @@ -8959,6 +9306,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_SACRED_SWORD] = @@ -9028,6 +9376,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + //.windMove = TRUE, }, [MOVE_STEAMROLLER] = @@ -9060,6 +9409,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_NIGHT_DAZE] = @@ -9208,6 +9559,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .argument = STATUS1_SLEEP, .sheerForceBoost = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .metronomeBanned = TRUE, }, @@ -9224,6 +9576,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .slicingMove = TRUE, .metronomeBanned = TRUE, }, @@ -9302,6 +9655,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_PARALYSIS, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, @@ -9321,6 +9675,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .argument = MOVE_EFFECT_BURN, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, @@ -9340,6 +9695,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .metronomeBanned = TRUE, }, @@ -9440,8 +9796,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BELCH] = @@ -9459,9 +9818,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .metronomeBanned = TRUE, + .mimicBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_ROTOTILLER] = @@ -9477,6 +9838,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_STICKY_WEB] = @@ -9491,6 +9853,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .magicCoatAffected = TRUE, }, @@ -9526,11 +9890,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_FEINT, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .ignoresProtect = TRUE, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TRICK_OR_TREAT] = @@ -9546,6 +9912,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .argument = TYPE_GHOST, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_NOBLE_ROAR] = @@ -9560,6 +9927,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -9576,6 +9944,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 1, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_PARABOLIC_CHARGE] = @@ -9594,6 +9964,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_FORESTS_CURSE] = @@ -9609,6 +9980,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .argument = TYPE_GRASS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_PETAL_BLIZZARD] = @@ -9653,6 +10025,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -9669,6 +10042,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESTORE_REPLACEMENT_HP, .magicCoatAffected = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -9705,6 +10079,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = 75, // restores 75% HP instead of 50% HP .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_CRAFTY_SHIELD] = @@ -9720,6 +10095,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -9736,6 +10113,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GRASSY_TERRAIN] = @@ -9750,6 +10128,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_MISTY_TERRAIN] = @@ -9764,6 +10144,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ELECTRIFY] = @@ -9838,6 +10220,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -9853,6 +10236,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, }, [MOVE_KINGS_SHIELD] = @@ -9868,9 +10253,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PLAY_NICE] = @@ -9886,6 +10274,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, .magicCoatAffected = TRUE, }, @@ -9903,6 +10292,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .ignoresProtect = TRUE, .magicCoatAffected = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -9956,6 +10346,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, }, @@ -10010,8 +10401,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_AROMATIC_MIST] = @@ -10027,6 +10421,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_EERIE_IMPULSE] = @@ -10071,6 +10467,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 1, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, + .powderMove = TRUE, .magicCoatAffected = TRUE, }, @@ -10086,6 +10483,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .twoTurnMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, }, @@ -10103,6 +10501,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HAPPY_HOUR] = @@ -10117,6 +10518,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ELECTRIC_TERRAIN] = @@ -10131,6 +10534,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_DAZZLING_GLEAM] = @@ -10159,10 +10564,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .mimicBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_HOLD_HANDS] = @@ -10178,10 +10587,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, + .mimicBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BABY_DOLL_EYES] = @@ -10275,6 +10687,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .argument = 75, // restores 75% HP instead of 50% HP .zMoveEffect = Z_EFFECT_NONE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_THOUSAND_ARROWS] = @@ -10417,7 +10830,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_FIRST_IMPRESSION] = @@ -10448,8 +10864,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SPIRIT_SHACKLE] = @@ -10497,6 +10916,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = STATUS1_BURN, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -10528,6 +10948,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .magicCoatAffected = TRUE, }, @@ -10559,6 +10981,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .magicCoatAffected = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_SOLAR_BLADE] = @@ -10573,6 +10996,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .slicingMove = TRUE, .sleepTalkBanned = TRUE, @@ -10606,8 +11030,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .magicCoatAffected = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TOXIC_THREAD] = @@ -10638,6 +11064,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GEAR_UP] = @@ -10653,6 +11081,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_THROAT_CHOP] = @@ -10714,6 +11145,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_LUNGE] = @@ -10790,6 +11223,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = TRUE, }, [MOVE_SMART_STRIKE] = @@ -10819,6 +11253,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .magicCoatAffected = TRUE, }, @@ -10879,6 +11315,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .instructBanned = TRUE, }, @@ -10902,6 +11340,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_CLANGING_SCALES] = @@ -10916,6 +11355,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -10962,6 +11402,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SHELL_TRAP] = @@ -10982,6 +11424,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_FLEUR_CANNON] = @@ -11088,7 +11531,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .instructBanned = TRUE, }, [MOVE_SPECTRAL_THIEF] = @@ -11103,6 +11545,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = TRUE, .makesContact = TRUE, .metronomeBanned = TRUE, }, @@ -11183,7 +11626,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .makesContact = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_8, }, @@ -11328,6 +11770,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .metronomeBanned = TRUE, }, [MOVE_BOUNCY_BUBBLE] = @@ -11350,6 +11793,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_BUZZY_BUZZ] = @@ -11554,10 +11998,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .mimicBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, + .parentalBondBanned = TRUE, }, [MOVE_SNIPE_SHOT] = @@ -11604,6 +12053,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_NO_RETREAT] = @@ -11619,6 +12070,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TAR_SHOT] = @@ -11666,6 +12119,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .strikeCount = 2, + .parentalBondBanned = TRUE, }, [MOVE_TEATIME] = @@ -11676,11 +12130,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .accuracy = 0, .pp = 10, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_OCTOLOCK] = @@ -11740,6 +12196,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, }, [MOVE_CLANGOROUS_SOUL] = @@ -11755,7 +12212,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .soundMove = TRUE, + .danceMove = TRUE, .metronomeBanned = TRUE, }, @@ -11777,7 +12237,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_DECORATE] = { - .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_5, .effect = EFFECT_DECORATE, .power = 0, .type = TYPE_FAIRY, @@ -11788,6 +12247,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -11857,6 +12318,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .slicingMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .mimicBanned = TRUE, + .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_BEHEMOTH_BASH] = @@ -11874,6 +12337,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .makesContact = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .mimicBanned = TRUE, + .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_AURA_WHEEL] = @@ -11937,6 +12402,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .metronomeBanned = TRUE, }, @@ -12013,11 +12479,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .accuracy = 0, .pp = 10, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .metronomeBanned = TRUE, }, @@ -12034,8 +12504,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, - .copycatBanned = TRUE, .instructBanned = TRUE, }, @@ -12084,7 +12555,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .metronomeBanned = TRUE, - .instructBanned = TRUE, }, [MOVE_STEEL_BEAM] = @@ -12159,6 +12629,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .instructBanned = TRUE, }, @@ -12194,7 +12665,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_GRASSY_GLIDE] = { #if B_UPDATED_MOVE_DATA >= GEN_9 - .power = 60, + .power = 55, #else .power = 70, #endif @@ -12326,6 +12797,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_FLIP_TURN] = @@ -12403,6 +12877,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .metronomeBanned = TRUE, }, @@ -12575,6 +13053,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_DIRE_CLAW] = @@ -12625,8 +13104,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, - }, +}, [MOVE_STONE_AXE] = { @@ -12664,6 +13146,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, .windMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_MYSTICAL_POWER] = @@ -12697,7 +13180,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, - .makesContact = TRUE, .metronomeBanned = TRUE, }, @@ -12767,6 +13249,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .danceMove = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEADLONG_RUSH] = @@ -12861,6 +13345,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TRIPLE_ARROWS] = @@ -12993,6 +13479,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, }, [MOVE_TAKE_HEART] = @@ -13008,6 +13497,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TERA_BLAST] = @@ -13022,6 +13513,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, // Only since it isn't implemented yet + .forcePressure = TRUE, }, [MOVE_SILK_TRAP] = @@ -13037,6 +13530,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13068,6 +13563,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, // Only since it isn't implemented yet }, [MOVE_LUMINA_CRASH] = @@ -13098,6 +13594,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13196,6 +13693,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = TRUE, // Only since it isn't implemented yet }, [MOVE_REVIVAL_BLESSING] = @@ -13210,6 +13709,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13258,6 +13759,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .makesContact = TRUE, }, [MOVE_DOODLE] = @@ -13268,10 +13770,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .accuracy = 100, .pp = 10, .secondaryEffectChance = 0, - .target = MOVE_TARGET_FOES_AND_ALLY, // Supposedly unconfirmed? - .priority = 0, // TO VERIFY + .target = MOVE_TARGET_BOTH, + .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13288,6 +13792,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13335,6 +13841,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_AQUA_STEP] = @@ -13363,7 +13870,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, - .priority = 0, // TO VERIFY + .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, @@ -13444,6 +13951,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13459,6 +13968,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13474,6 +13985,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13489,6 +14002,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13552,6 +14067,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .ignoresProtect = TRUE, .metronomeBanned = TRUE, }, @@ -13617,6 +14133,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .slicingMove = TRUE, + .healBlockBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_DOUBLE_SHOCK] = @@ -13631,12 +14148,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, .metronomeBanned = TRUE, }, [MOVE_GIGATON_HAMMER] = { - .effect = EFFECT_GIGATON_HAMMER, + .effect = EFFECT_HIT, .power = 160, .type = TYPE_STEEL, .accuracy = 100, @@ -13646,6 +14164,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .cantUseTwice = TRUE, }, [MOVE_COMEUPPANCE] = @@ -13660,6 +14179,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .meFirstBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13692,11 +14213,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_WICKED_TORQUE] = @@ -13712,11 +14237,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_NOXIOUS_TORQUE] = @@ -13732,11 +14261,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_COMBAT_TORQUE] = @@ -13752,11 +14285,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_MAGICAL_TORQUE] = @@ -13772,11 +14309,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PSYBLADE] = @@ -13807,11 +14348,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .thawsUser = TRUE, }, [MOVE_BLOOD_MOON] = { - .effect = EFFECT_GIGATON_HAMMER, + .effect = EFFECT_HIT, .power = 140, .type = TYPE_NORMAL, .accuracy = 100, @@ -13821,6 +14363,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .cantUseTwice = TRUE, }, [MOVE_MATCHA_GOTCHA] = @@ -13837,6 +14380,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .thawsUser = TRUE, .metronomeBanned = TRUE, + .healBlockBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_SYRUP_BOMB] = @@ -14265,6 +14809,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = 0, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_GUARDIAN_OF_ALOLA] = { diff --git a/test/battle/ability/pressure.c b/test/battle/ability/pressure.c new file mode 100644 index 0000000000..db92d198b7 --- /dev/null +++ b/test/battle/ability/pressure.c @@ -0,0 +1,70 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Pressure causes opponent's moves to use up 1 additional PP") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_POUND, 35}); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(player, MOVE_POUND); } + } THEN { + EXPECT_EQ(player->pp[0], 33); + } +} + +DOUBLE_BATTLE_TEST("Pressure's effect stacks with multiple Pokémon") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_SWIFT, 20}); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + OPPONENT(SPECIES_WYNAUT) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_SWIFT); } + } THEN { + EXPECT_EQ(playerLeft->pp[0], 17); + } +} + +SINGLE_BATTLE_TEST("Pressure's effect applies to Imprison and Snatch") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_IMPRISON, 10}, {MOVE_SNATCH, 10}); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(player, MOVE_IMPRISON); } + TURN { MOVE(player, MOVE_SNATCH); } + } THEN { + EXPECT_EQ(player->pp[0], 8); + EXPECT_EQ(player->pp[1], 8); + } +} + +SINGLE_BATTLE_TEST("Pressure's effect applies to Spikes, Stealth Rock and Toxic Spikes") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_SPIKES, 20}, {MOVE_STEALTH_ROCK, 20}, {MOVE_TOXIC_SPIKES, 20}); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(player, MOVE_SPIKES); } + TURN { MOVE(player, MOVE_STEALTH_ROCK); } + TURN { MOVE(player, MOVE_TOXIC_SPIKES); } + } THEN { + EXPECT_EQ(player->pp[0], 18); + EXPECT_EQ(player->pp[1], 18); + EXPECT_EQ(player->pp[2], 18); + } +} + +SINGLE_BATTLE_TEST("Pressure's effect doesn't apply to Sticky Web") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_STICKY_WEB, 20}); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(player, MOVE_STICKY_WEB); } + } THEN { + EXPECT_EQ(player->pp[0], 19); + } +} diff --git a/test/battle/move_effect/gigaton_hammer.c b/test/battle/move_effect/gigaton_hammer.c deleted file mode 100644 index aaff50f752..0000000000 --- a/test/battle/move_effect/gigaton_hammer.c +++ /dev/null @@ -1,63 +0,0 @@ -#include "global.h" -#include "test/battle.h" - -ASSUMPTIONS -{ - ASSUME(gBattleMoves[MOVE_GIGATON_HAMMER].effect == EFFECT_GIGATON_HAMMER); -} - -SINGLE_BATTLE_TEST("Struggle will be used if slow Encore is used on Gigaton Hammer") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(player, MOVE_GIGATON_HAMMER); MOVE(opponent, MOVE_ENCORE); } - TURN { FORCED_MOVE(player); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); - } -} - -SINGLE_BATTLE_TEST("Gigaton Hammer strikes again if fast encore is used") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(player, MOVE_GIGATON_HAMMER); } - TURN { MOVE(opponent, MOVE_ENCORE); FORCED_MOVE(player); } - TURN { FORCED_MOVE(player); } - TURN { FORCED_MOVE(player); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); - } -} - -SINGLE_BATTLE_TEST("Gigaton Hammer alternates with Struggle if it is the only usable move left") -{ - GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_GIGATON_HAMMER, MOVE_NONE, MOVE_NONE, MOVE_NONE); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(player, MOVE_GIGATON_HAMMER); } - TURN { FORCED_MOVE(player); } - TURN { MOVE(player, MOVE_GIGATON_HAMMER); } - TURN { FORCED_MOVE(player); } - TURN { MOVE(player, MOVE_GIGATON_HAMMER); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - } -} diff --git a/test/battle/move_flags/cant_use_twice.c b/test/battle/move_flags/cant_use_twice.c new file mode 100644 index 0000000000..3135e00169 --- /dev/null +++ b/test/battle/move_flags/cant_use_twice.c @@ -0,0 +1,93 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_GIGATON_HAMMER].cantUseTwice == TRUE); + ASSUME(gBattleMoves[MOVE_BLOOD_MOON].cantUseTwice == TRUE); +} + +SINGLE_BATTLE_TEST("Struggle will be used if slow Encore is used on moves with the cantUseTwice flag") +{ + u32 move; + PARAMETRIZE { move = MOVE_GIGATON_HAMMER; } + PARAMETRIZE { move = MOVE_BLOOD_MOON; } + GIVEN { + ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); MOVE(opponent, MOVE_ENCORE); } + TURN { FORCED_MOVE(player); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); + } +} + +SINGLE_BATTLE_TEST("Moves with the cantUseTwice flag strike again if fast encore is used") +{ + u32 move; + PARAMETRIZE { move = MOVE_GIGATON_HAMMER; } + PARAMETRIZE { move = MOVE_BLOOD_MOON; } + GIVEN { + ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(opponent, MOVE_ENCORE); FORCED_MOVE(player); } + TURN { FORCED_MOVE(player); } + TURN { FORCED_MOVE(player); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); + } +} + +SINGLE_BATTLE_TEST("Moves with the cantUseTwice flag alternate with Struggle if it is the only usable move left") +{ + u32 move; + PARAMETRIZE { move = MOVE_GIGATON_HAMMER; } + PARAMETRIZE { move = MOVE_BLOOD_MOON; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Moves(move, MOVE_NONE, MOVE_NONE, MOVE_NONE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + TURN { FORCED_MOVE(player); } + TURN { MOVE(player, move); } + TURN { FORCED_MOVE(player); } + TURN { MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); + ANIMATION(ANIM_TYPE_MOVE, move, player); + } +} + +SINGLE_BATTLE_TEST("Moves with the cantUseTwice flag can alternate between each other") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_GIGATON_HAMMER, MOVE_BLOOD_MOON, MOVE_NONE, MOVE_NONE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_GIGATON_HAMMER); } + TURN { MOVE(player, MOVE_BLOOD_MOON); } + TURN { MOVE(player, MOVE_GIGATON_HAMMER); } + TURN { MOVE(player, MOVE_BLOOD_MOON); } + TURN { MOVE(player, MOVE_GIGATON_HAMMER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BLOOD_MOON, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BLOOD_MOON, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); + } +}