diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 6eedabb64e..c46668c5ca 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -2581,7 +2581,9 @@ BattleScript_MaxHp50Recoil:: BattleScript_EffectDreamEater:: attackcanceler +.if B_DREAM_EATER_SUBSTITUTE < GEN_5 jumpifsubstituteblocks BattleScript_DoesntAffectTargetAtkString +.endif jumpifstatus BS_TARGET, STATUS1_SLEEP, BattleScript_HitFromAccCheck jumpifability BS_TARGET, ABILITY_COMATOSE, BattleScript_HitFromAccCheck goto BattleScript_DoesntAffectTargetAtkString diff --git a/include/config/battle.h b/include/config/battle.h index c446ed99be..dd72cdbf1b 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -133,6 +133,7 @@ #define B_TIME_OF_DAY_HEALING_MOVES GEN_LATEST // In Gen2, Morning Sun, Moonlight, and Synthesis heal twice as much HP based off the time of day. Also changes how much they heal. Evening affects Moonlight. // If OW_TIMES_OF_DAY is set to Gen 3, then Morning Sun is boosted during the day. #define B_DREAM_EATER_LIQUID_OOZE GEN_LATEST // In Gen5+, Dream Eater is affected by Liquid Ooze. +#define B_DREAM_EATER_SUBSTITUTE GEN_LATEST // In Gen5+, Dream Eater can successfully hit and drain from a Substitute. // Ability settings #define B_GALE_WINGS GEN_LATEST // In Gen7+ requires full HP to trigger. diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 2b391159cd..d6301f8be7 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5906,8 +5906,12 @@ static bool32 HandleMoveEndMoveBlock(u32 moveEffect) recoil = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; else if (B_RECOIL_IF_MISS_DMG == GEN_4 && (GetNonDynamaxMaxHP(gBattlerTarget) / 2) < gBattleStruct->moveDamage[gBattlerTarget]) recoil = GetNonDynamaxMaxHP(gBattlerTarget) / 2; - else // Fallback if B_RECOIL_IF_MISS_DMG is set to gen3 or lower. + else if (B_RECOIL_IF_MISS_DMG == GEN_3) recoil = GetNonDynamaxMaxHP(gBattlerTarget) / 2; + else if (B_RECOIL_IF_MISS_DMG == GEN_2) + recoil = GetNonDynamaxMaxHP(gBattlerTarget) / 8; + else + recoil = 1; SetPassiveDamageAmount(gBattlerAttacker, recoil); BattleScriptCall(BattleScript_RecoilIfMiss); effect = TRUE; diff --git a/src/battle_util.c b/src/battle_util.c index 4a63e2b27f..3b8bd261b7 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8065,8 +8065,13 @@ static inline s32 CalculateBaseDamage(u32 power, u32 userFinalAttack, u32 level, static inline uq4_12_t GetTargetDamageModifier(struct DamageContext *ctx) { - if (IsDoubleBattle() && GetMoveTargetCount(ctx) >= 2) - return B_MULTIPLE_TARGETS_DMG >= GEN_4 ? UQ_4_12(0.75) : UQ_4_12(0.5); + if (IsDoubleBattle()) + { + if (GetMoveTargetCount(ctx) == 2) + return B_MULTIPLE_TARGETS_DMG >= GEN_4 ? UQ_4_12(0.75) : UQ_4_12(0.5); + else if (GetMoveTargetCount(ctx) >= 3) + return B_MULTIPLE_TARGETS_DMG >= GEN_4 ? UQ_4_12(0.75) : UQ_4_12(1.0); + } return UQ_4_12(1.0); } diff --git a/src/data/moves_info.h b/src/data/moves_info.h index a4f0dc06bc..ff297c0605 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -171,9 +171,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = "high critical-hit ratio."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_FIGHTING, + .type = B_UPDATED_MOVE_TYPES >= GEN_2 ? TYPE_FIGHTING : TYPE_NORMAL, .accuracy = 100, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 25, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -439,14 +439,26 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = [MOVE_RAZOR_WIND] = { .name = COMPOUND_STRING("Razor Wind"), - .description = COMPOUND_STRING( - "A 2-turn move with a high\n" - "critical-hit ratio."), + #if B_UPDATED_MOVE_DATA == GEN_3 + .description = COMPOUND_STRING( + "A 2-turn move that strikes\n" + "the foe on the 2nd turn."); + #else + .description = COMPOUND_STRING( + "A 2-turn move with a high\n" + "critical-hit ratio."), + #endif .effect = EFFECT_TWO_TURNS_ATTACK, .power = 80, .type = TYPE_NORMAL, - .accuracy = 100, - .criticalHitStage = 1, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_3 ? 100 : 75, + #if B_UPDATED_MOVE_DATA >= GEN_4 + .criticalHitStage = 1, + #elif B_UPDATED_MOVE_DATA == GEN_3 + .criticalHitStage = 0, + #else + .criticalHitStage = 2, + #endif .pp = 10, .target = MOVE_TARGET_BOTH, .priority = 0, @@ -518,14 +530,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = "of wind whipped up by wings."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_FLYING, + .type = B_UPDATED_MOVE_TYPES >= GEN_2 ? TYPE_FLYING : TYPE_NORMAL, .accuracy = 100, .pp = 35, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_4) || (B_UPDATED_MOVE_FLAGS < GEN_3), - .damagesAirborneDoubleDamage = TRUE, + .damagesAirborneDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_2, .windMove = TRUE, .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_STARTLE_PREV_MON : CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, @@ -541,7 +553,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = "Strikes the foe with wings\n" "spread wide."), .effect = EFFECT_HIT, - .power = 60, + .power = B_UPDATED_MOVE_DATA >= GEN_2 ? 60 : 35, .type = TYPE_FLYING, .accuracy = 100, .pp = 35, @@ -565,18 +577,29 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_ROAR, .power = 0, .type = TYPE_NORMAL, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 0 : 100, + #if B_UPDATED_MOVE_DATA >= GEN_6 + .accuracy = 0, + .priority = -6, + #elif B_UPDATED_MOVE_DATA >= GEN_3 + .accuracy = 100, + .priority = -6, + #elif B_UPDATED_MOVE_DATA == GEN_2 + .accuracy = 100, + .priority = -1, + #else + .accuracy = 85, + .priority = 0, + #endif .pp = 20, .target = MOVE_TARGET_SELECTED, - .priority = -6, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = 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, + .copycatBanned = B_UPDATED_MOVE_FLAGS >= GEN_6, + .assistBanned = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_NEXT_APPEAL_LATER : CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -603,7 +626,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .gravityBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, + .assistBanned = B_UPDATED_MOVE_FLAGS >= GEN_6, .argument.twoTurnAttack = { .stringId = STRINGID_PKMNFLEWHIGH, .status = STATE_ON_AIR }, .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_AVOID_STARTLE_ONCE : CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -708,7 +731,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .minimizeDoubleDamage = TRUE, + .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_2, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -777,7 +800,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = "miss and hurt the kicker."), #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 100, - #elif B_UPDATED_MOVE_DATA >= GEN_4 + #elif B_UPDATED_MOVE_DATA == GEN_4 .power = 85, #else .power = 70, @@ -835,7 +858,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = "by hurling sand in its face."), .effect = EFFECT_ACCURACY_DOWN, .power = 0, - .type = TYPE_GROUND, + .type = B_UPDATED_MOVE_TYPES >= GEN_2 ? TYPE_GROUND : TYPE_NORMAL, .accuracy = 100, .pp = 15, .target = MOVE_TARGET_SELECTED, @@ -1017,6 +1040,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_WRAP, .multistring.wrapped = B_MSG_WRAPPED_WRAP, @@ -1088,14 +1112,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = "A life-risking tackle that\n" "also hurts the user."), .effect = EFFECT_RECOIL, - .power = 120, + .power = B_UPDATED_MOVE_DATA >= GEN_2 ? 120 : 100, .type = TYPE_NORMAL, .accuracy = 100, .pp = 15, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = { .recoilPercentage = 33 }, + .argument = { .recoilPercentage = B_UPDATED_MOVE_DATA >= GEN_3 ? 33 : 25 }, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -1144,7 +1168,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_PHYSICAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, - .chance = 30, + .chance = B_UPDATED_MOVE_DATA >= GEN_2 ? 30 : 20, }), .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_SMART, @@ -1233,7 +1257,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = "May cause flinching."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_DARK, + .type = B_UPDATED_MOVE_TYPES >= GEN_2 ? TYPE_DARK : TYPE_NORMAL, .accuracy = 100, .pp = 25, .target = MOVE_TARGET_SELECTED, @@ -1243,7 +1267,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, - .chance = 30, + .chance = B_UPDATED_MOVE_DATA >= GEN_2 ? 30 : 10, }), .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_STARTLE_PREV_MON : CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -1290,15 +1314,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 0 : 100, .pp = 20, .target = MOVE_TARGET_SELECTED, - .priority = -6, + #if B_UPDATED_MOVE_DATA >= GEN_3 + .priority = -6, + #elif B_UPDATED_MOVE_DATA == GEN_2 + .priority = -1, + #else + .priority = 0, + #endif .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = 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, + .copycatBanned = B_UPDATED_MOVE_FLAGS >= GEN_6, + .assistBanned = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_NEXT_APPEAL_LATER : CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -1440,7 +1470,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = B_UPDATED_MOVE_DATA >= GEN_4 ? MOVE_EFFECT_SP_DEF_MINUS_1 : MOVE_EFFECT_DEF_MINUS_1, - .chance = 10, + .chance = B_UPDATED_MOVE_DATA >= GEN_2 ? 10 : 33, }), .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS : CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_SMART, @@ -1642,7 +1672,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, .type = TYPE_ICE, - .accuracy = 70, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_2 ? 70 : 90, .pp = 5, .target = MOVE_TARGET_BOTH, .priority = 0, @@ -1703,7 +1733,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, - .chance = 10, + .chance = B_UPDATED_MOVE_DATA >= GEN_2 ? 10 : 33, }), .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_STARTLE_PREV_MON : CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -1728,7 +1758,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, - .chance = 10, + .chance = B_UPDATED_MOVE_DATA >= GEN_2 ? 10 : 33, }), .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_STARTLE_PREV_MON : CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -1834,13 +1864,24 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = [MOVE_LOW_KICK] = { .name = COMPOUND_STRING("Low Kick"), - .description = COMPOUND_STRING( - "A kick that inflicts more\n" - "damage on heavier foes."), - .effect = EFFECT_LOW_KICK, - .power = 1, + #if B_UPDATED_MOVE_DATA >= GEN_3 + .description = COMPOUND_STRING( + "A kick that inflicts more\n" + "damage on heavier foes."), + .effect = EFFECT_LOW_KICK, + #else + .description = COMPOUND_STRING( + "A low, tripping kick that\n" + "may cause flinching."), + .effect = EFFECT_HIT, + .additionalEffects = ADDITIONAL_EFFECTS({ + .moveEffect = MOVE_EFFECT_FLINCH, + .chance = 30, + }), + #endif + .power = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 50, .type = TYPE_FIGHTING, - .accuracy = 100, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_3 ? 100 : 90, .pp = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -1869,11 +1910,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = -5, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .ignoresProtect = B_UPDATED_MOVE_FLAGS < GEN_5, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .meFirstBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_2, .copycatBanned = TRUE, .assistBanned = TRUE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_BETTER_IF_LAST : CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -2041,7 +2084,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = 55, .type = TYPE_GRASS, .accuracy = 95, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 25, .target = MOVE_TARGET_BOTH, .priority = 0, @@ -2357,12 +2400,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .damagesAirborne = TRUE, + .damagesAirborne = B_UPDATED_MOVE_FLAGS >= GEN_2, .alwaysHitsInRain = TRUE, .accuracy50InSun = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, - .chance = 30, + .chance = B_UPDATED_MOVE_DATA >= GEN_2 ? 30 : 10, }), .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED : CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -2381,7 +2424,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_HIT, .power = 50, .type = TYPE_ROCK, - .accuracy = 90, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_2 ? 90 : 65, .pp = 15, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -2408,7 +2451,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, - .damagesUnderground = TRUE, + .damagesUnderground = B_UPDATED_MOVE_FLAGS >= GEN_2, .skyBattleBanned = TRUE, .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS : CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -2449,7 +2492,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = "Digs underground the first\n" "turn and strikes next turn."), .effect = EFFECT_SEMI_INVULNERABLE, - .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 80 : 60, + #if B_UPDATED_MOVE_DATA >= GEN_4 + .power = 80, + #elif B_UPDATED_MOVE_DATA >= GEN_2 + .power = 60, + #else + .power = 100, + #endif .type = TYPE_GROUND, .accuracy = 100, .pp = 10, @@ -2459,7 +2508,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, + .assistBanned = B_UPDATED_MOVE_FLAGS >= GEN_6, .skyBattleBanned = TRUE, .argument.twoTurnAttack = { .stringId = STRINGID_PKMNDUGHOLE, .status = STATE_UNDERGROUND }, .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_AVOID_STARTLE_ONCE : CONTEST_EFFECT_AVOID_STARTLE, @@ -2536,7 +2585,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, - .chance = 10, + .chance = B_UPDATED_MOVE_DATA >= GEN_2 ? 10 : 33, }), .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_HIGHLY_APPEALING : CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -2686,7 +2735,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .accuracy = 0, .pp = 20, .target = MOVE_TARGET_USER, - .priority = -6, + .priority = B_UPDATED_MOVE_DATA >= GEN_8 ? -6 : 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, .ignoresProtect = TRUE, @@ -2729,7 +2778,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_MIMIC, .power = 0, .type = TYPE_NORMAL, - .accuracy = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_3 ? 0 : 100, .pp = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -3132,10 +3181,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_BIDE, .power = 1, .type = TYPE_NORMAL, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, + #if B_UPDATED_MOVE_DATA >= GEN_4 + .accuracy = 0, + .priority = 1, + #elif B_UPDATED_MOVE_DATA >= GEN_2 + .accuracy = 100, + .priority = 0, + #else + .accuracy = 0, + .priority = 0, + #endif .pp = 10, .target = MOVE_TARGET_USER, - .priority = B_UPDATED_MOVE_DATA >= GEN_4 ? 1 : 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .sleepTalkBanned = TRUE, @@ -3216,7 +3273,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = "Inflicts severe damage but\n" "makes the user faint."), .effect = EFFECT_EXPLOSION, - .power = 200, + .power = B_UPDATED_MOVE_DATA >= GEN_2 ? 200 : 130, .type = TYPE_NORMAL, .accuracy = 100, .pp = 5, @@ -3324,7 +3381,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, - .chance = 30, + .chance = B_UPDATED_MOVE_DATA >= GEN_2 ? 30 : 40, }), .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_STARTLE_PREV_MON : CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -3374,7 +3431,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, - .chance = 10, + .chance = B_UPDATED_MOVE_DATA >= GEN_2 ? 10 : 30, }), .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED : CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -3481,11 +3538,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .sleepTalkBanned = TRUE, .instructBanned = TRUE, .argument.twoTurnAttack = { .stringId = STRINGID_PKMNLOWEREDHEAD }, - .additionalEffects = ADDITIONAL_EFFECTS({ - .moveEffect = MOVE_EFFECT_DEF_PLUS_1, - .self = TRUE, - .onChargeTurnOnly = TRUE, - }), + #if B_UPDATED_MOVE_DATA >= GEN_2 + .additionalEffects = ADDITIONAL_EFFECTS({ + .moveEffect = MOVE_EFFECT_DEF_PLUS_1, + .self = TRUE, + .onChargeTurnOnly = TRUE, + }), + #endif .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL : CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -3532,7 +3591,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, - .chance = 10, + .chance = B_UPDATED_MOVE_DATA >= GEN_2 ? 10 : 33, }), .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS : CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -3582,7 +3641,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, - .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_4, .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_REPETITION_NOT_BORING : CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_KINESIS, @@ -3600,7 +3659,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_SOFTBOILED, .power = 0, .type = TYPE_NORMAL, - .accuracy = 100, + .accuracy = 0, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, .target = MOVE_TARGET_USER, .priority = 0, @@ -3694,7 +3753,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .healingMove = B_HEAL_BLOCKING >= GEN_6, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -3715,7 +3773,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = "gas that may poison."), #if B_UPDATED_MOVE_DATA >= GEN_6 .accuracy = 90, - #elif B_UPDATED_MOVE_DATA >= GEN_5 + #elif B_UPDATED_MOVE_DATA == GEN_5 .accuracy = 80, #else .accuracy = 55, @@ -3857,13 +3915,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, .ignoresProtect = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS < GEN_5, .mirrorMoveBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, - .copycatBanned = TRUE, + .copycatBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .instructBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, + .assistBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -3888,7 +3947,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, - .chance = 10, + .chance = B_UPDATED_MOVE_DATA >= GEN_2 ? 10 : 33, }), .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_HIGHLY_APPEALING : CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -3900,9 +3959,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = [MOVE_DIZZY_PUNCH] = { .name = COMPOUND_STRING("Dizzy Punch"), - .description = COMPOUND_STRING( - "A rhythmic punch that may\n" - "confuse the foe."), + #if B_UPDATED_MOVE_DATA >= GEN_2 + .description = COMPOUND_STRING( + "A rhythmic punch that may\n" + "confuse the target."), + #else + .description = COMPOUND_STRING( + "The target is hit with\n" + "rhythmic punches."), + #endif .effect = EFFECT_HIT, .power = 70, .type = TYPE_NORMAL, @@ -3913,10 +3978,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, - .additionalEffects = ADDITIONAL_EFFECTS({ - .moveEffect = MOVE_EFFECT_CONFUSION, - .chance = 20, - }), + #if B_UPDATED_MOVE_DATA >= GEN_2 + .additionalEffects = ADDITIONAL_EFFECTS({ + .moveEffect = MOVE_EFFECT_CONFUSION, + .chance = 20, + }), + #endif .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION : CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = C_UPDATED_MOVE_CATEGORIES >= GEN_6 ? CONTEST_CATEGORY_CUTE : CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -4058,7 +4125,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 90, .type = TYPE_WATER, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 85, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -4079,7 +4146,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = "Inflicts severe damage but\n" "makes the user faint."), .effect = EFFECT_EXPLOSION, - .power = 250, + .power = B_UPDATED_MOVE_DATA >= GEN_2 ? 250 : 170, .type = TYPE_NORMAL, .accuracy = 100, .pp = 5, @@ -4171,9 +4238,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = [MOVE_ROCK_SLIDE] = { .name = COMPOUND_STRING("Rock Slide"), - .description = COMPOUND_STRING( - "Large boulders are hurled.\n" - "May cause flinching."), + #if B_UPDATED_MOVE_DATA >= GEN_2 + .description = COMPOUND_STRING( + "Large boulders are hurled.\n" + "May cause flinching."), + #else + .description = COMPOUND_STRING( + "Hits the foe with an\n" + "avalanche of rocks."), + #endif .effect = EFFECT_HIT, .power = 75, .type = TYPE_ROCK, @@ -4182,10 +4255,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .additionalEffects = ADDITIONAL_EFFECTS({ - .moveEffect = MOVE_EFFECT_FLINCH, - .chance = 30, - }), + #if B_UPDATED_MOVE_DATA >= GEN_2 + .additionalEffects = ADDITIONAL_EFFECTS({ + .moveEffect = MOVE_EFFECT_FLINCH, + .chance = 30, + }), + #endif .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_STARTLE_PREV_MONS : CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -4281,12 +4356,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = [MOVE_TRI_ATTACK] = { .name = COMPOUND_STRING("Tri Attack"), - .description = COMPOUND_STRING( - "Fires three types of beams.\n" - #if B_USE_FROSTBITE == TRUE - "May burn/para/frostbite."), + #if B_UPDATED_MOVE_DATA >= GEN_2 + .description = COMPOUND_STRING( + "Fires three types of beams.\n" + #if B_USE_FROSTBITE == TRUE + "May burn/para/frostbite."), + #else + "May burn/paralyze/freeze."), + #endif #else - "May burn/paralyze/freeze."), + .description = COMPOUND_STRING( + "A triangular field of energy\n" + "is created and launched."); #endif .effect = EFFECT_HIT, .power = 80, @@ -4296,10 +4377,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .additionalEffects = ADDITIONAL_EFFECTS({ - .moveEffect = MOVE_EFFECT_TRI_ATTACK, - .chance = 20, - }), + #if B_UPDATED_MOVE_DATA >= GEN_2 + .additionalEffects = ADDITIONAL_EFFECTS({ + .moveEffect = MOVE_EFFECT_TRI_ATTACK, + .chance = 20, + }), + #endif .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING : CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -4343,7 +4426,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = 70, .type = TYPE_NORMAL, .accuracy = 100, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -4394,19 +4477,24 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = #if B_UPDATED_MOVE_DATA >= GEN_4 .effect = EFFECT_STRUGGLE, .accuracy = 0, - .mirrorMoveBanned = TRUE, + .pp = 1, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECOIL_HP_25, .self = TRUE, }), + #elif B_UPDATED_MOVE_DATA >= GEN_2 + .effect = EFFECT_RECOIL, + .accuracy = 100, + .pp = 1, + .argument = { .recoilPercentage = 25 }, #else .effect = EFFECT_RECOIL, .accuracy = 100, - .argument = { .recoilPercentage = 25 }, + .pp = 10, + .argument = { .recoilPercentage = 50 }, #endif .power = 50, .type = TYPE_NORMAL, - .pp = 1, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, @@ -4420,6 +4508,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .encoreBanned = TRUE, .assistBanned = TRUE, .sketchBanned = TRUE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .battleAnimScript = gBattleAnimMove_Struggle, .validApprenticeMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, @@ -4442,7 +4531,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, .ignoresProtect = TRUE, - .ignoresSubstitute = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_5, .mirrorMoveBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, @@ -4527,7 +4616,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, - .ignoresProtect = (B_UPDATED_MOVE_FLAGS >= GEN_6) || (B_UPDATED_MOVE_FLAGS <= GEN_3), + .ignoresProtect = (B_UPDATED_MOVE_FLAGS >= GEN_6) || (B_UPDATED_MOVE_FLAGS < GEN_3), .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -4575,7 +4664,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, - .ignoresProtect = B_UPDATED_MOVE_FLAGS <= GEN_3, + .ignoresProtect = B_UPDATED_MOVE_FLAGS < GEN_3, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -4656,7 +4745,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_CURSE }, .ignoresProtect = TRUE, - .ignoresSubstitute = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_5, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -4704,8 +4793,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, - .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_5, - .ignoresSubstitute = TRUE, + .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_3, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_5, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -4725,7 +4814,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = 100, .type = TYPE_FLYING, .accuracy = 95, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 5, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -4859,7 +4948,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .accuracy = 0, .pp = 10, .target = MOVE_TARGET_USER, - .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 4 : 3, + #if B_UPDATED_MOVE_DATA >= GEN_5 + .priority = 4, + #elif B_UPDATED_MOVE_DATA >= GEN_3 + .priority = 3, + #else + .priority = 2, + #endif .category = DAMAGE_CATEGORY_STATUS, .argument = { .protectMethod = PROTECT_NORMAL }, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -5200,7 +5295,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, .soundMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, //C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_QUICKLY_GROW_BORED : @@ -5248,7 +5343,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .accuracy = 0, .pp = 5, .target = MOVE_TARGET_USER, - .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 4 : 3, + #if B_UPDATED_MOVE_DATA >= GEN_5 + .priority = 4, + #elif B_UPDATED_MOVE_DATA >= GEN_3 + .priority = 3, + #else + .priority = 2, + #endif .category = DAMAGE_CATEGORY_STATUS, .argument = { .protectMethod = PROTECT_NORMAL }, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, @@ -5400,7 +5501,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .accuracy = 0, .pp = 10, .target = MOVE_TARGET_USER, - .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 4 : 3, + #if B_UPDATED_MOVE_DATA >= GEN_5 + .priority = 4, + #elif B_UPDATED_MOVE_DATA >= GEN_3 + .priority = 3, + #else + .priority = 2, + #endif .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, @@ -5501,6 +5608,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + //.ignoresSubstitute = TRUE, In Gen4+, the attack raise will no longer bypass Substitute. However, this is tricky to code .magicCoatAffected = TRUE, .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS : CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -5571,7 +5679,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = "on each successive hit."), #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 40, - #elif B_UPDATED_MOVE_DATA >= GEN_5 + #elif B_UPDATED_MOVE_DATA == GEN_5 .power = 20, #else .power = 10, @@ -5608,6 +5716,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_PLUS_1, .self = TRUE, @@ -5636,7 +5745,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, - .ignoresProtect = (B_UPDATED_MOVE_FLAGS >= GEN_6) || (B_UPDATED_MOVE_FLAGS <= GEN_3), + .ignoresProtect = (B_UPDATED_MOVE_FLAGS >= GEN_6) || (B_UPDATED_MOVE_FLAGS < GEN_3), .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -5835,7 +5944,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_PAIN_SPLIT, .power = 0, .type = TYPE_NORMAL, - .accuracy = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_3 ? 0 : 100, .pp = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -6313,7 +6422,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = 100, .type = TYPE_FIGHTING, .accuracy = 80, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 5, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -6341,6 +6450,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .damagesAirborneDoubleDamage = TRUE, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -6454,6 +6564,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_DEPENDS, .priority = -5, .category = DAMAGE_CATEGORY_SPECIAL, + .ignoresProtect = B_UPDATED_MOVE_FLAGS < GEN_5, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .meFirstBanned = TRUE, .metronomeBanned = TRUE, @@ -6579,7 +6690,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = "strike 2 turns later."), #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 120, - #elif B_UPDATED_MOVE_DATA >= GEN_5 + #elif B_UPDATED_MOVE_DATA == GEN_5 .power = 100, #else .power = 80, @@ -6642,6 +6753,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .damagesUnderwater = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_WRAP, @@ -6771,7 +6883,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = "Releases stockpiled power\n" "(the more the better)."), .effect = EFFECT_SPIT_UP, - .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 1 : 100, + .power = 1, .type = TYPE_NORMAL, .accuracy = 100, .pp = 10, @@ -6955,7 +7067,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_MEMENTO, .power = 0, .type = TYPE_DARK, - .accuracy = 100, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 100 : 0, .pp = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -7059,7 +7171,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_FOLLOW_ME, .power = 0, .type = TYPE_NORMAL, - .accuracy = 100, + .accuracy = 0, .pp = 20, .target = MOVE_TARGET_USER, .priority = B_UPDATED_MOVE_DATA >= GEN_6 ? 2 : 3, @@ -7092,12 +7204,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_DEPENDS, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, - .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, + .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, + .assistBanned = B_UPDATED_MOVE_FLAGS >= GEN_6, .mimicBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -7116,7 +7228,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_CHARGE, .power = 0, .type = TYPE_ELECTRIC, - .accuracy = 100, + .accuracy = 0, .pp = 20, .target = MOVE_TARGET_USER, .priority = 0, @@ -7150,6 +7262,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_4, .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION : CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_TAUNT, @@ -7167,7 +7280,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_HELPING_HAND, .power = 0, .type = TYPE_NORMAL, - .accuracy = 100, + .accuracy = 0, .pp = 20, .target = B_UPDATED_MOVE_DATA >= GEN_4 ? MOVE_TARGET_ALLY : MOVE_TARGET_USER, .priority = 5, @@ -7275,7 +7388,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_ASSIST, .power = 0, .type = TYPE_NORMAL, - .accuracy = 100, + .accuracy = 0, .pp = 20, .target = MOVE_TARGET_DEPENDS, .priority = 0, @@ -7306,7 +7419,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_INGRAIN, .power = 0, .type = TYPE_GRASS, - .accuracy = 100, + .accuracy = 0, .pp = 20, .target = MOVE_TARGET_USER, .priority = 0, @@ -7360,7 +7473,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_MAGIC_COAT, .power = 0, .type = TYPE_PSYCHIC, - .accuracy = 100, + .accuracy = 0, .pp = 15, .target = MOVE_TARGET_DEPENDS, .priority = 4, @@ -7385,7 +7498,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_RECYCLE, .power = 0, .type = TYPE_NORMAL, - .accuracy = 100, + .accuracy = 0, .pp = 10, .target = MOVE_TARGET_USER, .priority = 0, @@ -7573,7 +7686,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_IMPRISON, .power = 0, .type = TYPE_PSYCHIC, - .accuracy = 100, + .accuracy = 0, .pp = 10, .target = MOVE_TARGET_USER, .priority = 0, @@ -7601,7 +7714,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_REFRESH, .power = 0, .type = TYPE_NORMAL, - .accuracy = 100, + .accuracy = 0, .pp = 20, .target = MOVE_TARGET_USER, .priority = 0, @@ -7627,7 +7740,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_GRUDGE, .power = 0, .type = TYPE_GHOST, - .accuracy = 100, + .accuracy = 0, .pp = 5, .target = MOVE_TARGET_USER, .priority = 0, @@ -7653,7 +7766,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_SNATCH, .power = 0, .type = TYPE_DARK, - .accuracy = 100, + .accuracy = 0, .pp = 10, .target = MOVE_TARGET_DEPENDS, .priority = 4, @@ -7715,7 +7828,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, + .assistBanned = B_UPDATED_MOVE_FLAGS >= GEN_6, .skyBattleBanned = TRUE, .argument.twoTurnAttack = { .stringId = STRINGID_PKMNHIDUNDERWATER, .status = STATE_UNDERWATER }, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, @@ -7757,7 +7870,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_CAMOUFLAGE, .power = 0, .type = TYPE_NORMAL, - .accuracy = 100, + .accuracy = 0, .pp = 20, .target = MOVE_TARGET_USER, .priority = 0, @@ -7917,7 +8030,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = 85, .type = TYPE_FIRE, .accuracy = 90, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -7945,7 +8058,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_MUD_SPORT, .power = 0, .type = TYPE_GROUND, - .accuracy = 100, + .accuracy = 0, .pp = 15, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, @@ -8024,7 +8137,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_RESTORE_HP, .power = 0, .type = TYPE_NORMAL, - .accuracy = 100, + .accuracy = 0, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, .target = MOVE_TARGET_USER, .priority = 0, @@ -8270,6 +8383,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .zMove = { .effect = Z_EFFECT_RECOVER_HP }, .snatchAffected = TRUE, .ignoresProtect = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS < GEN_6, .mirrorMoveBanned = TRUE, .contestEffect = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? CONTEST_EFFECT_AVOID_STARTLE : CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_SMART, @@ -8313,7 +8427,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 55, .type = TYPE_FLYING, .accuracy = 95, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 25, .target = MOVE_TARGET_BOTH, .priority = 0, @@ -8502,6 +8616,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS < GEN_4, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -8844,7 +8959,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, - .ignoresProtect = (B_UPDATED_MOVE_FLAGS >= GEN_6) || (B_UPDATED_MOVE_FLAGS <= GEN_3), + .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -8975,7 +9090,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .gravityBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, + .assistBanned = B_UPDATED_MOVE_FLAGS >= GEN_6, .argument.twoTurnAttack = { .stringId = STRINGID_PKMNSPRANGUP, .status = STATE_ON_AIR }, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -9024,7 +9139,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = 50, .type = TYPE_POISON, .accuracy = 100, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 25, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -9137,7 +9252,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .effect = EFFECT_WATER_SPORT, .power = 0, .type = TYPE_WATER, - .accuracy = 100, + .accuracy = 0, .pp = 15, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, @@ -9190,7 +9305,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 90 : 70, .type = TYPE_GRASS, .accuracy = 100, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 15, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -9688,6 +9803,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_DEPENDS, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .ignoresProtect = B_UPDATED_MOVE_FLAGS < GEN_5, .meFirstBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = C_UPDATED_MOVE_CATEGORIES >= GEN_6 ? CONTEST_CATEGORY_COOL : CONTEST_CATEGORY_BEAUTY, @@ -10451,7 +10567,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = 70, .type = TYPE_DARK, .accuracy = 100, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 15, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -10948,7 +11064,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = 70, .type = TYPE_GHOST, .accuracy = 100, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 15, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -11116,7 +11232,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = 70, .type = TYPE_PSYCHIC, .accuracy = 100, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -11432,7 +11548,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = 70, .type = TYPE_POISON, .accuracy = 100, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -11533,7 +11649,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = 100, .type = TYPE_ROCK, .accuracy = 80, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 5, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -11644,7 +11760,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .moveEffect = MOVE_EFFECT_CONFUSION, #if B_UPDATED_MOVE_DATA >= GEN_6 .chance = 100, - #elif B_UPDATED_MOVE_DATA >= GEN_5 + #elif B_UPDATED_MOVE_DATA == GEN_5 .chance = 10, #else .chance = 31, @@ -11783,7 +11899,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = 90, .type = TYPE_BUG, .accuracy = 100, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 15, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -11927,7 +12043,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = 100, .type = TYPE_DRAGON, .accuracy = 95, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 5, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -12102,7 +12218,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, + .assistBanned = B_UPDATED_MOVE_FLAGS >= GEN_6, .argument.twoTurnAttack = { .stringId = STRINGID_VANISHEDINSTANTLY, .status = STATE_PHANTOM_FORCE }, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FEINT, @@ -13068,7 +13184,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .gravityBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, + .assistBanned = B_UPDATED_MOVE_FLAGS >= GEN_6, .argument.twoTurnAttack = { .stringId = STRINGID_PKMNTOOKTARGETHIGH, .status = STATE_ON_AIR }, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -13575,7 +13691,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = 80, .type = TYPE_GROUND, .accuracy = 95, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -14505,7 +14621,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_PHYSICAL, .ignoresProtect = TRUE, .makesContact = TRUE, - .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, + .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_7, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .assistBanned = TRUE, @@ -15815,6 +15931,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, + .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, //CONTEST_EFFECT_EXCITES_AUDIENCE_MORE_IF_LAST .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -16366,6 +16483,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, + .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_PSYCHIC_TERRAIN, @@ -17583,7 +17701,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = 80, .type = TYPE_WATER, .accuracy = 100, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 15, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -19439,7 +19557,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 80 : 75, .type = TYPE_PSYCHIC, .accuracy = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 90, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -19504,7 +19622,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .type = TYPE_FIGHTING, .accuracy = 100, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 15, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, @@ -20596,7 +20714,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .power = 70, .type = TYPE_WATER, .accuracy = 100, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .pp = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -20864,7 +20982,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .type = TYPE_GRASS, .accuracy = 100, .pp = 10, - .criticalHitStage = 1, + .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 2, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, @@ -21062,7 +21180,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .soundMove = TRUE, - .ignoresSubstitute = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, .onlyIfTargetRaisedStats = TRUE, @@ -21126,7 +21244,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .soundMove = TRUE, - .ignoresSubstitute = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PSYCHIC_NOISE, .chance = 100, @@ -21602,6 +21720,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .minimizeDoubleDamage = TRUE, .battleAnimScript = gBattleAnimMove_MaliciousMoonsault, }, [MOVE_OCEANIC_OPERETTA] = diff --git a/test/battle/move_effect/dream_eater.c b/test/battle/move_effect/dream_eater.c index baefd2e4ff..183a513b79 100644 --- a/test/battle/move_effect/dream_eater.c +++ b/test/battle/move_effect/dream_eater.c @@ -96,6 +96,7 @@ SINGLE_BATTLE_TEST("Dream Eater works if the target is behind a Substitute (Gen { s16 damage; s16 healed; + KNOWN_FAILING; GIVEN { ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); ASSUME(GetMoveEffect(MOVE_SUBSTITUTE) == EFFECT_SUBSTITUTE);