From e602a310c9614355cc2fb44272c28cc63460971b Mon Sep 17 00:00:00 2001 From: Nephrite Date: Mon, 29 Jan 2024 13:05:05 +0900 Subject: [PATCH 01/55] BattleMove adjustment Moved one or two flags to the effects array as well --- include/battle.h | 7 +++-- include/pokemon.h | 56 ++++++++++++++++------------------ src/battle_ai_main.c | 1 - src/battle_script_commands.c | 14 ++++----- src/data/battle_move_effects.h | 7 +++++ src/data/moves_info.h | 32 ------------------- 6 files changed, 46 insertions(+), 71 deletions(-) diff --git a/include/battle.h b/include/battle.h index 1563819c78..9e8327e9aa 100644 --- a/include/battle.h +++ b/include/battle.h @@ -54,10 +54,12 @@ struct __attribute__((packed, aligned(2))) BattleMoveEffect const u8 *battleScript; u16 battleTvScore:3; u16 encourageEncore:1; - u16 flags:12; // coming soon... + u16 twoTurnEffect:1; + u16 padding:11; }; -#define GET_MOVE_BATTLESCRIPT(move) gBattleMoveEffects[gMovesInfo[move].effect].battleScript +#define GET_MOVE_EFFECT(move) gBattleMoveEffects[gMovesInfo[move].effect] +#define GET_MOVE_BATTLESCRIPT(move) GET_MOVE_EFFECT(move).battleScript struct ResourceFlags { @@ -794,6 +796,7 @@ STATIC_ASSERT(sizeof(((struct BattleStruct *)0)->palaceFlags) * 8 >= MAX_BATTLER #define IS_MOVE_STATUS(move)(gMovesInfo[move].category == DAMAGE_CATEGORY_STATUS) #define IS_MOVE_RECOIL(move)(gMovesInfo[move].recoil > 0 || gMovesInfo[move].effect == EFFECT_RECOIL_IF_MISS) +#define MOVE_USES_PROTECT_COUNTER(move)(gMovesInfo[move].effect == EFFECT_ENDURE || gMovesInfo[move].effect == EFFECT_PROTECT) #define BATTLER_MAX_HP(battlerId)(gBattleMons[battlerId].hp == gBattleMons[battlerId].maxHP) #define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0) || (gBattleStruct->enduredDamage & gBitTable[gBattlerTarget])) diff --git a/include/pokemon.h b/include/pokemon.h index aeed6bacf9..895ec672c3 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -450,39 +450,50 @@ struct MoveInfo const u8 *description; u16 effect; u8 power; - u8 type:5; - u8 category:3; + u8 accuracy; - u16 accuracy:7; - u16 recoil:7; - u16 criticalHitStage:2; - u8 padding:6; // coming soon... - u8 numAdditionalEffects:2; // limited to 3 - don't want to get too crazy + u16 type:5; + u16 category:2; + u16 target:9; u8 pp; - - u16 target; - s8 priority; union { u8 effect; u8 powerOverride; } zMove; + s32 priority:4; + u32 recoil:7; + u32 strikeCount:4; // Max 15 hits. Defaults to 1 if not set. May apply its effect on each hit. + u32 criticalHitStage:2; + u32 alwaysCriticalHit:1; + u32 numAdditionalEffects:2; // limited to 3 - don't want to get too crazy + + // Ban flags + u32 gravityBanned:1; + u32 mirrorMoveBanned: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; + u32 skyBattleBanned:1; + u32 sketchBanned:1; + // Flags u32 makesContact:1; u32 ignoresProtect:1; u32 magicCoatAffected:1; u32 snatchAffected:1; - u32 mirrorMoveBanned:1; u32 ignoresKingsRock:1; - u32 alwaysCriticalHit:1; - u32 twoTurnMove:1; u32 punchingMove:1; - u32 sheerForceBoost:1; u32 bitingMove:1; u32 pulseMove:1; u32 soundMove:1; u32 ballisticMove:1; - u32 protectionMove:1; u32 powderMove:1; u32 danceMove:1; u32 windMove:1; @@ -497,24 +508,11 @@ struct MoveInfo u32 ignoreTypeIfFlyingAndUngrounded:1; 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 forcePressure:1; u32 cantUseTwice:1; - u32 gravityBanned:1; u32 healingMove: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; - u32 skyBattleBanned:1; - u32 sketchBanned:1; - u32 argument; // also coming soon + u32 argument; // primary/secondary effects const struct AdditionalEffect *additionalEffects; diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index ec8c96223c..e24d59f6ac 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -2492,7 +2492,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (instructedMove == MOVE_NONE || gMovesInfo[instructedMove].instructBanned - || gMovesInfo[instructedMove].twoTurnMove || MoveHasMoveEffectSelf(instructedMove, MOVE_EFFECT_RECHARGE) || IsZMove(instructedMove) || (gLockedMoves[battlerDef] != 0 && gLockedMoves[battlerDef] != 0xFFFF) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index a0cb1ce711..ee605b06de 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1368,7 +1368,7 @@ static void Cmd_attackcanceler(void) gHitMarker |= HITMARKER_OBEYS; // Check if no available target present on the field or if Sky Battles ban the move if ((NoTargetPresent(gBattlerAttacker, gCurrentMove) - && (!gMovesInfo[gCurrentMove].twoTurnMove || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) + && (!GET_MOVE_EFFECT(gCurrentMove).twoTurnEffect || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) || (IsMoveNotAllowedInSkyBattles(gCurrentMove))) { if (gMovesInfo[gCurrentMove].effect == EFFECT_FLING) // Edge case for removing a mon's item when there is no target available after using Fling. @@ -1376,7 +1376,7 @@ static void Cmd_attackcanceler(void) else gBattlescriptCurrInstr = BattleScript_FailedFromAtkString; - if (!gMovesInfo[gCurrentMove].twoTurnMove || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) + if (!GET_MOVE_EFFECT(gCurrentMove).twoTurnEffect || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) CancelMultiTurnMoves(gBattlerAttacker); return; } @@ -1455,7 +1455,7 @@ static void Cmd_attackcanceler(void) } else if (IsBattlerProtected(gBattlerTarget, gCurrentMove) && (gCurrentMove != MOVE_CURSE || IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST)) - && ((!gMovesInfo[gCurrentMove].twoTurnMove || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) + && ((!GET_MOVE_EFFECT(gCurrentMove).twoTurnEffect || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) && gMovesInfo[gCurrentMove].effect != EFFECT_SUCKER_PUNCH) { if (IsMoveMakingContact(gCurrentMove, gBattlerAttacker)) @@ -9633,7 +9633,7 @@ static void Cmd_various(void) VARIOUS_ARGS(const u8 *failInstr); u16 move = gLastPrintedMoves[gBattlerTarget]; if (move == MOVE_NONE || move == MOVE_UNAVAILABLE || MoveHasMoveEffectSelf(move, MOVE_EFFECT_RECHARGE) - || gMovesInfo[move].instructBanned || gMovesInfo[move].twoTurnMove || IsDynamaxed(gBattlerTarget)) + || gMovesInfo[move].instructBanned || GET_MOVE_EFFECT(move).twoTurnEffect || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -10713,7 +10713,7 @@ static void TryResetProtectUseCounter(u32 battler) { u32 lastMove = gLastResultingMoves[battler]; if (lastMove == MOVE_UNAVAILABLE - || (!gMovesInfo[lastMove].protectionMove && (B_ALLY_SWITCH_FAIL_CHANCE >= GEN_9 && gMovesInfo[lastMove].effect != EFFECT_ALLY_SWITCH))) + || (!MOVE_USES_PROTECT_COUNTER(lastMove) && (B_ALLY_SWITCH_FAIL_CHANCE >= GEN_9 && gMovesInfo[lastMove].effect != EFFECT_ALLY_SWITCH))) gDisableStructs[battler].protectUses = 0; } @@ -12681,7 +12681,7 @@ static void Cmd_settypetorandomresistance(void) { gBattlescriptCurrInstr = cmd->failInstr; } - else if (gMovesInfo[gLastLandedMoves[gBattlerAttacker]].twoTurnMove + else if (GET_MOVE_EFFECT(gLastLandedMoves[gBattlerAttacker]).twoTurnEffect && gBattleMons[gLastHitBy[gBattlerAttacker]].status2 & STATUS2_MULTIPLETURNS) { gBattlescriptCurrInstr = cmd->failInstr; @@ -12797,7 +12797,7 @@ static void Cmd_trychoosesleeptalkmove(void) for (i = 0; i < MAX_MON_MOVES; i++) { if (gMovesInfo[gBattleMons[gBattlerAttacker].moves[i]].sleepTalkBanned - || gMovesInfo[gBattleMons[gBattlerAttacker].moves[i]].twoTurnMove) + || GET_MOVE_EFFECT(gBattleMons[gBattlerAttacker].moves[i]).twoTurnEffect) { unusableMovesBits |= gBitTable[i]; } diff --git a/src/data/battle_move_effects.h b/src/data/battle_move_effects.h index b739c007a7..3ac6ebe9c7 100644 --- a/src/data/battle_move_effects.h +++ b/src/data/battle_move_effects.h @@ -384,6 +384,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = { .battleScript = BattleScript_EffectTwoTurnsAttack, .battleTvScore = 0, // TODO: Assign points + .twoTurnEffect = TRUE, }, [EFFECT_SUBSTITUTE] = @@ -752,6 +753,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = { .battleScript = BattleScript_EffectSkullBash, .battleTvScore = 3, + .twoTurnEffect = TRUE, }, [EFFECT_EARTHQUAKE] = @@ -777,6 +779,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = { .battleScript = BattleScript_EffectSolarBeam, .battleTvScore = 1, + .twoTurnEffect = TRUE, }, [EFFECT_THUNDER] = @@ -801,6 +804,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = { .battleScript = BattleScript_EffectSemiInvulnerable, .battleTvScore = 3, + .twoTurnEffect = TRUE, }, [EFFECT_DEFENSE_CURL] = @@ -1814,6 +1818,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = { .battleScript = BattleScript_EffectGeomancy, .battleTvScore = 0, // TODO: Assign points + .twoTurnEffect = TRUE, }, [EFFECT_FAIRY_LOCK] = @@ -2016,6 +2021,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = { .battleScript = BattleScript_EffectSkyDrop, .battleTvScore = 0, // TODO: Assign points + .twoTurnEffect = TRUE, }, [EFFECT_EXPANDING_FORCE] = @@ -2028,6 +2034,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = { .battleScript = BattleScript_EffectMeteorBeam, .battleTvScore = 0, // TODO: Assign points + .twoTurnEffect = TRUE, }, [EFFECT_RISING_VOLTAGE] = diff --git a/src/data/moves_info.h b/src/data/moves_info.h index 3aec5e12e7..1e375033da 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -424,7 +424,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .twoTurnMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .windMove = B_EXTRAPOLATED_MOVE_FLAGS, @@ -564,7 +563,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .twoTurnMove = TRUE, .makesContact = TRUE, .gravityBanned = TRUE, .sleepTalkBanned = TRUE, @@ -1930,7 +1928,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .twoTurnMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, @@ -2286,7 +2283,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .twoTurnMove = TRUE, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -3229,7 +3225,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .twoTurnMove = TRUE, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -3542,7 +3537,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 0, - .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -4496,7 +4490,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 4 : 3, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .protectionMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, @@ -4862,7 +4855,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, - .protectionMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, @@ -5002,7 +4994,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, - .protectionMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, @@ -7134,7 +7125,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .twoTurnMove = TRUE, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -8305,7 +8295,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .twoTurnMove = TRUE, .makesContact = TRUE, .sheerForceBoost = TRUE, .gravityBanned = TRUE, @@ -9567,7 +9556,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = STATUS1_BURN, .makesContact = TRUE, .sheerForceBoost = TRUE, .thawsUser = TRUE, @@ -10222,7 +10210,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = STATUS1_PARALYSIS, .makesContact = TRUE, .sheerForceBoost = TRUE, .bitingMove = TRUE, @@ -10285,7 +10272,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = STATUS1_BURN, .makesContact = TRUE, .sheerForceBoost = TRUE, .bitingMove = TRUE, @@ -11313,7 +11299,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .twoTurnMove = TRUE, .ignoresProtect = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, .sleepTalkBanned = TRUE, @@ -11371,7 +11356,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .snatchAffected = TRUE, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, - .protectionMove = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -12105,7 +12089,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .snatchAffected = TRUE, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, - .protectionMove = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -12246,7 +12229,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .twoTurnMove = TRUE, .makesContact = TRUE, .gravityBanned = TRUE, .sleepTalkBanned = TRUE, @@ -13313,7 +13295,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, @@ -13342,7 +13323,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, @@ -13641,7 +13621,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .twoTurnMove = TRUE, .ignoresProtect = TRUE, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, @@ -14155,7 +14134,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 4, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .protectionMove = TRUE, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -14353,7 +14331,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 4, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, - .protectionMove = TRUE, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -14471,7 +14448,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, - .twoTurnMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .skyBattleBanned = TRUE, @@ -15017,7 +14993,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 4, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, - .protectionMove = TRUE, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -15213,7 +15188,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .twoTurnMove = TRUE, .makesContact = TRUE, .slicingMove = TRUE, .sleepTalkBanned = TRUE, @@ -17283,7 +17257,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_USER, .priority = 4, .category = DAMAGE_CATEGORY_STATUS, - .protectionMove = TRUE, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -17466,7 +17439,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .twoTurnMove = TRUE, .instructBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_PLUS_1, @@ -18609,7 +18581,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, // Only since it isn't implemented yet - .forcePressure = TRUE, }, [MOVE_SILK_TRAP] = @@ -18626,7 +18597,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_USER, .priority = 4, .category = DAMAGE_CATEGORY_STATUS, - .protectionMove = TRUE, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -19781,7 +19751,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 4, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .protectionMove = TRUE, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -20471,7 +20440,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_USER, .priority = 4, .category = DAMAGE_CATEGORY_STATUS, - .protectionMove = TRUE, }, [MOVE_MAX_FLARE] = From 02ffd05aeaa0d89eadcb069ab4b851cf664c9ce6 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Tue, 30 Jan 2024 13:27:46 +0900 Subject: [PATCH 02/55] Removed Sheer Force flag --- include/battle_util.h | 1 + include/pokemon.h | 3 + src/battle_dome.c | 2 +- src/battle_script_commands.c | 8 +- src/battle_util.c | 19 ++- src/data/moves_info.h | 198 +----------------------------- test/battle/ability/sheer_force.c | 8 +- test/battle/move_effect/recoil.c | 2 +- 8 files changed, 34 insertions(+), 207 deletions(-) diff --git a/include/battle_util.h b/include/battle_util.h index e9b0c6f472..e75e534ac6 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -200,6 +200,7 @@ bool32 IsHealBlockPreventingMove(u32 battler, u32 move); bool32 HasEnoughHpToEatBerry(u32 battler, u32 hpFraction, u32 itemId); bool32 IsPartnerMonFromSameTrainer(u32 battler); u8 GetCategoryBasedOnStats(u32 battler); +bool32 MoveIsAffectedBySheerForce(u16 move); bool32 TestSheerForceFlag(u32 battler, u16 move); void TryRestoreHeldItems(void); bool32 CanStealItem(u32 battlerStealing, u32 battlerItem, u16 item); diff --git a/include/pokemon.h b/include/pokemon.h index 895ec672c3..061fe8f9b8 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -527,6 +527,9 @@ struct MoveInfo #define EFFECTS_ARR(...) (const struct AdditionalEffect[]) {__VA_ARGS__} #define ADDITIONAL_EFFECTS(...) EFFECTS_ARR( __VA_ARGS__ ), .numAdditionalEffects = ARRAY_COUNT(EFFECTS_ARR( __VA_ARGS__ )) +// Just a hack to make a move boosted by Sheer Force despite having no secondary effects affected +#define SHEER_FORCE_HACK { .moveEffect = 0, .chance = 100, } + struct AdditionalEffect { u8 self:1; diff --git a/src/battle_dome.c b/src/battle_dome.c index 23d844a30f..e439dad8c5 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -4391,7 +4391,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId) allocatedArray[k] = (gMovesInfo[move].pp <= 5) ? 1 : 0; break; case MOVE_POINTS_EFFECT: - allocatedArray[k] = gMovesInfo[move].sheerForceBoost; + allocatedArray[k] = MoveIsAffectedBySheerForce(move); break; } } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index ee605b06de..c269bf8406 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2740,13 +2740,13 @@ void StealTargetItem(u8 battlerStealer, u8 battlerItem) #define INCREMENT_RESET_RETURN \ { \ gBattlescriptCurrInstr++; \ - gBattleScripting.moveEffect = 0; \ + gBattleScripting.moveEffect = 0; \ return; \ } #define RESET_RETURN \ { \ - gBattleScripting.moveEffect = 0; \ + gBattleScripting.moveEffect = 0; \ return; \ } @@ -2759,6 +2759,10 @@ void SetMoveEffect(bool32 primary, bool32 certain) u16 battlerAbility; bool8 activateAfterFaint = FALSE; + // NULL move effect + if (gBattleScripting.moveEffect == 0) + return; + if (gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_1ST_HIT && gBattleMons[gBattlerTarget].hp != 0 && IsFinalStrikeEffect(gBattleScripting.moveEffect)) diff --git a/src/battle_util.c b/src/battle_util.c index c506a83a9e..42c8386ab4 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8732,7 +8732,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 modifier = uq4_12_multiply(modifier, UQ_4_12(1.2)); break; case ABILITY_SHEER_FORCE: - if (gMovesInfo[move].sheerForceBoost) + if (MoveIsAffectedBySheerForce(move)) modifier = uq4_12_multiply(modifier, UQ_4_12(1.3)); break; case ABILITY_SAND_FORCE: @@ -10688,12 +10688,21 @@ bool32 IsBattlerAffectedByHazards(u32 battler, bool32 toxicSpikes) return ret; } +bool32 MoveIsAffectedBySheerForce(u16 move) +{ + u32 i; + for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) + { + if (gMovesInfo[move].additionalEffects[i].chance > 0) + return TRUE; + } + + return FALSE; +} + bool32 TestSheerForceFlag(u32 battler, u16 move) { - if (GetBattlerAbility(battler) == ABILITY_SHEER_FORCE && gMovesInfo[move].sheerForceBoost) - return TRUE; - else - return FALSE; + return GetBattlerAbility(battler) == ABILITY_SHEER_FORCE && MoveIsAffectedBySheerForce(move); } // This function is the body of "jumpifstat", but can be used dynamically in a function diff --git a/src/data/moves_info.h b/src/data/moves_info.h index 1e375033da..504704eebd 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -277,7 +277,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 10, @@ -308,7 +307,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, .chance = 10, @@ -335,7 +333,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 10, @@ -663,7 +660,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .minimizeDoubleDamage = TRUE, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -763,7 +759,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 30, @@ -811,7 +806,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 30, @@ -927,7 +921,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_6, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -1070,7 +1063,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 30, @@ -1095,7 +1087,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .strikeCount = 2, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -1165,7 +1156,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -1344,7 +1334,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = B_UPDATED_MOVE_DATA >= GEN_4 ? MOVE_EFFECT_SP_DEF_MINUS_1 : MOVE_EFFECT_DEF_MINUS_1, .chance = 10, @@ -1369,7 +1358,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 10, @@ -1394,7 +1382,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 10, @@ -1509,7 +1496,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ // The following effect is also relevant in battle_pike.c // If you cherry-pick this to use something other than the config, make sure to update it there too @@ -1540,7 +1526,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, @@ -1566,7 +1551,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, .chance = 10, @@ -1591,7 +1575,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 10, @@ -1616,7 +1599,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, .chance = 10, @@ -2120,7 +2102,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 10, @@ -2145,7 +2126,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 10, @@ -2192,7 +2172,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .damagesAirborne = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -2330,7 +2309,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, .chance = 10, @@ -2355,7 +2333,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, .chance = 10, @@ -3027,7 +3004,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 30, @@ -3052,7 +3028,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 40, @@ -3077,7 +3052,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 30, @@ -3102,7 +3076,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 10, @@ -3127,7 +3100,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 10, @@ -3154,7 +3126,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, #if B_UPDATED_MOVE_DATA >= GEN_4 - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 20, @@ -3269,7 +3240,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 10, @@ -3537,7 +3507,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3 ? 1 : 0, - .sheerForceBoost = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, #if B_UPDATED_MOVE_DATA >= GEN_3 @@ -3595,7 +3564,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 10, @@ -3622,7 +3590,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, .chance = 20, @@ -3870,7 +3837,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 30, @@ -3896,7 +3862,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -3970,7 +3935,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_TRI_ATTACK, .chance = 20, @@ -4252,7 +4216,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .thawsUser = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -4279,7 +4242,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, - .sheerForceBoost = TRUE, .soundMove = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -4464,7 +4426,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, .chance = 10, @@ -4622,7 +4583,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, @@ -4648,7 +4608,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, .chance = 100, @@ -4673,7 +4632,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, @@ -4725,7 +4683,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -4826,7 +4783,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, @@ -5129,7 +5085,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 30, @@ -5183,7 +5138,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_PLUS_1, .self = TRUE, @@ -5419,7 +5373,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .thawsUser = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -5469,7 +5422,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, .chance = 100, @@ -5515,7 +5467,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -5666,7 +5617,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, .chance = 30, @@ -5692,7 +5642,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_PLUS_1, .self = TRUE, @@ -5856,7 +5805,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .damagesAirborneDoubleDamage = TRUE, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -5934,7 +5882,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ #if B_UPDATED_MOVE_DATA >= GEN_4 @@ -6035,7 +5982,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .makesContact = B_UPDATED_MOVE_DATA < GEN_4, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ALL_STATS_UP, .self = TRUE, @@ -6061,7 +6007,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, @@ -6116,7 +6061,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, .chance = 50, @@ -6186,7 +6130,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .pp = 10, .target = MOVE_TARGET_SELECTED, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 100, @@ -6313,7 +6256,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -7100,7 +7042,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SECRET_POWER, .chance = 30, @@ -7219,7 +7160,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, .chance = 50, @@ -7244,7 +7184,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, @@ -7318,7 +7257,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 10, @@ -7392,7 +7330,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_4, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -7466,7 +7403,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_TOXIC, @@ -7493,7 +7429,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, .chance = 50, @@ -7568,7 +7503,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_PLUS_1, .self = TRUE, @@ -7595,7 +7529,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_4, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -7759,7 +7692,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 100, @@ -7784,7 +7716,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .windMove = B_EXTRAPOLATED_MOVE_FLAGS, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ALL_STATS_UP, @@ -7925,7 +7856,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, .chance = 10, @@ -7972,7 +7902,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_4, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -8064,7 +7993,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, @@ -8296,7 +8224,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .gravityBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -8325,7 +8252,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 100, @@ -8352,7 +8278,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 10, @@ -8408,7 +8333,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, #if B_UPDATED_MOVE_DATA >= GEN_4 - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 10, @@ -8591,7 +8515,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .pulseMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, @@ -9557,7 +9480,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .thawsUser = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -9584,7 +9506,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 30, @@ -9656,7 +9577,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 30, @@ -9681,7 +9601,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .pulseMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -9772,7 +9691,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .slicingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -9820,7 +9738,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -9869,7 +9786,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_6, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -9956,7 +9872,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, @@ -9982,7 +9897,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, @@ -10030,7 +9944,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, @@ -10211,7 +10124,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -10242,7 +10154,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, @@ -10273,7 +10184,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -10324,7 +10234,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, @@ -10373,7 +10282,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 20, @@ -10398,7 +10306,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, .chance = 30, @@ -10423,7 +10330,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, .chance = 10, @@ -10449,7 +10355,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, .chance = 20, @@ -10543,7 +10448,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 30, @@ -10566,7 +10470,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 30, @@ -10661,7 +10564,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .slicingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, @@ -10687,7 +10589,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 30, @@ -10713,7 +10614,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 30, @@ -10849,7 +10749,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_6, @@ -10932,7 +10831,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_PLUS_1, .self = TRUE, @@ -11248,7 +11146,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_2, .chance = 40, @@ -11273,7 +11170,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .windMove = B_EXTRAPOLATED_MOVE_FLAGS, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ALL_STATS_UP, @@ -11647,7 +11543,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 10, @@ -11782,7 +11677,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_PLUS_1, .self = TRUE, @@ -11833,7 +11727,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 100, @@ -11858,7 +11751,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_2, @@ -12133,7 +12025,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .thawsUser = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -12457,7 +12348,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 100, @@ -12563,7 +12453,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, .chance = 100, @@ -12588,7 +12477,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, @@ -12678,7 +12566,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 100, @@ -12770,7 +12657,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 30, @@ -12837,7 +12723,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .slicingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, @@ -12883,7 +12768,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, //.windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, @@ -12910,7 +12794,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .minimizeDoubleDamage = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -12960,7 +12843,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, .chance = 40, @@ -13024,7 +12906,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .windMove = TRUE, .damagesAirborne = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -13093,7 +12974,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -13142,7 +13022,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .argument = STATUS1_SLEEP, - .sheerForceBoost = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .metronomeBanned = TRUE, @@ -13192,7 +13071,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 100, @@ -13218,7 +13096,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 20, @@ -13243,7 +13120,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 20, @@ -13268,7 +13144,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .danceMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_PLUS_1, @@ -13295,7 +13170,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -13323,7 +13197,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -13351,7 +13224,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .metronomeBanned = TRUE, @@ -13379,7 +13251,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 30, @@ -13785,7 +13656,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, .chance = 10, @@ -14017,7 +13887,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, .chance = 10, @@ -14063,7 +13932,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, .chance = 30, @@ -14208,7 +14076,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = B_UPDATED_MOVE_DATA >= GEN_7 ? MOVE_EFFECT_DEF_PLUS_2: MOVE_EFFECT_DEF_PLUS_1, @@ -14234,7 +14101,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .thawsUser = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -14305,7 +14171,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, .chance = 100, @@ -14644,7 +14509,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 100, @@ -14714,7 +14578,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_PLUS_1, .self = TRUE, @@ -15018,7 +14881,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PREVENT_ESCAPE, .chance = 100, @@ -15066,7 +14928,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .argument = STATUS1_BURN, - .sheerForceBoost = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -15330,7 +15191,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_THROAT_CHOP, .chance = 100, @@ -15377,7 +15237,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PREVENT_ESCAPE, .chance = 100, @@ -15426,7 +15285,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, .chance = 100, @@ -15452,7 +15310,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, .chance = 100, @@ -15637,7 +15494,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, .chance = 100, @@ -15903,7 +15759,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, .chance = 20, @@ -15950,7 +15805,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, .chance = 20, @@ -16229,7 +16083,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, - .sheerForceBoost = B_UPDATED_MOVE_DATA >= GEN_8, .alwaysCriticalHit = TRUE, .metronomeBanned = TRUE, #if B_UPDATED_MOVE_DATA >= GEN_8 @@ -16254,7 +16107,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -16278,7 +16130,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .gravityBanned = TRUE, .metronomeBanned = TRUE, @@ -16502,7 +16353,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, - .sheerForceBoost = TRUE, .strikeCount = 2, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, @@ -16896,7 +16746,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, @@ -16948,7 +16797,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .thawsUser = TRUE, .ballisticMove = TRUE, .metronomeBanned = TRUE, @@ -17027,7 +16875,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_PLUS_1, @@ -17055,7 +16902,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, @@ -17126,7 +16972,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, @@ -17152,7 +16997,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, @@ -17179,7 +17023,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, @@ -17205,7 +17048,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, @@ -17465,7 +17307,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 20, @@ -17574,7 +17415,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, .chance = 100, @@ -17599,7 +17439,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .onlyIfTargetRaisedStats = TRUE, @@ -17775,7 +17614,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .thawsUser = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -17924,7 +17762,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, @@ -17976,7 +17813,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, @@ -18044,7 +17880,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, @@ -18068,7 +17903,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DIRE_CLAW, .chance = 50, @@ -18090,7 +17924,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_PLUS_1, .self = TRUE, @@ -18133,7 +17966,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .slicingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_STEALTH_ROCK, @@ -18155,7 +17987,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .windMove = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -18178,7 +18009,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_PLUS_1, .self = TRUE, @@ -18256,7 +18086,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 30, @@ -18319,7 +18148,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .argument = STATUS1_PSN_ANY, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, @@ -18342,7 +18170,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_PLUS_1, .self = TRUE, @@ -18364,7 +18191,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, .chance = 100, @@ -18405,7 +18231,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, .chance = 50, @@ -18431,7 +18256,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .argument = STATUS1_ANY, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 30, @@ -18453,7 +18277,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .slicingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPIKES, @@ -18475,7 +18298,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, @@ -18497,7 +18319,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -18519,7 +18340,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -18617,7 +18437,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, .chance = 30, @@ -18655,7 +18474,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_2, .chance = 100, @@ -18676,7 +18494,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -18697,7 +18514,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, - .sheerForceBoost = TRUE, .metronomeBanned = TRUE, }, @@ -18833,7 +18649,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .metronomeBanned = TRUE, }, @@ -18869,7 +18684,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RAPIDSPIN, @@ -18970,7 +18784,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -18995,7 +18808,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .danceMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_PLUS_1, @@ -19192,7 +19004,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .makesContact = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -19430,7 +19241,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .mimicBanned = TRUE, @@ -19459,7 +19269,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .mimicBanned = TRUE, @@ -19488,7 +19297,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .mimicBanned = TRUE, @@ -19517,7 +19325,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .mimicBanned = TRUE, @@ -19546,7 +19353,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .mimicBanned = TRUE, @@ -19692,12 +19498,11 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_PLUS_1, .self = TRUE, .onChargeTurnOnly = TRUE, - }), + }, SHEER_FORCE_HACK), }, [MOVE_TERA_STARSTORM] = @@ -19854,7 +19659,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .soundMove = TRUE, - .sheerForceBoost = TRUE, .ignoresSubstitute = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, diff --git a/test/battle/ability/sheer_force.c b/test/battle/ability/sheer_force.c index 14b22f3e8c..da5168d04b 100644 --- a/test/battle/ability/sheer_force.c +++ b/test/battle/ability/sheer_force.c @@ -1,6 +1,12 @@ #include "global.h" #include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(MoveIsAffectedBySheerForce(MOVE_ELECTRO_SHOT) == TRUE); +} + SINGLE_BATTLE_TEST("Sheer Force boosts power, but removes secondary effects of moves", s16 damage) { s32 j; @@ -8,7 +14,7 @@ SINGLE_BATTLE_TEST("Sheer Force boosts power, but removes secondary effects of m for (j = 1; j < MOVES_COUNT; j++) { - if (gMovesInfo[j].sheerForceBoost + if (MoveIsAffectedBySheerForce(j) //&& gMovesInfo[j].effect != EFFECT_ORDER_UP && gMovesInfo[j].effect != EFFECT_AURA_WHEEL && gMovesInfo[j].effect != EFFECT_PLACEHOLDER) diff --git a/test/battle/move_effect/recoil.c b/test/battle/move_effect/recoil.c index 43a7a8405c..fdb1e67a3c 100644 --- a/test/battle/move_effect/recoil.c +++ b/test/battle/move_effect/recoil.c @@ -68,7 +68,7 @@ SINGLE_BATTLE_TEST("Flare Blitz deals 33% of recoil damage to the user and can b GIVEN { ASSUME(gMovesInfo[MOVE_FLARE_BLITZ].recoil == 33); - ASSUME(gMovesInfo[MOVE_FLARE_BLITZ].argument == STATUS1_BURN); + ASSUME(MoveHasMoveEffect(MOVE_FLARE_BLITZ, MOVE_EFFECT_BURN)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { From 086375ab132fdf8a14d46d4515da472e05e94db8 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Tue, 30 Jan 2024 17:54:43 +0900 Subject: [PATCH 03/55] Moved a couple more flags --- include/battle.h | 5 +++-- include/pokemon.h | 35 +++++++++++++++++----------------- src/battle_script_commands.c | 4 ++-- src/data/battle_move_effects.h | 7 +++++++ src/data/moves_info.h | 5 ----- 5 files changed, 29 insertions(+), 27 deletions(-) diff --git a/include/battle.h b/include/battle.h index 9e8327e9aa..b492374704 100644 --- a/include/battle.h +++ b/include/battle.h @@ -55,7 +55,9 @@ struct __attribute__((packed, aligned(2))) BattleMoveEffect u16 battleTvScore:3; u16 encourageEncore:1; u16 twoTurnEffect:1; - u16 padding:11; + u16 usesProtectCounter:1; + u16 forcePressure:1; + u16 padding:9; }; #define GET_MOVE_EFFECT(move) gBattleMoveEffects[gMovesInfo[move].effect] @@ -796,7 +798,6 @@ STATIC_ASSERT(sizeof(((struct BattleStruct *)0)->palaceFlags) * 8 >= MAX_BATTLER #define IS_MOVE_STATUS(move)(gMovesInfo[move].category == DAMAGE_CATEGORY_STATUS) #define IS_MOVE_RECOIL(move)(gMovesInfo[move].recoil > 0 || gMovesInfo[move].effect == EFFECT_RECOIL_IF_MISS) -#define MOVE_USES_PROTECT_COUNTER(move)(gMovesInfo[move].effect == EFFECT_ENDURE || gMovesInfo[move].effect == EFFECT_PROTECT) #define BATTLER_MAX_HP(battlerId)(gBattleMons[battlerId].hp == gBattleMons[battlerId].maxHP) #define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0) || (gBattleStruct->enduredDamage & gBitTable[gBattlerTarget])) diff --git a/include/pokemon.h b/include/pokemon.h index 061fe8f9b8..f973425a39 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -468,21 +468,6 @@ struct MoveInfo u32 alwaysCriticalHit:1; u32 numAdditionalEffects:2; // limited to 3 - don't want to get too crazy - // Ban flags - u32 gravityBanned:1; - u32 mirrorMoveBanned: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; - u32 skyBattleBanned:1; - u32 sketchBanned:1; - // Flags u32 makesContact:1; u32 ignoresProtect:1; @@ -498,6 +483,7 @@ struct MoveInfo u32 danceMove:1; u32 windMove:1; u32 slicingMove:1; + u32 healingMove:1; u32 minimizeDoubleDamage:1; u32 ignoresTargetAbility:1; u32 ignoresTargetDefenseEvasionStages:1; @@ -508,9 +494,22 @@ struct MoveInfo u32 ignoreTypeIfFlyingAndUngrounded:1; u32 thawsUser:1; u32 ignoresSubstitute:1; - u32 forcePressure:1; u32 cantUseTwice:1; - u32 healingMove:1; + + // Ban flags + u32 gravityBanned:1; + u32 mirrorMoveBanned: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; + u32 skyBattleBanned:1; + u32 sketchBanned:1; u32 argument; @@ -532,11 +531,11 @@ struct MoveInfo struct AdditionalEffect { + u16 moveEffect; u8 self:1; u8 onlyIfTargetRaisedStats:1; u8 onChargeTurnOnly:1; u8 chance; // 0% = effect certain, primary effect - u16 moveEffect; }; struct Ability diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index c269bf8406..73bb926824 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1836,7 +1836,7 @@ static void Cmd_ppreduce(void) if (moveTarget == MOVE_TARGET_BOTH || moveTarget == MOVE_TARGET_FOES_AND_ALLY || moveTarget == MOVE_TARGET_ALL_BATTLERS - || gMovesInfo[gCurrentMove].forcePressure) + || GET_MOVE_EFFECT(gCurrentMove).forcePressure) { for (i = 0; i < gBattlersCount; i++) { @@ -10717,7 +10717,7 @@ static void TryResetProtectUseCounter(u32 battler) { u32 lastMove = gLastResultingMoves[battler]; if (lastMove == MOVE_UNAVAILABLE - || (!MOVE_USES_PROTECT_COUNTER(lastMove) && (B_ALLY_SWITCH_FAIL_CHANCE >= GEN_9 && gMovesInfo[lastMove].effect != EFFECT_ALLY_SWITCH))) + || (!GET_MOVE_EFFECT(lastMove).usesProtectCounter && (B_ALLY_SWITCH_FAIL_CHANCE >= GEN_9 && gMovesInfo[lastMove].effect != EFFECT_ALLY_SWITCH))) gDisableStructs[battler].protectUses = 0; } diff --git a/src/data/battle_move_effects.h b/src/data/battle_move_effects.h index 3ac6ebe9c7..c2b40fed34 100644 --- a/src/data/battle_move_effects.h +++ b/src/data/battle_move_effects.h @@ -570,12 +570,14 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .battleScript = BattleScript_EffectProtect, .battleTvScore = 5, .encourageEncore = TRUE, + .usesProtectCounter = TRUE, }, [EFFECT_SPIKES] = { .battleScript = BattleScript_EffectSpikes, .battleTvScore = 4, + .forcePressure = TRUE, }, [EFFECT_FORESIGHT] = @@ -604,6 +606,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .battleScript = BattleScript_EffectEndure, .battleTvScore = 3, .encourageEncore = TRUE, + .usesProtectCounter = TRUE, }, [EFFECT_ROLLOUT] = @@ -1039,6 +1042,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .battleScript = BattleScript_EffectImprison, .battleTvScore = 6, .encourageEncore = TRUE, + .forcePressure = TRUE, }, [EFFECT_REFRESH] = @@ -1059,6 +1063,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = { .battleScript = BattleScript_EffectSnatch, .battleTvScore = 1, + .forcePressure = TRUE, }, [EFFECT_LOW_KICK] = @@ -1339,6 +1344,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = { .battleScript = BattleScript_EffectToxicSpikes, .battleTvScore = 0, // TODO: Assign points + .forcePressure = TRUE, }, [EFFECT_GASTRO_ACID] = @@ -1352,6 +1358,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .battleScript = BattleScript_EffectStealthRock, .battleTvScore = 0, // TODO: Assign points .encourageEncore = TRUE, + .forcePressure = TRUE, }, [EFFECT_TELEKINESIS] = diff --git a/src/data/moves_info.h b/src/data/moves_info.h index 504704eebd..7b6d4568c7 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -4661,7 +4661,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, - .forcePressure = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -6947,7 +6946,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, - .forcePressure = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -7018,7 +7016,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, .ignoresSubstitute = TRUE, - .forcePressure = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, @@ -9385,7 +9382,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, - .forcePressure = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -10706,7 +10702,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, - .forcePressure = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, From 8a8d181654c3fa705ea334cde22e332c26f4e6a3 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Thu, 1 Feb 2024 15:19:10 +0900 Subject: [PATCH 04/55] AdditionalEffects storage tweak Uses some macro and bitwise trickery to store additional effects and the count thereof in a single word --- include/battle.h | 2 +- include/pokemon.h | 12 ++++++--- src/battle_ai_main.c | 31 ++++++++++++++-------- src/battle_ai_util.c | 25 ++++++++++-------- src/battle_script_commands.c | 50 +++++++++++++++++++++++------------- src/battle_util.c | 27 +++++++++++-------- test/battle/move.c | 13 +++++----- 7 files changed, 98 insertions(+), 62 deletions(-) diff --git a/include/battle.h b/include/battle.h index b492374704..fb55f9e193 100644 --- a/include/battle.h +++ b/include/battle.h @@ -615,7 +615,6 @@ struct BattleStruct u32 expValue; u8 expGettersOrder[PARTY_SIZE]; // First battlers which were sent out, then via exp-share u8 expGetterMonId; - u8 additionalEffectsCounter:2; u8 expOrderId:3; u8 expGetterBattlerId:2; u8 teamGotExpMsgPrinted:1; // The 'Rest of your team got msg' has been printed. @@ -737,6 +736,7 @@ struct BattleStruct u8 switchInAbilityPostponed:4; // To not activate against an empty field, each bit for battler u8 blunderPolicy:1; // should blunder policy activate u8 swapDamageCategory:1; // Photon Geyser, Shell Side Arm, Light That Burns the Sky + u8 additionalEffectsCounter:4; // A counter for the additionalEffects applied by the current move in Cmd_setadditionaleffects u8 ballSpriteIds[2]; // item gfx, window gfx u8 appearedInBattle; // Bitfield to track which Pokemon appeared in battle. Used for Burmy's form change u8 skyDropTargets[MAX_BATTLERS_COUNT]; // For Sky Drop, to account for if multiple Pokemon use Sky Drop in a double battle. diff --git a/include/pokemon.h b/include/pokemon.h index f973425a39..8a2e629ae7 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -463,10 +463,9 @@ struct MoveInfo s32 priority:4; u32 recoil:7; - u32 strikeCount:4; // Max 15 hits. Defaults to 1 if not set. May apply its effect on each hit. + u32 strikeCount:4; // Max 15 hits. Defaults to 1 if not set. May apply its effect on each hit. u32 criticalHitStage:2; u32 alwaysCriticalHit:1; - u32 numAdditionalEffects:2; // limited to 3 - don't want to get too crazy // Flags u32 makesContact:1; @@ -514,7 +513,7 @@ struct MoveInfo u32 argument; // primary/secondary effects - const struct AdditionalEffect *additionalEffects; + uintptr_t additionalEffects; // contest parameters u8 contestEffect; @@ -524,7 +523,12 @@ struct MoveInfo }; #define EFFECTS_ARR(...) (const struct AdditionalEffect[]) {__VA_ARGS__} -#define ADDITIONAL_EFFECTS(...) EFFECTS_ARR( __VA_ARGS__ ), .numAdditionalEffects = ARRAY_COUNT(EFFECTS_ARR( __VA_ARGS__ )) +#define ADDITIONAL_EFFECTS(...) ((ARRAY_COUNT(EFFECTS_ARR( __VA_ARGS__ )) % 0xF) << 28) + (uintptr_t)(EFFECTS_ARR( __VA_ARGS__ )) + +// Retrieve a move's additional effects and the count thereof +#define GET_ADDITIONAL_EFFECTS_AND_COUNT(move, _count, _effects) u32 _count = GET_ADDITIONAL_EFFECTS_COUNT(move); const struct AdditionalEffect *_effects = GET_ADDITIONAL_EFFECTS(move) +#define GET_ADDITIONAL_EFFECTS(move) (void *)(gMovesInfo[move].additionalEffects & 0x8FFFFFF) +#define GET_ADDITIONAL_EFFECTS_COUNT(move) (gMovesInfo[move].additionalEffects >> 28) // Just a hack to make a move boosted by Sheer Force despite having no secondary effects affected #define SHEER_FORCE_HACK { .moveEffect = 0, .chance = 100, } diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index e24d59f6ac..ac7d2f93b2 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -3201,6 +3201,9 @@ static u32 AI_CalcMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) u32 movesetIndex = AI_THINKING_STRUCT->movesetIndex; u32 effectiveness = aiData->effectiveness[battlerAtk][battlerDef][movesetIndex]; + // additional effects + GET_ADDITIONAL_EFFECTS_AND_COUNT(move, additionalEffectsCount, additionalEffects); + s32 score = 0; u32 predictedMove = aiData->predictedMoves[battlerDef]; u32 predictedMoveSlot = GetMoveSlot(GetMovesArray(battlerDef), predictedMove); @@ -4427,19 +4430,19 @@ static u32 AI_CalcMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) } // move effect checks // check move additional effects that are likely to happen - for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) + for (i = 0; i < additionalEffectsCount; i++) { // Only consider effects with a guaranteed chance to happen - if (!MoveEffectIsGuaranteed(battlerAtk, aiData->abilities[battlerAtk], &gMovesInfo[move].additionalEffects[i])) + if (!MoveEffectIsGuaranteed(battlerAtk, aiData->abilities[battlerAtk], &additionalEffects[i])) continue; // Consider move effects that target self - if (gMovesInfo[move].additionalEffects[i].self) + if (additionalEffects[i].self) { - u32 oneStageStatId = STAT_CHANGE_ATK + gMovesInfo[move].additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_PLUS_1; - u32 twoStageStatId = STAT_CHANGE_ATK_2 + gMovesInfo[move].additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_PLUS_1; + u32 oneStageStatId = STAT_CHANGE_ATK + additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_PLUS_1; + u32 twoStageStatId = STAT_CHANGE_ATK_2 + additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_PLUS_1; - switch (gMovesInfo[move].additionalEffects[i].moveEffect) + switch (additionalEffects[i].moveEffect) { case MOVE_EFFECT_SPD_PLUS_2: case MOVE_EFFECT_SPD_PLUS_1: @@ -4490,7 +4493,7 @@ static u32 AI_CalcMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) } else // consider move effects that hinder the target { - switch (gMovesInfo[move].additionalEffects[i].moveEffect) + switch (additionalEffects[i].moveEffect) { case MOVE_EFFECT_FLINCH: score += ShouldTryToFlinch(battlerAtk, battlerDef, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], move); @@ -4768,11 +4771,13 @@ static s32 AI_SetupFirstTurn(u32 battlerAtk, u32 battlerDef, u32 move, s32 score ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_HIT: + { // TEMPORARY - should applied to all moves regardless of EFFECT // Consider move effects - for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) + GET_ADDITIONAL_EFFECTS_AND_COUNT(move, additionalEffectsCount, additionalEffects); + for (i = 0; i < additionalEffectsCount; i++) { - switch (gMovesInfo[move].additionalEffects[i].moveEffect) + switch (additionalEffects[i].moveEffect) { case MOVE_EFFECT_STEALTH_ROCK: case MOVE_EFFECT_SPIKES: @@ -4782,6 +4787,7 @@ static s32 AI_SetupFirstTurn(u32 battlerAtk, u32 battlerDef, u32 move, s32 score break; } } + } default: break; } @@ -4823,11 +4829,13 @@ static s32 AI_Risky(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_HIT: + { // TEMPORARY - should applied to all moves regardless of EFFECT // Consider move effects - for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) + GET_ADDITIONAL_EFFECTS_AND_COUNT(move, additionalEffectsCount, additionalEffects); + for (i = 0; i < additionalEffectsCount; i++) { - switch (gMovesInfo[move].additionalEffects[i].moveEffect) + switch (additionalEffects[i].moveEffect) { case MOVE_EFFECT_ALL_STATS_UP: if (Random() & 1) @@ -4837,6 +4845,7 @@ static s32 AI_Risky(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; } } + } default: break; } diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index f901d61b59..d04a952a93 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -517,6 +517,7 @@ static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s3 u32 i; u32 abilityDef = AI_DATA->abilities[battlerDef]; u32 abilityAtk = AI_DATA->abilities[battlerAtk]; + GET_ADDITIONAL_EFFECTS_AND_COUNT(move, additionalEffectsCount, additionalEffects); switch (gMovesInfo[move].effect) { @@ -531,12 +532,12 @@ static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s3 } // check ADDITIONAL_EFFECTS - for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) + for (i = 0; i < additionalEffectsCount; i++) { // Consider move effects that target self - if (gMovesInfo[move].additionalEffects[i].self) + if (additionalEffects[i].self) { - switch (gMovesInfo[move].additionalEffects[i].moveEffect) + switch (additionalEffects[i].moveEffect) { case MOVE_EFFECT_ATK_PLUS_1: if (BattlerStatCanRise(battlerAtk, abilityAtk, STAT_ATK)) @@ -566,7 +567,7 @@ static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s3 } else // consider move effects that hinder the target { - switch (gMovesInfo[move].additionalEffects[i].moveEffect) + switch (additionalEffects[i].moveEffect) { case MOVE_EFFECT_POISON: case MOVE_EFFECT_TOXIC: @@ -600,7 +601,7 @@ static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s3 case MOVE_EFFECT_SP_DEF_MINUS_1: case MOVE_EFFECT_ACC_MINUS_1: case MOVE_EFFECT_EVS_MINUS_1: - if (ShouldLowerStat(battlerDef, abilityDef, STAT_ATK + (gMovesInfo[move].additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_MINUS_1)) && noOfHitsToKo != 1) + if (ShouldLowerStat(battlerDef, abilityDef, STAT_ATK + (additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_MINUS_1)) && noOfHitsToKo != 1) return TRUE; break; case MOVE_EFFECT_ATK_MINUS_2: @@ -610,7 +611,7 @@ static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s3 case MOVE_EFFECT_SP_DEF_MINUS_2: case MOVE_EFFECT_ACC_MINUS_2: case MOVE_EFFECT_EVS_MINUS_2: - if (ShouldLowerStat(battlerDef, abilityDef, STAT_ATK + (gMovesInfo[move].additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_MINUS_2)) && noOfHitsToKo != 1) + if (ShouldLowerStat(battlerDef, abilityDef, STAT_ATK + (additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_MINUS_2)) && noOfHitsToKo != 1) return TRUE; break; } @@ -640,9 +641,12 @@ static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s return TRUE; break; default: - for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) + { + GET_ADDITIONAL_EFFECTS_AND_COUNT(move, additionalEffectsCount, additionalEffects); + + for (i = 0; i < additionalEffectsCount; i++) { - switch (gMovesInfo[move].additionalEffects[i].moveEffect) + switch (additionalEffects[i].moveEffect) { case MOVE_EFFECT_ATK_MINUS_1: case MOVE_EFFECT_DEF_MINUS_1: @@ -654,16 +658,17 @@ static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s case MOVE_EFFECT_DEF_SPDEF_DOWN: case MOVE_EFFECT_SP_DEF_MINUS_1: case MOVE_EFFECT_SP_DEF_MINUS_2: - if ((gMovesInfo[move].additionalEffects[i].self && GetBattlerAbility(battlerAtk) != ABILITY_CONTRARY) + if ((additionalEffects[i].self && GetBattlerAbility(battlerAtk) != ABILITY_CONTRARY) || (noOfHitsToKo != 1 && abilityDef == ABILITY_CONTRARY && !IsMoldBreakerTypeAbility(abilityAtk))) return TRUE; break; case MOVE_EFFECT_RECHARGE: - return gMovesInfo[move].additionalEffects[i].self; + return additionalEffects[i].self; } } break; } + } return FALSE; } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 73bb926824..6247cbd740 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3820,34 +3820,47 @@ void SetMoveEffect(bool32 primary, bool32 certain) gBattleScripting.moveEffect = 0; } +static bool32 CanApplyAdditionalEffect(const struct AdditionalEffect *additionalEffect) +{ + // Self-targeting move effects only apply after the last mon has been hit + u16 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); + if (additionalEffect->self + && (moveTarget == MOVE_TARGET_BOTH || moveTarget == MOVE_TARGET_FOES_AND_ALLY) + && GetNextTarget(moveTarget, TRUE) != MAX_BATTLERS_COUNT) + return FALSE; + + // Certain move effects only apply if the target raised stats this turn (e.g. Burning Jealousy) + if (additionalEffect->onlyIfTargetRaisedStats && !gProtectStructs[gBattlerTarget].statRaised) + return FALSE; + + // Certain additional effects only apply on a two-turn move's charge turn + if (additionalEffect->onChargeTurnOnly != gProtectStructs[gBattlerAttacker].chargingTurn) + return FALSE; + + return TRUE; +} + static void Cmd_setadditionaleffects(void) { CMD_ARGS(); if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { - if (gMovesInfo[gCurrentMove].numAdditionalEffects > gBattleStruct->additionalEffectsCounter) + GET_ADDITIONAL_EFFECTS_AND_COUNT(gCurrentMove, additionalEffectsCount, additionalEffects); + if (additionalEffectsCount > gBattleStruct->additionalEffectsCounter) { - u32 percentChance; - u16 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); + u32 percentChance, i = gBattleStruct->additionalEffectsCounter; const u8 *currentPtr = gBattlescriptCurrInstr; - const struct AdditionalEffect *additionalEffect = &gMovesInfo[gCurrentMove].additionalEffects[gBattleStruct->additionalEffectsCounter]; - // Check additional effect flags - // self-targeting move effects cannot occur multiple times per turn - // only occur on the last setmoveeffect when there are multiple targets - if (!(gMovesInfo[gCurrentMove].additionalEffects[gBattleStruct->additionalEffectsCounter].self - && (moveTarget == MOVE_TARGET_BOTH || moveTarget == MOVE_TARGET_FOES_AND_ALLY) - && GetNextTarget(moveTarget, TRUE) != MAX_BATTLERS_COUNT) - && !(additionalEffect->onlyIfTargetRaisedStats && !gProtectStructs[gBattlerTarget].statRaised) - && additionalEffect->onChargeTurnOnly == gProtectStructs[gBattlerAttacker].chargingTurn) + // Various checks for if this move effect can be applied this turn + if (CanApplyAdditionalEffect(&additionalEffects[i])) { - percentChance = CalcSecondaryEffectChance(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker), additionalEffect); + percentChance = CalcSecondaryEffectChance(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker), &additionalEffects[i]); // Activate effect if it's primary (chance == 0) or if RNGesus says so - if ((percentChance == 0) || RandomPercentage(RNG_SECONDARY_EFFECT + gBattleStruct->additionalEffectsCounter, percentChance)) + if ((percentChance == 0) || RandomPercentage(RNG_SECONDARY_EFFECT + i, percentChance)) { - gBattleScripting.moveEffect = additionalEffect->moveEffect | (MOVE_EFFECT_AFFECTS_USER * (additionalEffect->self)); + gBattleScripting.moveEffect = additionalEffects[i].moveEffect | (MOVE_EFFECT_AFFECTS_USER * (additionalEffects[i].self)); SetMoveEffect( percentChance == 0, // a primary effect @@ -3862,7 +3875,7 @@ static void Cmd_setadditionaleffects(void) // Call setadditionaleffects again in the case of a move with multiple effects gBattleStruct->additionalEffectsCounter++; - if (gMovesInfo[gCurrentMove].numAdditionalEffects > gBattleStruct->additionalEffectsCounter) + if (additionalEffectsCount > gBattleStruct->additionalEffectsCounter) gBattleScripting.moveEffect = MOVE_EFFECT_CONTINUE; else gBattleScripting.moveEffect = gBattleStruct->additionalEffectsCounter = 0; @@ -15677,12 +15690,13 @@ static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 byIntimidate) static bool8 CanBurnHitThaw(u16 move) { u8 i; + GET_ADDITIONAL_EFFECTS_AND_COUNT(move, additionalEffectsCount, additionalEffects); if (B_BURN_HIT_THAW >= GEN_6) { - for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) + for (i = 0; i < additionalEffectsCount; i++) { - if (gMovesInfo[move].additionalEffects[i].moveEffect == MOVE_EFFECT_BURN) + if (additionalEffects[i].moveEffect == MOVE_EFFECT_BURN) return TRUE; } } diff --git a/src/battle_util.c b/src/battle_util.c index 42c8386ab4..31fbb3bfad 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -10691,9 +10691,11 @@ bool32 IsBattlerAffectedByHazards(u32 battler, bool32 toxicSpikes) bool32 MoveIsAffectedBySheerForce(u16 move) { u32 i; - for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) + GET_ADDITIONAL_EFFECTS_AND_COUNT(move, additionalEffectsCount, additionalEffects); + + for (i = 0; i < additionalEffectsCount; i++) { - if (gMovesInfo[move].additionalEffects[i].chance > 0) + if (additionalEffects[i].chance > 0) return TRUE; } @@ -10975,10 +10977,11 @@ bool32 IsGen6ExpShareEnabled(void) bool32 MoveHasMoveEffect(u32 move, u32 moveEffect) { u32 i; - for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) + GET_ADDITIONAL_EFFECTS_AND_COUNT(move, count, effects); + + for (i = 0; i < count; i++) { - if (gMovesInfo[move].additionalEffects[i].moveEffect == moveEffect - && gMovesInfo[move].additionalEffects[i].self == FALSE) + if (effects[i].moveEffect == moveEffect && effects[i].self == FALSE) return TRUE; } return FALSE; @@ -10987,10 +10990,11 @@ bool32 MoveHasMoveEffect(u32 move, u32 moveEffect) bool32 MoveHasMoveEffectWithChance(u32 move, u32 moveEffect, u32 chance) { u32 i; - for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) + GET_ADDITIONAL_EFFECTS_AND_COUNT(move, count, effects); + + for (i = 0; i < count; i++) { - if (gMovesInfo[move].additionalEffects[i].moveEffect == moveEffect - && gMovesInfo[move].additionalEffects[i].chance == chance) + if (effects[i].moveEffect == moveEffect && effects[i].chance == chance) return TRUE; } return FALSE; @@ -10999,10 +11003,11 @@ bool32 MoveHasMoveEffectWithChance(u32 move, u32 moveEffect, u32 chance) bool32 MoveHasMoveEffectSelf(u32 move, u32 moveEffect) { u32 i; - for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) + GET_ADDITIONAL_EFFECTS_AND_COUNT(move, count, effects); + + for (i = 0; i < count; i++) { - if (gMovesInfo[move].additionalEffects[i].moveEffect == moveEffect - && gMovesInfo[move].additionalEffects[i].self == TRUE) + if (effects[i].moveEffect == moveEffect && effects[i].self == TRUE) return TRUE; } return FALSE; diff --git a/test/battle/move.c b/test/battle/move.c index 4f51395ab1..02f76f731b 100644 --- a/test/battle/move.c +++ b/test/battle/move.c @@ -23,13 +23,12 @@ SINGLE_BATTLE_TEST("Accuracy controls the proportion of misses") SINGLE_BATTLE_TEST("AdditionalEffect.chance controls the proportion of secondary effects") { - u32 move; - PARAMETRIZE { move = MOVE_THUNDER_SHOCK; } - PARAMETRIZE { move = MOVE_DISCHARGE; } - PARAMETRIZE { move = MOVE_NUZZLE; } - ASSUME(MoveHasMoveEffect(move, MOVE_EFFECT_PARALYSIS) == TRUE); - ASSUME(0 < gMovesInfo[move].additionalEffects[0].chance && gMovesInfo[move].additionalEffects[0].chance <= 100); - PASSES_RANDOMLY(gMovesInfo[move].additionalEffects[0].chance, 100, RNG_SECONDARY_EFFECT); + u32 move, chance; + PARAMETRIZE { move = MOVE_THUNDER_SHOCK; chance = 10; } + PARAMETRIZE { move = MOVE_DISCHARGE; chance = 30; } + PARAMETRIZE { move = MOVE_NUZZLE; chance = 100; } + ASSUME(MoveHasMoveEffectWithChance(move, MOVE_EFFECT_PARALYSIS, chance) == TRUE); + PASSES_RANDOMLY(chance, 100, RNG_SECONDARY_EFFECT); GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); From 436ef7e59a729d0b3b7d964035c09495a217a3d4 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Fri, 9 Feb 2024 23:01:27 +0900 Subject: [PATCH 05/55] Tweaks + RETURN_MOVE_HAS_MOVE_EFFECT_WITH macro Macro makes it easier to build functions that check a move's move effects --- src/battle_util.c | 73 ++++++++++------------------ test/battle/move_effect/upper_hand.c | 4 +- 2 files changed, 27 insertions(+), 50 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index 80e5c6b9fb..f4ae946774 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -10740,20 +10740,6 @@ bool32 IsBattlerAffectedByHazards(u32 battler, bool32 toxicSpikes) return ret; } -bool32 MoveIsAffectedBySheerForce(u16 move) -{ - u32 i; - GET_ADDITIONAL_EFFECTS_AND_COUNT(move, additionalEffectsCount, additionalEffects); - - for (i = 0; i < additionalEffectsCount; i++) - { - if (additionalEffects[i].chance > 0) - return TRUE; - } - - return FALSE; -} - bool32 TestSheerForceFlag(u32 battler, u16 move) { return GetBattlerAbility(battler) == ABILITY_SHEER_FORCE && MoveIsAffectedBySheerForce(move); @@ -11026,43 +11012,35 @@ bool32 IsGen6ExpShareEnabled(void) return FlagGet(I_EXP_SHARE_FLAG); } +#define R_CHECK_MOVE_EFFECT(...) RECURSIVELY(R_FOR_EACH(CHECK_MOVE_EFFECT, __VA_ARGS__)) +#define CHECK_MOVE_EFFECT(_condition) && effects[i]._condition + +/* Quick way of checking if a move has move effects with match a few +comma-separated conditions. Each condition has to check a field of AdditionalEffect. */ +#define RETURN_MOVE_HAS_MOVE_EFFECT_WITH(condition1, ...) \ + u32 i; \ + GET_ADDITIONAL_EFFECTS_AND_COUNT(move, count, effects); \ + for (i = 0; i < count; i++) \ + { \ + if (effects[i].condition1 R_CHECK_MOVE_EFFECT(__VA_ARGS__)) \ + return TRUE; \ + } \ + return FALSE; + + bool32 MoveHasMoveEffect(u32 move, u32 moveEffect) { - u32 i; - GET_ADDITIONAL_EFFECTS_AND_COUNT(move, count, effects); - - for (i = 0; i < count; i++) - { - if (effects[i].moveEffect == moveEffect && effects[i].self == FALSE) - return TRUE; - } - return FALSE; + RETURN_MOVE_HAS_MOVE_EFFECT_WITH(moveEffect == moveEffect, self == FALSE) } bool32 MoveHasMoveEffectWithChance(u32 move, u32 moveEffect, u32 chance) { - u32 i; - GET_ADDITIONAL_EFFECTS_AND_COUNT(move, count, effects); - - for (i = 0; i < count; i++) - { - if (effects[i].moveEffect == moveEffect && effects[i].chance == chance) - return TRUE; - } - return FALSE; + RETURN_MOVE_HAS_MOVE_EFFECT_WITH(moveEffect == moveEffect, chance == chance) } bool32 MoveHasMoveEffectSelf(u32 move, u32 moveEffect) { - u32 i; - GET_ADDITIONAL_EFFECTS_AND_COUNT(move, count, effects); - - for (i = 0; i < count; i++) - { - if (effects[i].moveEffect == moveEffect && effects[i].self == TRUE) - return TRUE; - } - return FALSE; + RETURN_MOVE_HAS_MOVE_EFFECT_WITH(moveEffect == moveEffect, self == TRUE) } bool32 MoveHasMoveEffectSelfArg(u32 move, u32 moveEffect, u32 argument) @@ -11072,13 +11050,12 @@ bool32 MoveHasMoveEffectSelfArg(u32 move, u32 moveEffect, u32 argument) bool32 MoveHasChargeTurnMoveEffect(u32 move) { - u8 i = 0; - for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) - { - if (gMovesInfo[move].additionalEffects[i].onChargeTurnOnly) - return TRUE; - } - return FALSE; + RETURN_MOVE_HAS_MOVE_EFFECT_WITH(onChargeTurnOnly == TRUE) +} + +bool32 MoveIsAffectedBySheerForce(u16 move) +{ + RETURN_MOVE_HAS_MOVE_EFFECT_WITH(chance > 0) } bool8 CanMonParticipateInSkyBattle(struct Pokemon *mon) diff --git a/test/battle/move_effect/upper_hand.c b/test/battle/move_effect/upper_hand.c index f93f5d2192..42aaea4a50 100644 --- a/test/battle/move_effect/upper_hand.c +++ b/test/battle/move_effect/upper_hand.c @@ -99,12 +99,12 @@ SINGLE_BATTLE_TEST("Upper Hand fails if the target moves first") } } -SINGLE_BATTLE_TEST("Upper Hand is boosted by Sheer Force") +SINGLE_BATTLE_TEST("Upper Hand is boosted by Sheer Force") // why does this move need a special test? { GIVEN { ASSUME(gMovesInfo[MOVE_EXTREME_SPEED].category == DAMAGE_CATEGORY_PHYSICAL); ASSUME(gMovesInfo[MOVE_EXTREME_SPEED].priority == 2); - ASSUME(gMovesInfo[MOVE_UPPER_HAND].sheerForceBoost == TRUE); + ASSUME(MoveIsAffectedBySheerForce(MOVE_UPPER_HAND) == TRUE); PLAYER(SPECIES_HARIYAMA) { Ability(ABILITY_SHEER_FORCE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { From 3342fdafc2f51825e7b05ae48aed3663eefc5f48 Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Sat, 10 Feb 2024 05:32:03 -0500 Subject: [PATCH 06/55] add missing constant --- src/pokedex_cry_screen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pokedex_cry_screen.c b/src/pokedex_cry_screen.c index 2c352c67a0..437ef8cf5a 100644 --- a/src/pokedex_cry_screen.c +++ b/src/pokedex_cry_screen.c @@ -362,7 +362,7 @@ static void BufferCryWaveformSegment(void) else baseBuffer = gSoundInfo.pcmBuffer + (gSoundInfo.pcmDmaPeriod + 1 - gPcmDmaCounter) * gSoundInfo.pcmSamplesPerVBlank; - buffer = baseBuffer + 0x630; + buffer = baseBuffer + PCM_DMA_BUF_SIZE; for (i = 0; i < ARRAY_COUNT(sDexCryScreen->cryWaveformBuffer); i++) sDexCryScreen->cryWaveformBuffer[i] = buffer[i * 2] * 2; } From 3695f0317b0595f903f4bccdda0abeb6bc992a02 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Mon, 12 Feb 2024 16:13:15 +0900 Subject: [PATCH 07/55] Reordered everything in moves_info.h to be in struct order --- src/data/moves_info.h | 8155 +++++++++++++------------- test/battle/move_effect/upper_hand.c | 2 +- 2 files changed, 4076 insertions(+), 4081 deletions(-) diff --git a/src/data/moves_info.h b/src/data/moves_info.h index f91dbbc33b..ccecb69bb6 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -15,13 +15,11 @@ #else #define HANDLE_EXPANDED_MOVE_NAME(_name, ...) COMPOUND_STRING(_name) #endif - #if B_BINDING_TURNS >= GEN_5 #define BINDING_TURNS "4 or 5" #else #define BINDING_TURNS "2 to 5" #endif - /* First arg is the charge turn string id, second arg depends on effect EFFECT_SEMI_INVULNERABLE/EFFECT_SKY_DROP: semi-invulnerable STATUS3 to apply to battler EFFECT_TWO_TURNS_ATTACK/EFFECT_SOLAR_BEAM: weather in which to skip charge turn */ @@ -123,14 +121,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING(""), .effect = EFFECT_HIT, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, - .metronomeBanned = TRUE, + .target = MOVE_TARGET_SELECTED, + .pp = 0, + .priority = 0, .mirrorMoveBanned = TRUE, + .metronomeBanned = TRUE, .sketchBanned = TRUE, }, @@ -142,12 +140,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "forelegs or tail."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 35, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 35, + .priority = 0, .makesContact = TRUE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS == GEN_4, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, @@ -164,13 +162,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "high critical-hit ratio."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_FIGHTING, .accuracy = 100, - .criticalHitStage = 1, - .pp = 25, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 25, + .priority = 0, + .criticalHitStage = 1, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -186,12 +184,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "2 to 5 times."), .effect = EFFECT_MULTI_HIT, .power = 15, - .type = TYPE_NORMAL, .accuracy = 85, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -207,12 +205,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "2 to 5 times."), .effect = EFFECT_MULTI_HIT, .power = 18, - .type = TYPE_NORMAL, .accuracy = 85, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, @@ -229,12 +227,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "incredible power."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_NORMAL, .accuracy = 85, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, @@ -251,12 +249,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Money is recovered after."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PAYDAY, }), @@ -274,12 +272,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the foe."), .effect = EFFECT_HIT, .power = 75, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -304,12 +302,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #endif .effect = EFFECT_HIT, .power = 75, - .type = TYPE_ICE, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -330,12 +328,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "may paralyze the foe."), .effect = EFFECT_HIT, .power = 75, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -356,12 +354,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "sharp claws."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 35, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 35, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -377,12 +375,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "powerful pincers."), .effect = EFFECT_HIT, .power = 55, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 30, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -398,12 +396,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that may cause fainting."), .effect = EFFECT_OHKO, .power = 1, - .type = TYPE_NORMAL, .accuracy = 30, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -419,16 +417,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the foe on the 2nd turn."), .effect = EFFECT_TWO_TURNS_ATTACK, .power = 80, - .type = TYPE_NORMAL, .accuracy = 100, - .criticalHitStage = 1, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 10, + .priority = 0, + .criticalHitStage = 1, + .windMove = B_EXTRAPOLATED_MOVE_FLAGS, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .windMove = B_EXTRAPOLATED_MOVE_FLAGS, .argument = TWO_TURN_ARG(STRINGID_PKMNWHIPPEDWHIRLWIND), .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, @@ -444,15 +442,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "sharply raises Attack."), .effect = EFFECT_ATTACK_UP_2, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 30, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 30, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .danceMove = TRUE, + .priority = 0, .snatchAffected = TRUE, + .danceMove = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_SWORDS_DANCE, @@ -467,12 +465,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "scythes, claws, etc."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_NORMAL, .accuracy = 95, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 30, + .priority = 0, .makesContact = TRUE, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, @@ -489,15 +487,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "of wind whipped up by wings."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_FLYING, .accuracy = 100, - .pp = 35, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 35, + .priority = 0, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_4) || (B_UPDATED_MOVE_FLAGS < GEN_3), - .damagesAirborneDoubleDamage = TRUE, .windMove = TRUE, + .damagesAirborneDoubleDamage = TRUE, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -512,12 +510,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "spread wide."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_FLYING, .accuracy = 100, - .pp = 35, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 35, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, @@ -533,17 +531,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "wind and ends the battle."), .effect = EFFECT_ROAR, .power = 0, - .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 0 : 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = -6, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, - .windMove = TRUE, + .priority = -6, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, - .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .windMove = TRUE, + .ignoresSubstitute = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, @@ -560,17 +558,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "then strikes the next turn."), .effect = EFFECT_SEMI_INVULNERABLE, .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 90 : 70, - .type = TYPE_FLYING, .accuracy = 95, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .gravityBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_PKMNFLEWHIGH, COMPRESS_BITS(STATUS3_ON_AIR)), .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -586,12 +584,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, .power = 15, - .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 75, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -611,12 +609,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "tail, vine, etc."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_NORMAL, .accuracy = 75, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, @@ -631,6 +629,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Strikes the foe with\n" "slender, whiplike vines."), + .effect = EFFECT_HIT, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 45 : 35, + .accuracy = 100, + .type = TYPE_GRASS, + .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, #if B_UPDATED_MOVE_DATA >= GEN_6 .pp = 25, #elif B_UPDATED_MOVE_DATA >= GEN_4 @@ -638,13 +642,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .pp = 10, #endif - .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 45 : 35, - .type = TYPE_GRASS, - .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .priority = 0, - .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, @@ -660,12 +658,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foot. May cause flinching."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .minimizeDoubleDamage = TRUE, .skyBattleBanned = TRUE, @@ -687,14 +685,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that strikes the foe twice."), .effect = EFFECT_HIT, .power = 30, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, - .makesContact = TRUE, + .target = MOVE_TARGET_SELECTED, + .pp = 30, + .priority = 0, .strikeCount = 2, + .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -709,12 +707,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with intense force."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_NORMAL, .accuracy = 75, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, @@ -728,6 +726,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "A strong jumping kick. May\n" "miss and hurt the kicker."), + .effect = EFFECT_RECOIL_IF_MISS, #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 100, #elif B_UPDATED_MOVE_DATA >= GEN_4 @@ -735,13 +734,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .power = 70, #endif - .effect = EFFECT_RECOIL_IF_MISS, - .type = TYPE_FIGHTING, .accuracy = 95, - .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 25, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 25, + .priority = 0, .makesContact = TRUE, .gravityBanned = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, @@ -758,12 +756,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "a rapid spin."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_FIGHTING, .accuracy = 85, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -784,13 +782,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "by hurling sand in its face."), .effect = EFFECT_ACCURACY_DOWN, .power = 0, - .type = TYPE_GROUND, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -806,12 +804,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "cause flinching."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -831,12 +829,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "horns."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 25, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 25, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, @@ -852,12 +850,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with sharp horns, etc."), .effect = EFFECT_MULTI_HIT, .power = 15, - .type = TYPE_NORMAL, .accuracy = 85, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_COOL, @@ -873,12 +871,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "uses a horn like a drill."), .effect = EFFECT_OHKO, .power = 1, - .type = TYPE_NORMAL, .accuracy = 30, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -892,6 +890,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Charges the foe with a full-\n" "body tackle."), + .effect = EFFECT_HIT, #if B_UPDATED_MOVE_DATA >= GEN_7 .power = 40, #elif B_UPDATED_MOVE_DATA >= GEN_5 @@ -899,13 +898,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .power = 35, #endif - .effect = EFFECT_HIT, - .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 95, - .pp = 35, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 35, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -921,12 +919,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "cause paralysis."), .effect = EFFECT_HIT, .power = 85, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_6, .skyBattleBanned = TRUE, @@ -948,12 +946,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = BINDING_TURNS" times with vines, etc."), .effect = EFFECT_HIT, .power = 15, - .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 85, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_WRAP, @@ -972,13 +970,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that also hurts the user."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_NORMAL, .accuracy = 85, - .recoil = 25, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, + .recoil = 25, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -994,12 +992,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that confuses the user."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 120 : 90, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 20, - .target = MOVE_TARGET_RANDOM, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_RANDOM, + .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 20, + .priority = 0, .makesContact = TRUE, .instructBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -1020,13 +1018,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "also hurts the user."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_NORMAL, .accuracy = 100, - .recoil = 33, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, + .recoil = 33, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -1042,13 +1040,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe's Defense."), .effect = EFFECT_DEFENSE_DOWN, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_BOTH, + .pp = 30, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -1064,12 +1062,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "etc., that may poison."), .effect = EFFECT_HIT, .power = 15, - .type = TYPE_POISON, .accuracy = 100, - .pp = 35, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 35, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 30, @@ -1088,14 +1086,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "jab the foe twice."), .effect = EFFECT_HIT, .power = 25, - .type = TYPE_BUG, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, - .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .strikeCount = 2, + .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 20, @@ -1114,12 +1112,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "strike 2 to 5 times."), .effect = EFFECT_MULTI_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 25 : 14, - .type = TYPE_BUG, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 95 : 85, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -1134,13 +1132,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "leer to lower Defense."), .effect = EFFECT_DEFENSE_DOWN, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_BOTH, + .pp = 30, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_COOL, @@ -1156,12 +1154,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May cause flinching."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_DARK, .accuracy = 100, - .pp = 25, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 25, + .priority = 0, .makesContact = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -1182,13 +1180,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe's Attack."), .effect = EFFECT_ATTACK_DOWN, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 40, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_BOTH, + .pp = 40, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, @@ -1206,17 +1204,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the battle."), .effect = EFFECT_ROAR, .power = 0, - .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 0 : 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = -6, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = -6, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .copycatBanned = TRUE, .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, @@ -1233,16 +1231,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe into a deep slumber."), .effect = EFFECT_SLEEP, .power = 0, - .type = TYPE_NORMAL, .accuracy = 55, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .priority = 0, .magicCoatAffected = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_SING, @@ -1257,16 +1255,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that may confuse the foe."), .effect = EFFECT_CONFUSE, .power = 0, - .type = TYPE_NORMAL, .accuracy = 55, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .priority = 0, .magicCoatAffected = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -1281,12 +1279,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "always inflict 20 HP damage."), .effect = EFFECT_FIXED_DAMAGE_ARG, .power = 1, - .type = TYPE_NORMAL, .accuracy = 90, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .argument = 20, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, @@ -1300,6 +1298,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Psychically disables one of\n" "the foe's moves."), + .effect = EFFECT_DISABLE, + .power = 0, #if B_UPDATED_MOVE_DATA >= GEN_5 .accuracy = 100, #elif B_UPDATED_MOVE_DATA == GEN_4 @@ -1307,16 +1307,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .accuracy = 55, #endif - .effect = EFFECT_DISABLE, - .power = 0, .type = TYPE_NORMAL, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .ignoresSubstitute = TRUE, + .priority = 0, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -1335,13 +1333,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #endif .effect = EFFECT_HIT, .power = 40, - .type = TYPE_POISON, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, - .additionalEffects = ADDITIONAL_EFFECTS({ + .target = MOVE_TARGET_BOTH, + .pp = 30, + .priority = 0, + .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = B_UPDATED_MOVE_DATA >= GEN_4 ? MOVE_EFFECT_SP_DEF_MINUS_1 : MOVE_EFFECT_DEF_MINUS_1, .chance = 10, }), @@ -1359,12 +1357,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "inflict a burn."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 25, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 25, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 10, @@ -1383,12 +1381,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "may inflict a burn."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 10, @@ -1407,16 +1405,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "reduction of abilities."), .effect = EFFECT_MIST, .power = 0, - .type = TYPE_ICE, .accuracy = 0, - .pp = 30, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 30, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -1431,12 +1429,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the foe."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_WATER, .accuracy = 100, - .pp = 25, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 25, + .priority = 0, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -1451,12 +1449,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to strike the foe."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, - .type = TYPE_WATER, .accuracy = 80, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -1471,12 +1469,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "crashes it down on the foe."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, - .type = TYPE_WATER, .accuracy = 100, - .pp = 15, - .target = B_UPDATED_MOVE_DATA >= GEN_4 ? MOVE_TARGET_FOES_AND_ALLY : MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = B_UPDATED_MOVE_DATA >= GEN_4 ? MOVE_TARGET_FOES_AND_ALLY : MOVE_TARGET_BOTH, + .pp = 15, + .priority = 0, .damagesUnderwater = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, @@ -1497,12 +1495,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #endif .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, - .type = TYPE_ICE, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ // The following effect is also relevant in battle_pike.c // If you cherry-pick this to use something other than the config, make sure to update it there too @@ -1527,12 +1525,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #endif .effect = B_BLIZZARD_HAIL >= GEN_4 ? EFFECT_BLIZZARD : EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, - .type = TYPE_ICE, .accuracy = 70, - .pp = 5, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 5, + .priority = 0, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, @@ -1552,12 +1550,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "may confuse the foe."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, .chance = 10, @@ -1576,12 +1574,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that may lower Speed."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_WATER, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 10, @@ -1600,12 +1598,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "beam that may lower Attack."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_ICE, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, .chance = 10, @@ -1622,12 +1620,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sHyperBeamDescription, .effect = EFFECT_HIT, .power = 150, - .type = TYPE_NORMAL, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, @@ -1647,12 +1645,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "jabbing beak, etc."), .effect = EFFECT_HIT, .power = 35, - .type = TYPE_FLYING, .accuracy = 100, - .pp = 35, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 35, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, @@ -1668,12 +1666,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the beak acting as a drill."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_FLYING, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, @@ -1689,13 +1687,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "also hurts the user."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_FIGHTING, .accuracy = 80, - .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 25, - .recoil = 25, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 25, + .priority = 0, + .recoil = 25, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_COOL, @@ -1711,12 +1709,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "damage on heavier foes."), .effect = EFFECT_LOW_KICK, .power = 1, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -1732,12 +1730,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with double the power."), .effect = EFFECT_COUNTER, .power = 1, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_DEPENDS, - .priority = -5, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_DEPENDS, + .pp = 20, + .priority = -5, .makesContact = TRUE, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .meFirstBanned = TRUE, @@ -1758,12 +1756,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to the user's level."), .effect = EFFECT_LEVEL_DAMAGE, .power = 1, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, @@ -1780,12 +1778,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "then slams the foe."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -1801,12 +1799,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "half the damage inflicted."), .effect = EFFECT_ABSORB, .power = 20, - .type = TYPE_GRASS, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_4 ? 25 : 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_4 ? 25 : 20, + .priority = 0, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .healingMove = B_HEAL_BLOCKING >= GEN_6, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, @@ -1821,12 +1819,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sMegaDrainDescription, .effect = EFFECT_ABSORB, .power = 40, - .type = TYPE_GRASS, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_4 ? 15 : 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_4 ? 15 : 10, + .priority = 0, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .healingMove = B_HEAL_BLOCKING >= GEN_6, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, @@ -1843,13 +1841,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "steal HP on every turn."), .effect = EFFECT_LEECH_SEED, .power = 0, - .type = TYPE_GRASS, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -1865,16 +1863,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and heightens Sp. Atk."), .effect = B_GROWTH_STAT_RAISE >= GEN_5 ? EFFECT_GROWTH : EFFECT_SPECIAL_ATTACK_UP, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 40, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 40, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_GROWTH, @@ -1889,13 +1887,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical-hit ratio."), .effect = EFFECT_HIT, .power = 55, - .type = TYPE_GRASS, .accuracy = 95, - .criticalHitStage = 1, - .pp = 25, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_BOTH, + .pp = 25, + .priority = 0, + .criticalHitStage = 1, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, @@ -1911,12 +1909,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "then attacks next turn."), .effect = EFFECT_SOLAR_BEAM, .power = 120, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_PKMNTOOKSUNLIGHT, B_WEATHER_SUN), @@ -1934,13 +1932,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that may poison the foe."), .effect = EFFECT_POISON, .power = 0, - .type = TYPE_POISON, .accuracy = 75, - .pp = 35, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 35, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .powderMove = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, @@ -1957,13 +1955,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "paralyze the foe."), .effect = EFFECT_PARALYZE, .power = 0, - .type = TYPE_GRASS, .accuracy = 75, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 30, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .powderMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, @@ -1980,13 +1978,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "cause the foe to sleep."), .effect = EFFECT_SLEEP, .power = 0, - .type = TYPE_GRASS, .accuracy = 75, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .powderMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, @@ -2001,6 +1999,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "A rampage of 2 to 3 turns\n" "that confuses the user."), + .effect = EFFECT_HIT, #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 120, #elif B_UPDATED_MOVE_DATA == GEN_4 @@ -2008,13 +2007,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .power = 70, #endif - .effect = EFFECT_HIT, - .type = TYPE_GRASS, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 20, - .target = MOVE_TARGET_RANDOM, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_RANDOM, + .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 20, + .priority = 0, .makesContact = TRUE, .danceMove = TRUE, .instructBanned = TRUE, @@ -2036,13 +2034,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to reduce its Speed."), .effect = B_UPDATED_MOVE_DATA >= GEN_6 ? EFFECT_SPEED_DOWN_2 : EFFECT_SPEED_DOWN, .power = 0, - .type = TYPE_BUG, .accuracy = 95, - .pp = 40, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_BOTH, + .pp = 40, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_SMART, @@ -2058,12 +2056,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "always inflict 40 HP damage."), .effect = EFFECT_FIXED_DAMAGE_ARG, .power = 1, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_4) || (B_UPDATED_MOVE_FLAGS < GEN_3), .argument = 40, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, @@ -2080,12 +2078,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "fire for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 35 : 15, - .type = TYPE_FIRE, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 70, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_WRAP, @@ -2104,12 +2102,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "may paralyze the foe."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 30, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 10, @@ -2128,12 +2126,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that may paralyze the foe."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 10, @@ -2152,13 +2150,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that paralyzes the foe."), .effect = EFFECT_PARALYZE, .power = 0, - .type = TYPE_ELECTRIC, .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 90 : 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -2174,12 +2172,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "cause paralysis."), .effect = EFFECT_THUNDER, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, - .type = TYPE_ELECTRIC, .accuracy = 70, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .damagesAirborne = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -2199,12 +2197,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "strike the foe."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_ROCK, .accuracy = 90, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_ROCK_THROW, @@ -2219,12 +2217,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "no effect on flying foes."), .effect = EFFECT_EARTHQUAKE, .power = 100, - .type = TYPE_GROUND, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 10, + .priority = 0, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .damagesUnderground = TRUE, .skyBattleBanned = TRUE, @@ -2242,12 +2240,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "drops the foe in a fissure."), .effect = EFFECT_OHKO, .power = 1, - .type = TYPE_GROUND, .accuracy = 30, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .damagesUnderground = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, @@ -2264,16 +2262,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "turn and strikes next turn."), .effect = EFFECT_SEMI_INVULNERABLE, .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 80 : 60, - .type = TYPE_GROUND, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, .skyBattleBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_PKMNDUGHOLE, COMPRESS_BITS(STATUS3_UNDERGROUND)), .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, @@ -2290,13 +2288,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "intensifying toxin."), .effect = EFFECT_TOXIC, .power = 0, - .type = TYPE_POISON, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 85, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -2312,12 +2310,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "cause confusion."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 25, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 25, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, .chance = 10, @@ -2336,12 +2334,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that may lower Sp. Def."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, .chance = 10, @@ -2360,13 +2358,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "may induce sleep."), .effect = EFFECT_SLEEP, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 60, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -2382,16 +2380,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "fashion to raise Attack."), .effect = EFFECT_ATTACK_UP, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 40, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 40, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -2406,16 +2404,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "boost Speed."), .effect = EFFECT_SPEED_UP_2, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 30, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 30, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -2430,12 +2428,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that always strikes first."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 1, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 30, + .priority = 1, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -2451,12 +2449,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "every time it is hit."), .effect = EFFECT_RAGE, .power = 20, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_COOL, @@ -2472,13 +2470,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "from battle instantly."), .effect = EFFECT_TELEPORT, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = -6, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .priority = -6, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, @@ -2495,12 +2493,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to the user's level."), .effect = EFFECT_LEVEL_DAMAGE, .power = 1, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -2515,21 +2513,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe during one battle."), .effect = EFFECT_MIMIC, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, + .priority = 0, .ignoresSubstitute = TRUE, .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_2, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -2544,16 +2542,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "reduce the foe's Defense."), .effect = EFFECT_DEFENSE_DOWN_2, .power = 0, - .type = TYPE_NORMAL, .accuracy = 85, - .pp = 40, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 40, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .priority = 0, .magicCoatAffected = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -2568,16 +2566,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "raise evasiveness."), .effect = EFFECT_EVASION_UP, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 15, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_DOUBLE_TEAM, @@ -2590,6 +2588,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Recovers up to half the\n" "user's maximum HP."), + .effect = EFFECT_RESTORE_HP, + .power = 0, + .accuracy = 0, + .type = TYPE_NORMAL, + .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, #if B_UPDATED_MOVE_DATA >= GEN_9 .pp = 5, #elif B_UPDATED_MOVE_DATA >= GEN_4 @@ -2597,18 +2601,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .pp = 20, #endif - .effect = EFFECT_RESTORE_HP, - .power = 0, - .type = TYPE_NORMAL, - .accuracy = 0, - .target = MOVE_TARGET_USER, - .priority = 0, - .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, - .healingMove = TRUE, .snatchAffected = TRUE, + .healingMove = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -2623,16 +2621,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "muscles to raise Defense."), .effect = EFFECT_DEFENSE_UP, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 30, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 30, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_HARDEN, @@ -2647,16 +2645,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to raise evasiveness."), .effect = EFFECT_MINIMIZE, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 10 : 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 10 : 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -2671,13 +2669,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "using smoke, ink, etc."), .effect = EFFECT_ACCURACY_DOWN, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, .contestCategory = CONTEST_CATEGORY_SMART, @@ -2693,13 +2691,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "confuses the foe."), .effect = EFFECT_CONFUSE, .power = 0, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, @@ -2715,16 +2713,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "hard shell to raise Defense."), .effect = EFFECT_DEFENSE_UP, .power = 0, - .type = TYPE_WATER, .accuracy = 0, - .pp = 40, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 40, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -2739,16 +2737,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "spots and raise Defense."), .effect = EFFECT_DEFENSE_CURL, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 40, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 40, .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_DEFENSE_CURL, @@ -2763,16 +2761,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "sharply raises Defense."), .effect = EFFECT_DEFENSE_UP_2, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 30, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 30, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -2787,16 +2785,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "lowers Sp. Atk damage."), .effect = EFFECT_LIGHT_SCREEN, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 30, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 30, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -2811,13 +2809,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "eliminates all stat changes."), .effect = EFFECT_HAZE, .power = 0, - .type = TYPE_ICE, .accuracy = 0, - .pp = 30, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 30, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .priority = 0, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -2835,16 +2833,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "weakens physical attacks."), .effect = EFFECT_REFLECT, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -2859,17 +2857,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "critical-hit ratio."), .effect = EFFECT_FOCUS_ENERGY, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 30, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 30, .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, - .argument = STATUS2_FOCUS_ENERGY, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, + .mirrorMoveBanned = TRUE, + .argument = STATUS2_FOCUS_ENERGY, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_FOCUS_ENERGY, @@ -2884,16 +2882,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "turns to retaliate double."), .effect = EFFECT_BIDE, .power = 1, - .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = B_UPDATED_MOVE_DATA >= GEN_4 ? 1 : 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_USER, + .pp = 10, + .priority = B_UPDATED_MOVE_DATA >= GEN_4 ? 1 : 0, .makesContact = TRUE, + .mirrorMoveBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -2908,21 +2906,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Pokémon move at random."), .effect = EFFECT_METRONOME, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_DEPENDS, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_DEPENDS, + .pp = 10, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_3, .instructBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -2937,20 +2935,20 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with the same move."), .effect = EFFECT_MIRROR_MOVE, .power = 0, - .type = TYPE_FLYING, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_DEPENDS, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_DEPENDS, + .pp = 20, .zMove = { .effect = Z_EFFECT_ATK_UP_2 }, + .priority = 0, .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_3, .instructBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -2965,12 +2963,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "makes the user faint."), .effect = EFFECT_EXPLOSION, .power = 200, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 5, + .priority = 0, .parentalBondBanned = TRUE, .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -2986,12 +2984,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the foe."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_NORMAL, .accuracy = 75, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -3007,12 +3005,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "injure. May also paralyze."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 30 : 20, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 30, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -3032,12 +3030,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that may also poison."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 30 : 20, - .type = TYPE_POISON, .accuracy = 70, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 40, @@ -3056,12 +3054,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "damage. May also poison."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_POISON, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 30, @@ -3080,12 +3078,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May cause flinching."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_GROUND, .accuracy = 85, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 10, @@ -3104,12 +3102,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "strikes. May cause a burn."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, - .type = TYPE_FIRE, .accuracy = 85, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 10, @@ -3128,12 +3126,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to climb waterfalls."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_WATER, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, #if B_UPDATED_MOVE_DATA >= GEN_4 .additionalEffects = ADDITIONAL_EFFECTS({ @@ -3155,12 +3153,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, .power = 35, - .type = TYPE_WATER, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 75, - .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 15 : 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 15 : 10, + .priority = 0, .makesContact = TRUE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -3180,12 +3178,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that never miss."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 20, + .priority = 0, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -3200,12 +3198,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "attacks on the next turn."), .effect = EFFECT_TWO_TURNS_ATTACK, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 100, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 10 : 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 10 : 15, + .priority = 0, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -3229,12 +3227,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "strike 2 to 5 times."), .effect = EFFECT_MULTI_HIT, .power = 20, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -3249,12 +3247,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May lower Speed."), .effect = EFFECT_HIT, .power = 10, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 35, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 35, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, @@ -3274,16 +3272,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and sharply raises Sp. Def."), .effect = EFFECT_SPECIAL_DEFENSE_UP_2, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -3298,13 +3296,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May lower accuracy."), .effect = EFFECT_ACCURACY_DOWN, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 80, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, + .priority = 0, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -3320,17 +3318,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "user's maximum HP."), .effect = EFFECT_SOFTBOILED, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .healingMove = TRUE, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, + .healingMove = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_SOFT_BOILED, @@ -3343,6 +3341,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "A jumping knee kick. If it\n" "misses, the user is hurt."), + .effect = EFFECT_RECOIL_IF_MISS, #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 130, #elif B_UPDATED_MOVE_DATA == GEN_4 @@ -3350,13 +3349,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .power = 85, #endif - .effect = EFFECT_RECOIL_IF_MISS, - .type = TYPE_FIGHTING, .accuracy = 90, - .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 20, + .priority = 0, .makesContact = TRUE, .gravityBanned = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, @@ -3371,6 +3369,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Intimidates and frightens\n" "the foe into paralysis."), + .effect = EFFECT_PARALYZE, + .power = 0, #if B_UPDATED_MOVE_DATA >= GEN_6 .accuracy = 100, #elif B_UPDATED_MOVE_DATA == GEN_5 @@ -3378,14 +3378,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .accuracy = 75, #endif - .effect = EFFECT_PARALYZE, - .power = 0, .type = TYPE_NORMAL, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 30, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -3401,12 +3399,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "inflicted on a sleeping foe."), .effect = EFFECT_DREAM_EATER, .power = 100, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .healingMove = B_HEAL_BLOCKING >= GEN_6, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -3420,6 +3418,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Envelops the foe in a toxic\n" "gas that may poison."), + .effect = EFFECT_POISON, + .power = 0, #if B_UPDATED_MOVE_DATA >= GEN_6 .accuracy = 90, #elif B_UPDATED_MOVE_DATA >= GEN_5 @@ -3427,14 +3427,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .accuracy = 55, #endif - .effect = EFFECT_POISON, - .power = 0, .type = TYPE_POISON, - .pp = 40, - .target = B_UPDATED_MOVE_DATA >= GEN_5 ? MOVE_TARGET_BOTH : MOVE_TARGET_SELECTED, - .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .target = B_UPDATED_MOVE_DATA >= GEN_5 ? MOVE_TARGET_BOTH : MOVE_TARGET_SELECTED, + .pp = 40, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -3450,12 +3448,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe 2 to 5 times."), .effect = EFFECT_MULTI_HIT, .power = 15, - .type = TYPE_NORMAL, .accuracy = 85, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -3471,12 +3469,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the damage inflicted."), .effect = EFFECT_ABSORB, .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 80 : 20, - .type = TYPE_BUG, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_7 ? 10 : 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_7 ? 10 : 15, + .priority = 0, .makesContact = TRUE, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .healingMove = B_HEAL_BLOCKING >= GEN_6, @@ -3494,13 +3492,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "face that induces sleep."), .effect = EFFECT_SLEEP, .power = 0, - .type = TYPE_NORMAL, .accuracy = 75, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -3516,12 +3514,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "then strikes the next turn."), .effect = EFFECT_TWO_TURNS_ATTACK, .power = 140, - .type = TYPE_FLYING, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -3546,21 +3544,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "become a copy of the foe."), .effect = EFFECT_TRANSFORM, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .copycatBanned = TRUE, + .assistBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -3575,12 +3573,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May lower the foe's Speed."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 40 : 20, - .type = TYPE_WATER, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 30, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 10, @@ -3599,12 +3597,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "confuse the foe."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -3625,13 +3623,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that always induce sleep."), .effect = EFFECT_SLEEP, .power = 0, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 0, .magicCoatAffected = TRUE, .powderMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, @@ -3648,13 +3646,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "light that cuts accuracy."), .effect = EFFECT_ACCURACY_DOWN, .power = 0, - .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 100 : 70, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -3670,12 +3668,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "wave of varying intensity."), .effect = EFFECT_PSYWAVE, .power = 1, - .type = TYPE_PSYCHIC, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 80, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -3690,16 +3688,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Has no effect whatsoever."), .effect = EFFECT_DO_NOTHING, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 40, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 40, .zMove = { .effect = Z_EFFECT_ATK_UP_3 }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .gravityBanned = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -3714,15 +3712,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to sharply raise Defense."), .effect = EFFECT_DEFENSE_UP_2, .power = 0, - .type = TYPE_POISON, .accuracy = 0, - .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 40, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 40, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -3738,13 +3736,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "high critical-hit ratio."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 90, - .type = TYPE_WATER, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 85, - .criticalHitStage = 1, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, + .criticalHitStage = 1, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -3760,12 +3758,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "makes the user faint."), .effect = EFFECT_EXPLOSION, .power = 250, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 5, + .priority = 0, .parentalBondBanned = TRUE, .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -3781,12 +3779,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "claws, etc., 2 to 5 times."), .effect = EFFECT_MULTI_HIT, .power = 18, - .type = TYPE_NORMAL, .accuracy = 80, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -3802,12 +3800,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that strikes twice."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_GROUND, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .strikeCount = 2, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -3823,17 +3821,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "restoring HP and status."), .effect = EFFECT_REST, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .healingMove = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_REST, @@ -3848,12 +3846,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May cause flinching."), .effect = EFFECT_HIT, .power = 75, - .type = TYPE_ROCK, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_BOTH, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 30, @@ -3872,12 +3870,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May cause flinching."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_NORMAL, .accuracy = 90, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -3898,15 +3896,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and raises Attack."), .effect = EFFECT_ATTACK_UP, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 30, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 30, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -3922,15 +3920,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "into a known move's type."), .effect = EFFECT_CONVERSION, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 30, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 30, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, - .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -3946,12 +3944,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "at the same time."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_TRI_ATTACK, .chance = 20, @@ -3970,12 +3968,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and cuts half the foe's HP."), .effect = EFFECT_SUPER_FANG, .power = 1, - .type = TYPE_NORMAL, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, @@ -3992,13 +3990,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "a high critical-hit ratio."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_NORMAL, .accuracy = 100, - .criticalHitStage = 1, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, + .criticalHitStage = 1, .makesContact = TRUE, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, @@ -4015,15 +4013,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "of the user's maximum HP."), .effect = EFFECT_SUBSTITUTE, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, @@ -4038,35 +4036,32 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Used only if all PP are gone.\n" "Also hurts the user a little."), + .effect = B_UPDATED_MOVE_DATA >= GEN_4 ? EFFECT_RECOIL_HP_25 : EFFECT_HIT, + .power = 50, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, + .type = TYPE_NORMAL, + .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, + .recoil = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 25, + .makesContact = TRUE, + .mirrorMoveBanned = B_UPDATED_MOVE_DATA >= GEN_4, + .meFirstBanned = TRUE, + .mimicBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .assistBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, + .encoreBanned = TRUE, + .sketchBanned = TRUE, #if B_UPDATED_MOVE_DATA >= GEN_4 - .effect = EFFECT_RECOIL_HP_25, - .accuracy = 0, - .mirrorMoveBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECOIL_HP_25, .self = TRUE, }), - #else - .effect = EFFECT_HIT, - .accuracy = 100, - .recoil = 25, #endif - .power = 50, - .type = TYPE_NORMAL, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .category = DAMAGE_CATEGORY_PHYSICAL, - .makesContact = TRUE, - .meFirstBanned = TRUE, - .mimicBanned = TRUE, - .metronomeBanned = TRUE, - .sleepTalkBanned = TRUE, - .copycatBanned = TRUE, - .instructBanned = TRUE, - .encoreBanned = TRUE, - .assistBanned = TRUE, - .sketchBanned = TRUE, }, [MOVE_SKETCH] = @@ -4077,23 +4072,23 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "permanently."), .effect = EFFECT_SKETCH, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 1, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .instructBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, .sketchBanned = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -4109,14 +4104,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "row with rising intensity."), .effect = EFFECT_TRIPLE_KICK, .power = 10, - .type = TYPE_FIGHTING, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, - .makesContact = TRUE, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .strikeCount = 3, + .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -4131,12 +4126,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "steal the foe's held item."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 40, - .type = TYPE_DARK, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 25 : 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 25 : 10, + .priority = 0, .makesContact = TRUE, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .meFirstBanned = TRUE, @@ -4160,13 +4155,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "from fleeing or switching."), .effect = EFFECT_MEAN_LOOK, .power = 0, - .type = TYPE_BUG, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .ignoresProtect = (B_UPDATED_MOVE_FLAGS >= GEN_6) || (B_UPDATED_MOVE_FLAGS <= GEN_3), .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, @@ -4183,13 +4178,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "ensure the next move's hit."), .effect = EFFECT_LOCK_ON, .power = 0, - .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 5, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 0, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_MIND_READER, @@ -4204,13 +4199,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "sleeping foe every turn."), .effect = EFFECT_NIGHTMARE, .power = 0, - .type = TYPE_GHOST, .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 100 : 0, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 0, .ignoresProtect = B_UPDATED_MOVE_FLAGS <= GEN_3, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -4226,12 +4221,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "may inflict a burn."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 25, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 25, + .priority = 0, .makesContact = TRUE, .thawsUser = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -4252,14 +4247,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "used only while asleep."), .effect = EFFECT_SNORE, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 50 : 40, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -4279,13 +4274,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "differently for GHOSTS."), .effect = EFFECT_CURSE, .power = 0, - .type = B_UPDATED_MOVE_TYPES >= GEN_5 ? TYPE_GHOST : TYPE_MYSTERY, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = B_UPDATED_MOVE_TYPES >= GEN_5 ? TYPE_GHOST : TYPE_MYSTERY, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_CURSE }, + .priority = 0, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -4303,12 +4298,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the user's HP is down."), .effect = EFFECT_FLAIL, .power = 1, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -4324,13 +4319,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to the last attack's type."), .effect = EFFECT_CONVERSION_2, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 30, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 30, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .priority = 0, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_5, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -4348,13 +4343,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical-hit ratio."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_FLYING, .accuracy = 95, - .criticalHitStage = 1, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, + .criticalHitStage = 1, .windMove = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, @@ -4370,13 +4365,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "sharply reducing Speed."), .effect = EFFECT_SPEED_DOWN_2, .power = 0, - .type = TYPE_GRASS, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 85, - .pp = 40, - .target = B_UPDATED_MOVE_DATA >= GEN_6 ? MOVE_TARGET_BOTH : MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .target = B_UPDATED_MOVE_DATA >= GEN_6 ? MOVE_TARGET_BOTH : MOVE_TARGET_SELECTED, + .pp = 40, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 0, .magicCoatAffected = TRUE, .powderMove = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, @@ -4393,12 +4388,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the user's HP is down."), .effect = EFFECT_FLAIL, .power = 1, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_COOL, @@ -4414,13 +4409,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "of the foe's last move."), .effect = EFFECT_SPITE, .power = 0, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .priority = 0, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, @@ -4437,12 +4432,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "gust. May cause freezing."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_ICE, .accuracy = 100, - .pp = 25, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 25, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, .chance = 10, @@ -4461,13 +4456,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "if used in succession."), .effect = EFFECT_PROTECT, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 4 : 3, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 4 : 3, .metronomeBanned = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, @@ -4485,12 +4480,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "speed to strike first."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 1, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 30, + .priority = 1, .makesContact = TRUE, .punchingMove = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, @@ -4507,13 +4502,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to sharply reduce Speed."), .effect = EFFECT_SPEED_DOWN_2, .power = 0, - .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -4527,12 +4522,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sFeintDescription, .effect = EFFECT_HIT, .power = 60, - .type = TYPE_DARK, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = B_UPDATED_MOVE_DATA >= GEN_4, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_SMART, @@ -4548,13 +4543,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "look. May cause confusion."), .effect = EFFECT_CONFUSE, .power = 0, - .type = B_UPDATED_MOVE_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_NORMAL, .accuracy = 75, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = B_UPDATED_MOVE_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -4570,15 +4565,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "sacrificing HP."), .effect = EFFECT_BELLY_DRUM, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -4594,12 +4589,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "damage. May also poison."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_POISON, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, @@ -4619,12 +4614,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to reduce its accuracy."), .effect = EFFECT_HIT, .power = 20, - .type = TYPE_GROUND, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, .chance = 100, @@ -4643,12 +4638,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "damage and cut accuracy."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_WATER, .accuracy = 85, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, @@ -4668,16 +4663,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe switching in."), .effect = EFFECT_SPIKES, .power = 0, - .type = TYPE_GROUND, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_OPPONENTS_FIELD, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_OPPONENTS_FIELD, + .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -4693,12 +4688,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "paralysis, but inaccurate."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 120 : 100, - .type = TYPE_ELECTRIC, .accuracy = 50, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -4718,13 +4713,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to heighten evasiveness."), .effect = EFFECT_FORESIGHT, .power = 0, - .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 0 : 100, - .pp = 40, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 40, .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, + .priority = 0, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, @@ -4741,13 +4736,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "is also made to faint."), .effect = EFFECT_DESTINY_BOND, .power = 0, - .type = TYPE_GHOST, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 5, .zMove = { .effect = Z_EFFECT_FOLLOW_ME }, + .priority = 0, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -4768,17 +4763,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "song faints in 3 turns."), .effect = EFFECT_PERISH_SONG, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 5, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 0, .ignoresProtect = TRUE, + .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .mirrorMoveBanned = TRUE, - .soundMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -4793,12 +4788,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "lowers the foe's Speed."), .effect = EFFECT_HIT, .power = 55, - .type = TYPE_ICE, .accuracy = 95, - .pp = 15, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 15, + .priority = 0, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, @@ -4818,13 +4813,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "if used in succession."), .effect = EFFECT_PROTECT, .power = 0, - .type = TYPE_FIGHTING, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_USER, - .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 4 : 3, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 5, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, + .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 4 : 3, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -4844,12 +4839,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "in hand 2 to 5 times."), .effect = EFFECT_MULTI_HIT, .power = 25, - .type = TYPE_GROUND, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 80, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_BONE_RUSH, @@ -4864,13 +4859,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "ensure the next move hits."), .effect = EFFECT_LOCK_ON, .power = 0, - .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 5, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_LOCK_ON, @@ -4885,12 +4880,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that confuses the user."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 120 : 90, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 15, - .target = MOVE_TARGET_RANDOM, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_RANDOM, + .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 15, + .priority = 0, .makesContact = TRUE, .instructBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -4911,16 +4906,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "rages for several turns."), .effect = EFFECT_SANDSTORM, .power = 0, - .type = TYPE_ROCK, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .windMove = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_SANDSTORM, @@ -4935,12 +4930,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the damage inflicted."), .effect = EFFECT_ABSORB, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 75 : 60, - .type = TYPE_GRASS, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_4 ? 10 : 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_4 ? 10 : 5, + .priority = 0, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .healingMove = B_HEAL_BLOCKING >= GEN_6, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, @@ -4957,13 +4952,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "1 turn, leaving at least 1HP."), .effect = EFFECT_ENDURE, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 4 : 3, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 4 : 3, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -4983,13 +4978,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "reduces its Attack."), .effect = EFFECT_ATTACK_DOWN_2, .power = 0, - .type = B_UPDATED_MOVE_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = B_UPDATED_MOVE_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -5005,12 +5000,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with rising intensity."), .effect = EFFECT_ROLLOUT, .power = 30, - .type = TYPE_ROCK, .accuracy = 90, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .instructBanned = TRUE, .parentalBondBanned = TRUE, @@ -5026,12 +5021,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sFalseSwipeDescription, .effect = EFFECT_FALSE_SWIPE, .power = 40, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 40, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 40, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -5047,13 +5042,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "sharply raises Attack."), .effect = EFFECT_SWAGGER, .power = 0, - .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 85 : 90, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -5069,16 +5064,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "user's maximum HP."), .effect = EFFECT_SOFTBOILED, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .healingMove = TRUE, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, + .healingMove = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -5094,12 +5089,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "may paralyze the foe."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -5117,6 +5112,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "An attack that intensifies\n" "on each successive hit."), + .effect = EFFECT_FURY_CUTTER, #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 40, #elif B_UPDATED_MOVE_DATA >= GEN_5 @@ -5124,13 +5120,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .power = 10, #endif - .effect = EFFECT_FURY_CUTTER, - .type = TYPE_BUG, .accuracy = 95, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, @@ -5147,12 +5142,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "wings spread wide."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_STEEL, .accuracy = 90, - .pp = 25, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 25, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_PLUS_1, @@ -5173,13 +5168,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "look that prevents escape."), .effect = EFFECT_MEAN_LOOK, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 5, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .priority = 0, .ignoresProtect = (B_UPDATED_MOVE_FLAGS >= GEN_6) || (B_UPDATED_MOVE_FLAGS <= GEN_3), .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, @@ -5196,13 +5191,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "less likely to attack."), .effect = EFFECT_ATTRACT, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 0, .magicCoatAffected = TRUE, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, @@ -5219,22 +5214,22 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "randomly while asleep."), .effect = EFFECT_SLEEP_TALK, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_DEPENDS, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_DEPENDS, + .pp = 10, .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, + .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .mimicBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -5249,18 +5244,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "all status abnormalities."), .effect = EFFECT_HEAL_BELL, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, + .pp = 5, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, + .soundMove = B_UPDATED_MOVE_FLAGS != GEN_5, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, - .soundMove = B_UPDATED_MOVE_FLAGS != GEN_5, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_HEAL_BELL, @@ -5275,12 +5270,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "in power with friendship."), .effect = EFFECT_RETURN, .power = 1, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -5296,12 +5291,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "bomb. May restore HP."), .effect = EFFECT_PRESENT, .power = 1, - .type = TYPE_NORMAL, .accuracy = 90, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -5317,12 +5312,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "if the Trainer is disliked."), .effect = EFFECT_FRUSTRATION, .power = 1, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -5338,15 +5333,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "all status problems."), .effect = EFFECT_SAFEGUARD, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 25, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 25, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -5362,13 +5357,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "then shares them equally."), .effect = EFFECT_PAIN_SPLIT, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -5383,12 +5378,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "may inflict a burn."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_FIRE, .accuracy = 95, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .thawsUser = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -5408,12 +5403,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "of random intensity."), .effect = EFFECT_MAGNITUDE, .power = 1, - .type = TYPE_GROUND, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 30, + .priority = 0, .damagesUnderground = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, @@ -5430,12 +5425,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "confusion, but inaccurate."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_FIGHTING, .accuracy = 50, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -5456,12 +5451,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "using out-thrust horns."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_BUG, .accuracy = 85, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, @@ -5477,12 +5472,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "incredible blast of breath."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -5502,13 +5497,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "keeping effects in play."), .effect = EFFECT_BATON_PASS, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 40, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 40, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, @@ -5525,16 +5520,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "last move over 2 to 6 turns."), .effect = EFFECT_ENCORE, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 5, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, - .encoreBanned = TRUE, .ignoresSubstitute = TRUE, + .encoreBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -5549,12 +5544,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "on a foe switching out."), .effect = EFFECT_PURSUIT, .power = 40, - .type = TYPE_DARK, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, @@ -5571,12 +5566,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "speed to strike the foe."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 50 : 20, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 40, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 40, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RAPIDSPIN, @@ -5604,13 +5599,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "evasiveness."), .effect = B_UPDATED_MOVE_DATA >= GEN_6 ? EFFECT_EVASION_DOWN_2 : EFFECT_EVASION_DOWN, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_BOTH, + .pp = 20, .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -5626,12 +5621,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "tail. May lower Defense."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_STEEL, .accuracy = 75, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, @@ -5651,12 +5646,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "raise the user's Attack."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_STEEL, .accuracy = 95, - .pp = 35, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 35, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_PLUS_1, @@ -5677,12 +5672,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "but it never misses."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_FIGHTING, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = -1, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = -1, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -5698,16 +5693,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "varies with the weather."), .effect = EFFECT_MORNING_SUN, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 5, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .healingMove = TRUE, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, + .healingMove = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -5723,16 +5718,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "varies with the weather."), .effect = EFFECT_SYNTHESIS, .power = 0, - .type = TYPE_GRASS, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 5, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .healingMove = TRUE, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, + .healingMove = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_SMART, @@ -5748,16 +5743,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "varies with the weather."), .effect = EFFECT_MOONLIGHT, .power = 0, - .type = B_UPDATED_MOVE_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_NORMAL, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = B_UPDATED_MOVE_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 5, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .healingMove = TRUE, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, + .healingMove = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -5771,14 +5766,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "The effectiveness varies\n" "with the user."), - .power = B_HIDDEN_POWER_DMG >= GEN_6 ? 60 : 1, .effect = EFFECT_HIDDEN_POWER, - .type = TYPE_NORMAL, + .power = B_HIDDEN_POWER_DMG >= GEN_6 ? 60 : 1, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -5793,13 +5788,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical-hit ratio."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_FIGHTING, .accuracy = 80, - .criticalHitStage = 1, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, + .criticalHitStage = 1, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, @@ -5815,14 +5810,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to tear at the foe."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, - .damagesAirborneDoubleDamage = TRUE, + .target = MOVE_TARGET_BOTH, + .pp = 20, + .priority = 0, .windMove = TRUE, + .damagesAirborneDoubleDamage = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 20, @@ -5841,13 +5836,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "type moves for 5 turns."), .effect = EFFECT_RAIN_DANCE, .power = 0, - .type = TYPE_WATER, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 5, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, @@ -5864,13 +5859,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "type moves for 5 turns."), .effect = EFFECT_SUNNY_DAY, .power = 0, - .type = TYPE_FIRE, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 5, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, @@ -5891,15 +5886,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #endif .effect = EFFECT_HIT, .power = 80, - .type = TYPE_DARK, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .bitingMove = TRUE, - .additionalEffects = ADDITIONAL_EFFECTS({ + .additionalEffects = ADDITIONAL_EFFECTS({ #if B_UPDATED_MOVE_DATA >= GEN_4 .moveEffect = MOVE_EFFECT_DEF_MINUS_1, #else @@ -5921,12 +5916,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "attack at double the power."), .effect = EFFECT_MIRROR_COAT, .power = 1, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_DEPENDS, - .priority = -5, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_DEPENDS, + .pp = 20, + .priority = -5, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .meFirstBanned = TRUE, .metronomeBanned = TRUE, @@ -5945,17 +5940,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and gives to the user."), .effect = EFFECT_PSYCH_UP, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, - .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -5970,12 +5965,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "powerful attack."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 2 : 1, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 2 : 1, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -5991,12 +5986,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "all stats."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_ROCK, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = B_UPDATED_MOVE_DATA < GEN_4, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ALL_STATS_UP, @@ -6017,12 +6012,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "lower the foe's Sp. Def."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, @@ -6040,6 +6035,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Heightens inner power to\n" "strike 2 turns later."), + .effect = EFFECT_FUTURE_SIGHT, #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 120, #elif B_UPDATED_MOVE_DATA >= GEN_5 @@ -6047,13 +6043,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .power = 80, #endif - .effect = EFFECT_FUTURE_SIGHT, - .type = TYPE_PSYCHIC, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 90, - .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 15, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, @@ -6070,12 +6065,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that may lower Defense."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 40 : 20, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, @@ -6095,12 +6090,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "a whirlpool for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 35 : 15, - .type = TYPE_WATER, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 70, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .damagesUnderwater = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_WRAP, @@ -6119,12 +6114,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "join in the attack."), .effect = EFFECT_BEAT_UP, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 1 : 10, - .type = TYPE_DARK, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -6137,15 +6132,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "A 1st-turn, 1st-strike move\n" "that causes flinching."), - .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 3 : 1, - .makesContact = B_UPDATED_MOVE_DATA >= GEN_4, .effect = EFFECT_FIRST_TURN_ONLY, .power = 40, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 3 : 1, + .makesContact = B_UPDATED_MOVE_DATA >= GEN_4, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 100, @@ -6168,14 +6163,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "turns and prevents sleep."), .effect = EFFECT_UPROAR, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 50, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_RANDOM, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .target = MOVE_TARGET_RANDOM, + .pp = 10, + .priority = 0, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -6196,15 +6191,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "3 turns."), .effect = EFFECT_STOCKPILE, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = B_UPDATED_MOVE_DATA >= GEN_4 ? 20 : 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = B_UPDATED_MOVE_DATA >= GEN_4 ? 20 : 10, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -6220,12 +6215,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "(the more the better)."), .effect = EFFECT_SPIT_UP, .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 1 : 100, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -6241,16 +6236,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and restores HP."), .effect = EFFECT_SWALLOW, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .healingMove = TRUE, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, + .healingMove = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -6266,12 +6261,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe. May inflict a burn."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 95 : 100, - .type = TYPE_FIRE, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 10, + .priority = 0, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -6291,13 +6286,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "strikes every turn."), .effect = EFFECT_HAIL, .power = 0, - .type = TYPE_ICE, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, @@ -6314,13 +6309,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "successive use of a move."), .effect = EFFECT_TORMENT, .power = 0, - .type = TYPE_DARK, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -6336,13 +6331,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "raises its Sp. Atk."), .effect = EFFECT_FLATTER, .power = 0, - .type = TYPE_DARK, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -6358,13 +6353,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with intense fire."), .effect = EFFECT_WILL_O_WISP, .power = 0, - .type = TYPE_FIRE, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 85 : 75, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -6380,13 +6375,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the foe's abilities."), .effect = EFFECT_MEMENTO, .power = 0, - .type = TYPE_DARK, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_RESTORE_REPLACEMENT_HP }, + .priority = 0, .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -6401,12 +6396,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "paralyzed, or poisoned."), .effect = EFFECT_FACADE, .power = 70, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -6422,21 +6417,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user flinches if hit."), .effect = EFFECT_FOCUS_PUNCH, .power = 150, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = -3, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = -3, .makesContact = TRUE, - .mirrorMoveBanned = TRUE, .punchingMove = TRUE, + .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, - .sleepTalkBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .instructBanned = TRUE, .assistBanned = TRUE, + .sleepTalkBanned = TRUE, + .instructBanned = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -6451,14 +6446,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foes, but also heals them."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 70 : 60, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = STATUS1_PARALYSIS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, + .argument = STATUS1_PARALYSIS, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_REMOVE_STATUS, }), @@ -6476,13 +6471,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foes attack only the user."), .effect = EFFECT_FOLLOW_ME, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = B_UPDATED_MOVE_DATA >= GEN_6 ? 2 : 3, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = B_UPDATED_MOVE_DATA >= GEN_6 ? 2 : 3, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -6502,19 +6497,19 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "depending on the location."), .effect = EFFECT_NATURE_POWER, .power = 1, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_DEPENDS, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_DEPENDS, + .pp = 20, + .priority = 0, + .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, - .mimicBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -6529,15 +6524,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "electric move used next."), .effect = EFFECT_CHARGE, .power = 0, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -6553,15 +6548,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "using attack moves."), .effect = EFFECT_TAUNT, .power = 0, - .type = TYPE_DARK, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, - .ignoresSubstitute = TRUE, + .priority = 0, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_TAUNT, @@ -6576,13 +6571,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "recipient's moves."), .effect = EFFECT_HELPING_HAND, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = B_UPDATED_MOVE_DATA >= GEN_4 ? MOVE_TARGET_ALLY : MOVE_TARGET_USER, - .priority = 5, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = B_UPDATED_MOVE_DATA >= GEN_4 ? MOVE_TARGET_ALLY : MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 5, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -6603,13 +6598,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "held items."), .effect = EFFECT_TRICK, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, + .priority = 0, .metronomeBanned = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, @@ -6627,13 +6622,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "copies its special ability."), .effect = EFFECT_ROLE_PLAY, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -6651,16 +6646,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "It takes time to work."), .effect = EFFECT_WISH, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, - .healingMove = TRUE, - .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .healingMove = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -6676,21 +6671,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "of the partner's moves."), .effect = EFFECT_ASSIST, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_DEPENDS, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_DEPENDS, + .pp = 20, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, + .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, - .mimicBanned = TRUE, .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -6705,15 +6700,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user can't switch out."), .effect = EFFECT_INGRAIN, .power = 0, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, @@ -6730,12 +6725,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "but lowers abilities."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_DEF_DOWN, @@ -6755,13 +6750,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "back to the attacker."), .effect = EFFECT_MAGIC_COAT, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_DEPENDS, - .priority = 4, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_DEPENDS, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, + .priority = 4, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, @@ -6778,15 +6773,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "one more use."), .effect = EFFECT_RECYCLE, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, - .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_SMART, @@ -6800,12 +6795,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sRevengeDescription, .effect = EFFECT_REVENGE, .power = 60, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = -4, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = -4, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -6821,12 +6816,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "REFLECT and causes damage."), .effect = EFFECT_BRICK_BREAK, .power = 75, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_COOL, @@ -6842,13 +6837,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "then sleeping next turn."), .effect = EFFECT_YAWN, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -6864,12 +6859,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "item to prevent its use."), .effect = EFFECT_KNOCK_OFF, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 65 : 20, - .type = TYPE_DARK, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_KNOCK_OFF, @@ -6888,12 +6883,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "is lower than the foe's HP."), .effect = EFFECT_ENDEAVOR, .power = 1, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .parentalBondBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, @@ -6910,12 +6905,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the more damage caused."), .effect = EFFECT_ERUPTION, .power = 150, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 5, + .priority = 0, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -6930,13 +6925,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "abilities with the target."), .effect = EFFECT_SKILL_SWAP, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_SMART, @@ -6952,15 +6947,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "moves known by the user."), .effect = EFFECT_IMPRISON, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, - .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, @@ -6977,15 +6972,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "or a burn."), .effect = EFFECT_REFRESH, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -7001,13 +6996,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "all PP of foe's last move."), .effect = EFFECT_GRUDGE, .power = 0, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 5, .zMove = { .effect = Z_EFFECT_FOLLOW_ME }, + .priority = 0, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -7025,13 +7020,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "move the target uses next."), .effect = EFFECT_SNATCH, .power = 0, - .type = TYPE_DARK, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_DEPENDS, - .priority = 4, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_DEPENDS, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, + .priority = 4, .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, @@ -7050,12 +7045,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that vary by location."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SECRET_POWER, .chance = 30, @@ -7074,16 +7069,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "turn and strikes next turn."), .effect = EFFECT_SEMI_INVULNERABLE, .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 80 : 60, - .type = TYPE_WATER, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, .skyBattleBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_PKMNHIDUNDERWATER, COMPRESS_BITS(STATUS3_UNDERWATER)), .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, @@ -7100,12 +7095,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "strike the foe 2 to 5 times."), .effect = EFFECT_MULTI_HIT, .power = 15, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -7121,15 +7116,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "depending on the location."), .effect = EFFECT_CAMOUFLAGE, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, @@ -7145,15 +7140,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "raises Sp. Atk."), .effect = B_UPDATED_MOVE_DATA >= GEN_5 ? EFFECT_SPECIAL_ATTACK_UP_3 : EFFECT_SPECIAL_ATTACK_UP_2, .power = 0, - .type = TYPE_BUG, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -7169,12 +7164,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "light. May lower Sp. Def."), .effect = EFFECT_HIT, .power = (B_UPDATED_MOVE_DATA >= GEN_9) ? 95 : 70, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, .chance = 50, @@ -7193,12 +7188,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "down. May lower Sp. Atk."), .effect = EFFECT_HIT, .power = (B_UPDATED_MOVE_DATA >= GEN_9) ? 95 : 70, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, @@ -7218,13 +7213,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to sharply reduce Attack."), .effect = EFFECT_ATTACK_DOWN_2, .power = 0, - .type = TYPE_FLYING, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .danceMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, @@ -7241,13 +7236,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the scene."), .effect = EFFECT_TEETER_DANCE, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 0, .danceMove = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_4, .contestEffect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, @@ -7264,13 +7259,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "hit ratio. May cause a burn."), .effect = EFFECT_HIT, .power = 85, - .type = TYPE_FIRE, .accuracy = 90, - .criticalHitStage = 1, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, + .criticalHitStage = 1, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -7290,13 +7285,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "raise electrical resistance."), .effect = EFFECT_MUD_SPORT, .power = 0, - .type = TYPE_GROUND, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, @@ -7314,12 +7309,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "power on successive hits."), .effect = EFFECT_ROLLOUT, .power = 30, - .type = TYPE_ICE, .accuracy = 90, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .ballisticMove = TRUE, .instructBanned = TRUE, @@ -7338,12 +7333,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May cause flinching."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_4, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -7364,16 +7359,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "half the maximum HP."), .effect = EFFECT_RESTORE_HP, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .healingMove = TRUE, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, + .healingMove = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -7389,12 +7384,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "sound waves to injure."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 10, + .priority = 0, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, @@ -7411,12 +7406,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May badly poison the foe."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_POISON, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -7437,12 +7432,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "claws. May lower Defense."), .effect = EFFECT_HIT, .power = 75, - .type = TYPE_NORMAL, .accuracy = 95, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, @@ -7462,12 +7457,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "user immobile the next turn."), .effect = EFFECT_HIT, .power = 150, - .type = TYPE_FIRE, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, .self = TRUE, @@ -7486,12 +7481,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "user immobile the next turn."), .effect = EFFECT_HIT, .power = 150, - .type = TYPE_WATER, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, .self = TRUE, @@ -7510,12 +7505,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May raise Attack."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 100, - .type = TYPE_STEEL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 85, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -7537,12 +7532,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the foe into flinching."), .effect = EFFECT_HIT, .power = 30, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_4, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -7563,12 +7558,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "change with the weather."), .effect = EFFECT_WEATHER_BALL, .power = 50, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, @@ -7584,15 +7579,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with a soothing scent."), .effect = EFFECT_HEAL_BELL, .power = 0, - .type = TYPE_GRASS, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, + .pp = 5, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_SMART, @@ -7608,13 +7603,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "lower the foe's Sp. Def."), .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2, .power = 0, - .type = TYPE_DARK, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_SMART, @@ -7630,13 +7625,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical-hit ratio."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 55, - .type = TYPE_FLYING, .accuracy = 95, - .criticalHitStage = 1, - .pp = 25, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 25, + .priority = 0, + .criticalHitStage = 1, .windMove = TRUE, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, @@ -7653,12 +7648,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "but sharply lowers Sp. Atk."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 140, - .type = TYPE_FIRE, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = B_UPDATED_MOVE_DATA < GEN_4, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_TWO_DOWN, @@ -7678,15 +7673,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to heighten evasiveness."), .effect = EFFECT_FORESIGHT, .power = 0, - .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, - .pp = 40, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 40, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, - .ignoresSubstitute = TRUE, + .priority = 0, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -7701,12 +7696,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with rocks and cuts Speed."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 50, - .type = TYPE_ROCK, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 95 : 80, - .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 15 : 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 15 : 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 100, @@ -7725,12 +7720,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "raise abilities."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_BUG, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .windMove = B_EXTRAPOLATED_MOVE_FLAGS, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ALL_STATS_UP, @@ -7751,16 +7746,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that sharply lowers Sp. Def."), .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2, .power = 0, - .type = TYPE_STEEL, .accuracy = 85, - .pp = 40, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 40, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .priority = 0, .magicCoatAffected = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_METAL_SOUND, @@ -7775,16 +7770,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with a pleasant melody."), .effect = EFFECT_SLEEP, .power = 0, - .type = TYPE_GRASS, .accuracy = 55, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .priority = 0, .magicCoatAffected = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -7799,13 +7794,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "lower Attack and Defense."), .effect = EFFECT_TICKLE, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -7821,15 +7816,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with a mystic power."), .effect = EFFECT_COSMIC_POWER, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -7845,12 +7840,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "user's HP is high."), .effect = EFFECT_ERUPTION, .power = 150, - .type = TYPE_WATER, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 5, + .priority = 0, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -7865,12 +7860,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "may confuse the foe."), .effect = EFFECT_HIT, .power = 75, - .type = TYPE_BUG, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, .chance = 10, @@ -7889,12 +7884,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "is thrown from shadows."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_GHOST, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, @@ -7911,12 +7906,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "power. May cause flinching."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 30, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 30, + .priority = 0, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_4, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -7936,12 +7931,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "leaping into the sky."), .effect = EFFECT_HIT, .power = 85, - .type = TYPE_FIGHTING, .accuracy = 90, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .damagesAirborne = TRUE, @@ -7959,12 +7954,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "quicksand for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 35 : 15, - .type = TYPE_GROUND, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 70, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_WRAP, }), @@ -7982,12 +7977,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "causes fainting if it hits."), .effect = EFFECT_OHKO, .power = 1, - .type = TYPE_ICE, .accuracy = 30, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -8002,12 +7997,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May lower accuracy."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, - .type = TYPE_WATER, .accuracy = 85, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 10, + .priority = 0, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, @@ -8027,12 +8022,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to strike the foe."), .effect = EFFECT_MULTI_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 25 : 10, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 30, + .priority = 0, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -8048,12 +8043,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "unavoidable attack."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_FLYING, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, @@ -8070,12 +8065,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "2 to 5 icicles in a row."), .effect = EFFECT_MULTI_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 25 : 10, - .type = TYPE_ICE, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 30, + .priority = 0, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -8090,15 +8085,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to sharply raise Defense."), .effect = EFFECT_DEFENSE_UP_2, .power = 0, - .type = TYPE_STEEL, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 15, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -8114,13 +8109,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "prevent escape."), .effect = EFFECT_MEAN_LOOK, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 5, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .ignoresProtect = (B_UPDATED_MOVE_FLAGS >= GEN_6) || (B_UPDATED_MOVE_FLAGS <= GEN_3), .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, @@ -8135,19 +8130,19 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Howls to raise the spirit\n" "and boosts Attack."), - .power = 0, .effect = B_UPDATED_MOVE_DATA >= GEN_8 ? EFFECT_ATTACK_UP_USER_ALLY : EFFECT_ATTACK_UP, - .type = TYPE_NORMAL, + .power = 0, .accuracy = 0, - .pp = 40, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 40, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .soundMove = B_UPDATED_MOVE_FLAGS >= GEN_8, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -8162,12 +8157,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "claws."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, @@ -8183,12 +8178,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "user immobile the next turn."), .effect = EFFECT_HIT, .power = 150, - .type = TYPE_GRASS, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, @@ -8208,15 +8203,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "both Attack and Defense."), .effect = EFFECT_BULK_UP, .power = 0, - .type = TYPE_FIGHTING, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -8232,17 +8227,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "next turn. May paralyze."), .effect = EFFECT_SEMI_INVULNERABLE, .power = 85, - .type = TYPE_FLYING, .accuracy = 85, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .gravityBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_PKMNSPRANGUP, COMPRESS_BITS(STATUS3_ON_AIR)), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -8262,12 +8257,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "reduces Speed."), .effect = EFFECT_HIT, .power = 55, - .type = TYPE_GROUND, .accuracy = 95, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 100, @@ -8286,13 +8281,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "ratio. May also poison."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_POISON, .accuracy = 100, - .criticalHitStage = 1, - .pp = 25, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 25, + .priority = 0, + .criticalHitStage = 1, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, @@ -8312,12 +8307,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "item held by the foe."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 60 : 40, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 25 : 40, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 25 : 40, + .priority = 0, .makesContact = B_UPDATED_MOVE_DATA >= GEN_4, .meFirstBanned = TRUE, .metronomeBanned = TRUE, @@ -8340,13 +8335,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "slightly hurts the user."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_ELECTRIC, .accuracy = 100, - .recoil = 33, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, + .recoil = 33, .makesContact = TRUE, #if B_UPDATED_MOVE_DATA >= GEN_4 .additionalEffects = ADDITIONAL_EFFECTS({ @@ -8368,12 +8363,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that cannot be evaded."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_GRASS, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -8388,13 +8383,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "raise resistance to fire."), .effect = EFFECT_WATER_SPORT, .power = 0, - .type = TYPE_WATER, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, @@ -8412,15 +8407,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "by focusing the mind."), .effect = EFFECT_CALM_MIND, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -8436,13 +8431,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical-hit ratio."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 90 : 70, - .type = TYPE_GRASS, .accuracy = 100, - .criticalHitStage = 1, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, + .criticalHitStage = 1, .makesContact = TRUE, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, @@ -8459,16 +8454,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attack and Speed."), .effect = EFFECT_DRAGON_DANCE, .power = 0, - .type = TYPE_DRAGON, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .danceMove = TRUE, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, + .danceMove = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -8484,12 +8479,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "2 to 5 times in a row."), .effect = EFFECT_MULTI_HIT, .power = 25, - .type = TYPE_ROCK, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 80, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .ballisticMove = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -8505,12 +8500,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "electric attack."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_ELECTRIC, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -8525,12 +8520,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "waves. May confuse the foe."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_WATER, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .pulseMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, @@ -8550,12 +8545,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "attack 2 turns later."), .effect = EFFECT_FUTURE_SIGHT, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 140 : 120, - .type = TYPE_STEEL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 85, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, @@ -8572,12 +8567,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "but sharply lowers Sp. Atk."), .effect = EFFECT_HIT, .power = 140, - .type = TYPE_PSYCHIC, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_TWO_DOWN, .self = TRUE, @@ -8596,16 +8591,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "half of its max HP."), .effect = EFFECT_ROOST, .power = 0, - .type = TYPE_FLYING, .accuracy = 0, - .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .healingMove = TRUE, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, + .healingMove = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, @@ -8621,13 +8616,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "negating levitation."), .effect = EFFECT_GRAVITY, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 5, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, @@ -8645,15 +8640,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Dark-type's immunities."), .effect = EFFECT_MIRACLE_EYE, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 40, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 40, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, - .ignoresSubstitute = TRUE, + .priority = 0, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -8668,14 +8663,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foes, but also heals them."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 70 : 60, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = STATUS1_SLEEP, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, + .argument = STATUS1_SLEEP, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_REMOVE_STATUS, }), @@ -8693,12 +8688,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that also lowers Speed."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_FIGHTING, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -8719,12 +8714,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "more damage to faster foes."), .effect = EFFECT_GYRO_BALL, .power = 1, - .type = TYPE_STEEL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, @@ -8739,15 +8734,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sHealingWishDescription, .effect = EFFECT_HEALING_WISH, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, - .healingMove = TRUE, - .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .target = MOVE_TARGET_USER, + .pp = 10, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .healingMove = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -8763,12 +8758,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with half HP."), .effect = EFFECT_BRINE, .power = 65, - .type = TYPE_WATER, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -8783,12 +8778,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with the held Berry."), .effect = EFFECT_NATURAL_GIFT, .power = 1, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -8803,12 +8798,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "using moves like Protect."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 30 : 50, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 2, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 2, .ignoresProtect = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_6, .metronomeBanned = TRUE, @@ -8829,12 +8824,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sPluckDescription, .effect = EFFECT_HIT, .power = 60, - .type = TYPE_FLYING, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BUG_BITE, @@ -8853,16 +8848,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that raises Speed."), .effect = EFFECT_TAILWIND, .power = 0, - .type = TYPE_FLYING, .accuracy = 0, - .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 15 : 30, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 15 : 30, .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, + .priority = 0, + .ignoresProtect = TRUE, .snatchAffected = TRUE, .windMove = TRUE, - .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_SMART, @@ -8878,16 +8873,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "one of its stats."), .effect = EFFECT_ACUPRESSURE, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 30, - .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, + .pp = 30, .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -8902,12 +8897,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "greater power."), .effect = EFFECT_METAL_BURST, .power = 1, - .type = TYPE_STEEL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_DEPENDS, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_DEPENDS, + .pp = 10, + .priority = 0, .meFirstBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -8921,12 +8916,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sUTurnDescription, .effect = EFFECT_HIT_ESCAPE, .power = 70, - .type = TYPE_BUG, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -8940,12 +8935,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sCloseCombatDescription, .effect = EFFECT_HIT, .power = 120, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_SPDEF_DOWN, @@ -8965,12 +8960,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "if the user moves last."), .effect = EFFECT_PAYBACK, .power = 50, - .type = TYPE_DARK, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -8986,12 +8981,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "if the foe has been hurt."), .effect = EFFECT_ASSURANCE, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 50, - .type = TYPE_DARK, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -9007,13 +9002,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "using any items."), .effect = EFFECT_EMBARGO, .power = 0, - .type = TYPE_DARK, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 0, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -9029,12 +9024,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with the held item."), .effect = EFFECT_FLING, .power = 1, - .type = TYPE_DARK, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .parentalBondBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -9050,13 +9045,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to the foe."), .effect = EFFECT_PSYCHO_SHIFT, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPATK_UP_2 }, + .priority = 0, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -9071,12 +9066,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the more damage it does."), .effect = EFFECT_TRUMP_CARD, .power = 1, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -9092,13 +9087,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "recovering any HP."), .effect = EFFECT_HEAL_BLOCK, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_BOTH, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPATK_UP_2 }, + .priority = 0, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -9112,12 +9107,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sWringOutDescription, .effect = EFFECT_WRING_OUT, .power = 1, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_SMART, @@ -9133,15 +9128,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and Defense stats."), .effect = EFFECT_POWER_TRICK, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, - .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -9157,13 +9152,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the foe's ability."), .effect = EFFECT_GASTRO_ACID, .power = 0, - .type = TYPE_POISON, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -9179,15 +9174,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "landing critical hits."), .effect = EFFECT_LUCKY_CHANT, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 30, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 30, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, - .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -9203,23 +9198,23 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with greater power."), .effect = EFFECT_ME_FIRST, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, + .priority = 0, .ignoresSubstitute = TRUE, - .metronomeBanned = TRUE, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, + .mimicBanned = TRUE, + .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, - .mimicBanned = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -9234,22 +9229,22 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "move used by a foe."), .effect = EFFECT_COPYCAT, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_DEPENDS, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_DEPENDS, + .pp = 20, .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, + .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, - .mimicBanned = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -9264,13 +9259,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and Sp. Atk with the foe."), .effect = EFFECT_POWER_SWAP, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -9286,13 +9281,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and Sp. Def with the foe."), .effect = EFFECT_GUARD_SWAP, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -9308,12 +9303,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe has powered up."), .effect = EFFECT_PUNISHMENT, .power = 60, - .type = TYPE_DARK, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_SMART, @@ -9329,12 +9324,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "other move has been used."), .effect = EFFECT_LAST_RESORT, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 140 : 130, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -9350,13 +9345,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "giving it Insomnia."), .effect = EFFECT_WORRY_SEED, .power = 0, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -9370,12 +9365,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sSuckerPunchDescription, .effect = EFFECT_SUCKER_PUNCH, .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 70 : 80, - .type = TYPE_DARK, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 1, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 1, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_SMART, @@ -9391,16 +9386,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe switching in."), .effect = EFFECT_TOXIC_SPIKES, .power = 0, - .type = TYPE_POISON, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_OPPONENTS_FIELD, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_OPPONENTS_FIELD, + .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -9416,13 +9411,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with the foe."), .effect = EFFECT_HEART_SWAP, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, + .priority = 0, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_COOL, @@ -9438,15 +9433,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that restores HP."), .effect = EFFECT_AQUA_RING, .power = 0, - .type = TYPE_WATER, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, - .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -9462,17 +9457,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "electromagnetism."), .effect = EFFECT_MAGNET_RISE, .power = 0, - .type = TYPE_ELECTRIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, - .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .gravityBanned = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -9487,13 +9482,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe. Also hurts the user."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_FIRE, .accuracy = 100, - .recoil = 33, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, + .recoil = 33, .makesContact = TRUE, .thawsUser = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -9514,12 +9509,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "may paralyze the foe."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -9539,12 +9534,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that cannot be evaded."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 90, - .type = TYPE_FIGHTING, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .pulseMove = TRUE, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, @@ -9561,15 +9556,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "sharply raise Speed."), .effect = EFFECT_SPEED_UP_2, .power = 0, - .type = TYPE_ROCK, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -9585,12 +9580,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "may poison the foe."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_POISON, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, @@ -9610,12 +9605,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "aura. May cause flinching."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_DARK, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .pulseMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -9635,13 +9630,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical-hit ratio."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_DARK, .accuracy = 100, - .criticalHitStage = 1, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, + .criticalHitStage = 1, .makesContact = TRUE, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, @@ -9658,12 +9653,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "like a wave to attack."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_WATER, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -9679,12 +9674,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "is fired at the foe."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, @@ -9700,12 +9695,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "air. May cause flinching."), .effect = EFFECT_HIT, .power = 75, - .type = TYPE_FLYING, .accuracy = 95, - .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 15 : 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 15 : 20, + .priority = 0, .slicingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -9725,12 +9720,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "scythes, claws, etc."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_BUG, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, @@ -9747,12 +9742,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "may lower Sp. Def."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_BUG, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -9773,12 +9768,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "damage the foe."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 85 : 90, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .pulseMove = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -9794,12 +9789,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May cause flinching."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_DRAGON, .accuracy = 75, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_6, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -9820,12 +9815,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that sparkle like diamonds."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 70, - .type = TYPE_ROCK, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -9838,12 +9833,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sMegaDrainDescription, .effect = EFFECT_ABSORB, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 75 : 60, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 5, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .healingMove = B_HEAL_BLOCKING >= GEN_6, @@ -9861,12 +9856,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "a wave that strikes first."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 1, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 30, + .priority = 1, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -9881,12 +9876,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May lower Sp. Def."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_FIGHTING, .accuracy = 70, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, @@ -9906,12 +9901,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "attack. May lower Sp. Def."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 80, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, @@ -9931,13 +9926,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "also hurts the user."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_FLYING, .accuracy = 100, - .recoil = 33, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, + .recoil = 33, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -9953,12 +9948,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "power. May lower Sp. Def."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_GROUND, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, @@ -9978,13 +9973,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "faster than the eye can see."), .effect = EFFECT_TRICK, .power = 0, - .type = TYPE_DARK, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, + .priority = 0, .metronomeBanned = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, @@ -10000,12 +9995,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sHyperBeamDescription, .effect = EFFECT_HIT, .power = 150, - .type = TYPE_NORMAL, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, @@ -10025,15 +10020,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "sharply boost Sp. Atk."), .effect = EFFECT_SPECIAL_ATTACK_UP_2, .power = 0, - .type = TYPE_DARK, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -10049,12 +10044,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "let. It always hits first."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_STEEL, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 1, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 30, + .priority = 1, .makesContact = TRUE, .punchingMove = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, @@ -10069,12 +10064,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sRevengeDescription, .effect = EFFECT_REVENGE, .power = 60, - .type = TYPE_ICE, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = -4, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_BOTH, + .pp = 10, + .priority = -4, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -10090,12 +10085,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "always strike first."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_ICE, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 1, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 30, + .priority = 1, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -10110,13 +10105,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical-hit ratio."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_GHOST, .accuracy = 100, - .criticalHitStage = 1, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, + .criticalHitStage = 1, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -10132,12 +10127,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "leave the foe paralyzed."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_ELECTRIC, .accuracy = 95, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -10162,12 +10157,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "leave the foe frozen."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_ICE, .accuracy = 95, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -10192,12 +10187,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "leave the foe with a burn."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_FIRE, .accuracy = 95, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -10222,12 +10217,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to strike first."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 1, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 30, + .priority = 1, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_SMART, @@ -10243,12 +10238,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "damage and cut accuracy."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_GROUND, .accuracy = 85, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, @@ -10268,13 +10263,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical-hit ratio."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_PSYCHIC, .accuracy = 100, - .criticalHitStage = 1, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, + .criticalHitStage = 1, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, @@ -10290,12 +10285,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "butt. May cause flinching."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_PSYCHIC, .accuracy = 90, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -10315,12 +10310,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "damage and cut accuracy."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_STEEL, .accuracy = 85, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, .chance = 30, @@ -10339,12 +10334,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that may lower Sp. Def."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_STEEL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, .chance = 10, @@ -10363,12 +10358,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "confuse the foe."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_NORMAL, .accuracy = 85, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, @@ -10388,13 +10383,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "lowers evasion."), .effect = EFFECT_DEFOG, .power = 0, - .type = TYPE_FLYING, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, + .priority = 0, //.ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, @@ -10411,13 +10406,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "first for 5 turns."), .effect = EFFECT_TRICK_ROOM, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = -7, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 5, .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, + .priority = -7, .ignoresProtect = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -10433,12 +10428,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Harshly lowers the Sp. Atk."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 140, - .type = TYPE_DRAGON, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_TWO_DOWN, .self = TRUE, @@ -10457,12 +10452,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "city. May paralyze them."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 15, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 30, @@ -10479,12 +10474,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sLavaPlumeDescription, .effect = EFFECT_HIT, .power = 80, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 15, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 30, @@ -10503,12 +10498,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Harshly lowers the Sp. Atk."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 140, - .type = TYPE_GRASS, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_TWO_DOWN, .self = TRUE, @@ -10527,12 +10522,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with vines or tentacles."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_GRASS, .accuracy = 85, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -10546,12 +10541,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sHyperBeamDescription, .effect = EFFECT_HIT, .power = 150, - .type = TYPE_ROCK, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, @@ -10571,13 +10566,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe and do critical damage."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_POISON, .accuracy = 100, - .criticalHitStage = 1, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, + .criticalHitStage = 1, .makesContact = TRUE, .slicingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -10598,12 +10593,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the foe. May also poison."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_POISON, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 70, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 30, @@ -10622,12 +10617,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "head. May cause flinching."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_STEEL, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -10647,12 +10642,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "strikes without fail."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_STEEL, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_COOL, @@ -10668,13 +10663,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical-hit ratio."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_ROCK, .accuracy = 80, - .criticalHitStage = 1, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, + .criticalHitStage = 1, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -10689,13 +10684,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "sharply reduce its Sp. Atk."), .effect = EFFECT_CAPTIVATE, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_BOTH, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -10711,15 +10706,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "hurt a foe switching in."), .effect = EFFECT_STEALTH_ROCK, .power = 0, - .type = TYPE_ROCK, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_OPPONENTS_FIELD, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_OPPONENTS_FIELD, + .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, - .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .priority = 0, .ignoresProtect = TRUE, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -10735,12 +10730,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "more damage to heavier foes."), .effect = EFFECT_LOW_KICK, .power = 1, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, @@ -10757,21 +10752,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that causes confusion."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 65 : 60, - .type = TYPE_FLYING, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_SPECIAL, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_6, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, #if B_UPDATED_MOVE_DATA >= GEN_6 @@ -10796,12 +10791,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "kind of Plate held."), .effect = EFFECT_CHANGE_TYPE_ON_ITEM, .power = 100, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = HOLD_EFFECT_PLATE, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, @@ -10815,12 +10810,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sPluckDescription, .effect = EFFECT_HIT, .power = 60, - .type = TYPE_BUG, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BUG_BITE, @@ -10839,12 +10834,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May raise Sp. Atk."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_ELECTRIC, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_PLUS_1, .self = TRUE, @@ -10864,13 +10859,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user gets hurt too."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_GRASS, .accuracy = 100, - .recoil = 33, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, + .recoil = 33, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -10886,12 +10881,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "at the foe at a high speed."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_WATER, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 1, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 1, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -10907,13 +10902,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical-hit ratio."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_BUG, .accuracy = 100, - .criticalHitStage = 1, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, + .criticalHitStage = 1, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_ATTACK_ORDER, @@ -10928,15 +10923,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with a living shield."), .effect = EFFECT_COSMIC_POWER, .power = 0, - .type = TYPE_BUG, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -10952,16 +10947,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "up to heal half its max HP."), .effect = EFFECT_RESTORE_HP, .power = 0, - .type = TYPE_BUG, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .healingMove = TRUE, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, + .healingMove = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, @@ -10977,13 +10972,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "seriously hurts the user."), .effect = EFFECT_HIT, .power = 150, - .type = TYPE_ROCK, .accuracy = 80, - .recoil = 50, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, + .recoil = 50, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -10999,14 +10994,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "etc. Strikes twice."), .effect = EFFECT_HIT, .power = 35, - .type = TYPE_NORMAL, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, - .makesContact = TRUE, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .strikeCount = 2, + .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -11021,12 +11016,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "user immobile the next turn."), .effect = EFFECT_HIT, .power = 150, - .type = TYPE_DRAGON, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, .self = TRUE, @@ -11045,13 +11040,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical-hit ratio."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_DRAGON, .accuracy = 95, - .criticalHitStage = 1, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, + .criticalHitStage = 1, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -11064,17 +11059,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sHealingWishDescription, .effect = EFFECT_HEALING_WISH, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, - .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .target = MOVE_TARGET_USER, + .pp = 10, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, - .healingMove = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .danceMove = TRUE, + .healingMove = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -11087,12 +11082,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sWringOutDescription, .effect = EFFECT_WRING_OUT, .power = 1, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -11108,12 +11103,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "of fire for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 120, - .type = TYPE_FIRE, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 75 : 70, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_WRAP, }), @@ -11131,13 +11126,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "darkness, inducing Sleep."), .effect = EFFECT_DARK_VOID, .power = 0, - .type = TYPE_DARK, .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 50 : 80, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_BOTH, + .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 0, .magicCoatAffected = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, @@ -11154,12 +11149,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "sharply reduces Sp. Def."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_GRASS, .accuracy = 85, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_2, .chance = 40, @@ -11178,12 +11173,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "raise all stats."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .windMove = B_EXTRAPOLATED_MOVE_FLAGS, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ALL_STATS_UP, @@ -11202,18 +11197,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sShadowForceDescription, .effect = EFFECT_SEMI_INVULNERABLE, .power = 120, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .ignoresProtect = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_VANISHEDINSTANTLY, COMPRESS_BITS(STATUS3_PHANTOM_FORCE)), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FEINT, @@ -11232,15 +11227,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attack and Accuracy."), .effect = EFFECT_ATTACK_ACCURACY_UP, .power = 0, - .type = TYPE_DARK, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 15, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -11256,18 +11251,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "for one turn."), .effect = EFFECT_PROTECT, .power = 0, - .type = TYPE_ROCK, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 3, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_STATUS, - .argument = TRUE, // Protects the whole side. + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, - .snatchAffected = TRUE, + .priority = 3, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .argument = TRUE, // Protects the whole side. .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -11282,13 +11277,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and Sp. Def with the foe."), .effect = EFFECT_GUARD_SPLIT, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -11304,13 +11299,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and Sp. Atk with the foe."), .effect = EFFECT_POWER_SPLIT, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_SMART, @@ -11326,13 +11321,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "are swapped for 5 turns."), .effect = EFFECT_WONDER_ROOM, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = B_UPDATED_MOVE_DATA >= GEN_6 ? 0 : -7, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .priority = B_UPDATED_MOVE_DATA >= GEN_6 ? 0 : -7, .ignoresProtect = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -11346,12 +11341,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sPsyshockDescription, .effect = EFFECT_PSYSHOCK, .power = 80, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -11366,12 +11361,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe is poisoned."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, .power = 65, - .type = TYPE_POISON, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = STATUS1_PSN_ANY, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -11387,15 +11382,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "sharply boost Speed."), .effect = EFFECT_AUTOTOMIZE, .power = 0, - .type = TYPE_STEEL, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 15, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_SMART, @@ -11411,15 +11406,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foes attack only the user."), .effect = EFFECT_FOLLOW_ME, .power = 0, - .type = TYPE_BUG, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = B_UPDATED_MOVE_DATA >= GEN_6 ? 2 : 3, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .powderMove = TRUE, + .priority = B_UPDATED_MOVE_DATA >= GEN_6 ? 2 : 3, .ignoresProtect = TRUE, + .powderMove = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, @@ -11438,13 +11433,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "easier to hit for 3 turns."), .effect = EFFECT_TELEKINESIS, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .gravityBanned = TRUE, .contestEffect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, @@ -11461,13 +11456,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "effects for 5 turns."), .effect = EFFECT_MAGIC_ROOM, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = B_UPDATED_MOVE_DATA >= GEN_6 ? 0 : -7, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .priority = B_UPDATED_MOVE_DATA >= GEN_6 ? 0 : -7, .ignoresProtect = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -11483,12 +11478,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe down to the ground."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_ROCK, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .damagesAirborne = TRUE, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -11506,14 +11501,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sStormThrowDescription, .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 40, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, - .makesContact = TRUE, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .alwaysCriticalHit = TRUE, + .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -11528,12 +11523,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "damage to all foes."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLAME_BURST, .self = TRUE, @@ -11552,12 +11547,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "of sludge. May also poison."), .effect = EFFECT_HIT, .power = 95, - .type = TYPE_POISON, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 10, @@ -11576,16 +11571,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sp. Def and Speed."), .effect = EFFECT_QUIVER_DANCE, .power = 0, - .type = TYPE_BUG, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .danceMove = TRUE, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, + .danceMove = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -11599,12 +11594,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sHeavySlamDescription, .effect = EFFECT_HEAT_CRASH, .power = 1, - .type = TYPE_STEEL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_7, .skyBattleBanned = TRUE, @@ -11622,12 +11617,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "damages same-type foes."), .effect = EFFECT_SYNCHRONOISE, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 120 : 70, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 10 : 15, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 10 : 15, + .priority = 0, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -11642,12 +11637,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "damage to slower foes."), .effect = EFFECT_ELECTRO_BALL, .power = 1, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_COOL, @@ -11663,13 +11658,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "making it Water-type."), .effect = EFFECT_SOAK, .power = 0, - .type = TYPE_WATER, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -11685,12 +11680,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "flames. Raises Speed."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_PLUS_1, @@ -11711,15 +11706,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Defense and Accuracy."), .effect = EFFECT_COIL, .power = 0, - .type = TYPE_POISON, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -11735,12 +11730,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "lowering its Speed."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 65 : 60, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, @@ -11760,12 +11755,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sharply reduces Sp. Def."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_POISON, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_2, @@ -11785,12 +11780,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the more damage caused."), .effect = EFFECT_FOUL_PLAY, .power = 95, - .type = TYPE_DARK, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_COOL, @@ -11806,13 +11801,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe's ability to Simple."), .effect = EFFECT_SIMPLE_BEAM, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -11828,13 +11823,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "user, gaining its ability."), .effect = EFFECT_ENTRAINMENT, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -11850,13 +11845,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "it move next."), .effect = EFFECT_AFTER_YOU, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -11875,14 +11870,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Others can join in too."), .effect = EFFECT_ROUND, .power = 60, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ROUND, }), @@ -11900,14 +11895,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "it is used."), .effect = EFFECT_ECHOED_VOICE, .power = 40, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -11920,12 +11915,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sChipAwayDescription, .effect = EFFECT_HIT, .power = 70, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .ignoresTargetDefenseEvasionStages = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, @@ -11942,12 +11937,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "eliminates all stat changes."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_POISON, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CLEAR_SMOG, }), @@ -11965,12 +11960,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the more damage caused."), .effect = EFFECT_STORED_POWER, .power = 20, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -11985,18 +11980,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "for one turn."), .effect = EFFECT_PROTECT, .power = 0, - .type = TYPE_FIGHTING, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_USER, - .priority = 3, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_STATUS, - .argument = TRUE, // Protects the whole side. + .target = MOVE_TARGET_USER, + .pp = 15, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, - .snatchAffected = TRUE, + .priority = 3, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .argument = TRUE, // Protects the whole side. .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -12011,13 +12006,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with its partner."), .effect = EFFECT_ALLY_SWITCH, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_USER, - .priority = B_UPDATED_MOVE_DATA >= GEN_7 ? 2 : 1, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, + .priority = B_UPDATED_MOVE_DATA >= GEN_7 ? 2 : 1, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, @@ -12034,12 +12029,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe. May inflict a burn."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_WATER, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .thawsUser = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -12059,15 +12054,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "lowers defensive stats."), .effect = EFFECT_SHELL_SMASH, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 15, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -12083,17 +12078,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "target's maximum HP."), .effect = EFFECT_HEAL_PULSE, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 0, .magicCoatAffected = TRUE, - .mirrorMoveBanned = TRUE, - .healingMove = TRUE, .pulseMove = TRUE, + .healingMove = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -12108,12 +12103,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe has a status problem."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 65 : 50, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = STATUS1_ANY, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -12129,17 +12124,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "then drops it the next turn."), .effect = EFFECT_SKY_DROP, .power = 60, - .type = TYPE_FLYING, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .gravityBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_PKMNTOOKTARGETHIGH, COMPRESS_BITS(STATUS3_ON_AIR)), .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -12155,15 +12150,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attack and Speed."), .effect = EFFECT_SHIFT_GEAR, .power = 0, - .type = TYPE_STEEL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -12177,12 +12172,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sCircleThrowDescription, .effect = EFFECT_HIT_SWITCH_TARGET, .power = 60, - .type = TYPE_FIGHTING, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = -6, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = -6, .makesContact = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, @@ -12200,12 +12195,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "preventing their use."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 30, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 15, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_INCINERATE, }), @@ -12223,13 +12218,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "it move last."), .effect = EFFECT_QUASH, .power = 0, - .type = TYPE_DARK, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -12245,12 +12240,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "user has no item."), .effect = EFFECT_ACROBATICS, .power = 55, - .type = TYPE_FLYING, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, @@ -12266,13 +12261,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "type, copying it."), .effect = EFFECT_REFLECT_TYPE, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 0, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, @@ -12289,12 +12284,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "damage if an ally fainted."), .effect = EFFECT_RETALIATE, .power = 70, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -12310,12 +12305,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the foe equal to its HP."), .effect = EFFECT_FINAL_GAMBIT, .power = 1, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .mirrorMoveBanned = TRUE, .parentalBondBanned = TRUE, .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, @@ -12332,13 +12327,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "item to the foe."), .effect = EFFECT_BESTOW, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, + .priority = 0, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, @@ -12358,12 +12353,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "a burn, but inaccurate."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_FIRE, .accuracy = 50, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 100, @@ -12382,12 +12377,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "water. May make a rainbow."), .effect = EFFECT_PLEDGE, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 50, - .type = TYPE_WATER, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -12403,12 +12398,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "fire. May burn the grass."), .effect = EFFECT_PLEDGE, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 50, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -12424,12 +12419,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "grass. May create a swamp."), .effect = EFFECT_PLEDGE, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 50, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, @@ -12443,12 +12438,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sUTurnDescription, .effect = EFFECT_HIT_ESCAPE, .power = 70, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -12463,12 +12458,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the foe. Lowers Sp. Atk."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 50 : 30, - .type = TYPE_BUG, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 20, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, .chance = 100, @@ -12487,12 +12482,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers Speed."), .effect = EFFECT_BULLDOZE, .power = 60, - .type = TYPE_GROUND, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 20, + .priority = 0, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, @@ -12510,12 +12505,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sStormThrowDescription, .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 40, - .type = TYPE_ICE, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .alwaysCriticalHit = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -12529,12 +12524,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sCircleThrowDescription, .effect = EFFECT_HIT_SWITCH_TARGET, .power = 60, - .type = TYPE_DRAGON, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = -6, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = -6, .makesContact = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, @@ -12552,15 +12547,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Ups Attack and Sp. Atk."), .effect = EFFECT_ATTACK_SPATK_UP, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 30, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 30, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -12576,12 +12571,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "electric net. Lowers Speed."), .effect = EFFECT_HIT, .power = 55, - .type = TYPE_ELECTRIC, .accuracy = 95, - .pp = 15, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 15, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 100, @@ -12600,13 +12595,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "also hurts the user."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_ELECTRIC, .accuracy = 100, - .recoil = 25, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, + .recoil = 25, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_COOL, @@ -12622,13 +12617,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical-hit ratio."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_GROUND, .accuracy = 95, - .criticalHitStage = 1, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, + .criticalHitStage = 1, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -12644,14 +12639,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that strike twice."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_DRAGON, .accuracy = 90, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, - .makesContact = TRUE, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .strikeCount = 2, + .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -12666,12 +12661,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "act. May cause flinching."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 25, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 25, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -12689,12 +12684,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sMegaDrainDescription, .effect = EFFECT_ABSORB, .power = 75, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .healingMove = B_HEAL_BLOCKING >= GEN_6, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, @@ -12709,15 +12704,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sChipAwayDescription, .effect = EFFECT_HIT, .power = 90, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 15 : 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 15 : 20, + .priority = 0, .makesContact = TRUE, - .ignoresTargetDefenseEvasionStages = TRUE, .slicingMove = TRUE, + .ignoresTargetDefenseEvasionStages = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -12732,12 +12727,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "shells. May lower Defense."), .effect = EFFECT_HIT, .power = 75, - .type = TYPE_WATER, .accuracy = 95, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .slicingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -12756,12 +12751,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sHeavySlamDescription, .effect = EFFECT_HEAT_CRASH, .power = 1, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, @@ -12778,12 +12773,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to damage and cut accuracy."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_GRASS, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, //.windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, @@ -12803,12 +12798,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "body. May cause flinching."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_BUG, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .minimizeDoubleDamage = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -12829,15 +12824,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Drastically raises Defense."), .effect = EFFECT_DEFENSE_UP_3, .power = 0, - .type = TYPE_GRASS, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -12853,12 +12848,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "wave. May lower accuracy."), .effect = EFFECT_HIT, .power = 85, - .type = TYPE_DARK, .accuracy = 95, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, .chance = 40, @@ -12875,12 +12870,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sPsyshockDescription, .effect = EFFECT_PSYSHOCK, .power = 100, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -12895,12 +12890,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "tail 2 to 5 times."), .effect = EFFECT_MULTI_HIT, .power = 25, - .type = TYPE_NORMAL, .accuracy = 85, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -12916,12 +12911,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "wind. May cause confusion."), .effect = EFFECT_THUNDER, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, - .type = TYPE_FLYING, .accuracy = 70, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .windMove = TRUE, .damagesAirborne = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -12942,13 +12937,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "It hurts the user a little."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_NORMAL, .accuracy = 100, - .recoil = 25, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, + .recoil = 25, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -12964,14 +12959,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that strike twice."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_STEEL, .accuracy = 85, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, - .makesContact = TRUE, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .strikeCount = 2, + .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -12984,12 +12979,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sLavaPlumeDescription, .effect = EFFECT_HIT, .power = 100, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 5, + .priority = 0, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -13009,14 +13004,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "kind of Drive held."), .effect = EFFECT_CHANGE_TYPE_ON_ITEM, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 120 : 85, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, - .argument = HOLD_EFFECT_DRIVE, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .metronomeBanned = TRUE, + .argument = HOLD_EFFECT_DRIVE, .contestEffect = CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -13031,16 +13026,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "song. May induce sleep."), .effect = EFFECT_RELIC_SONG, .power = 75, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, - .argument = STATUS1_SLEEP, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .target = MOVE_TARGET_BOTH, + .pp = 10, + .priority = 0, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .metronomeBanned = TRUE, + .argument = STATUS1_SLEEP, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SLEEP, .chance = 10, @@ -13059,12 +13054,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "does physical damage."), .effect = EFFECT_PSYSHOCK, .power = 85, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .slicingMove = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, @@ -13081,12 +13076,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe. It lowers their Speed."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_ICE, .accuracy = 95, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 100, @@ -13105,12 +13100,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "of lightning. May paralyze."), .effect = EFFECT_HIT, .power = 130, - .type = TYPE_ELECTRIC, .accuracy = 85, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -13130,12 +13125,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "flame. May inflict a burn."), .effect = EFFECT_HIT, .power = 130, - .type = TYPE_FIRE, .accuracy = 85, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 20, @@ -13154,12 +13149,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May raise Sp. Atk."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .danceMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_PLUS_1, @@ -13180,12 +13175,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "may paralyze the foe."), .effect = EFFECT_TWO_TURNS_ATTACK, .power = 140, - .type = TYPE_ICE, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -13208,12 +13203,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "may inflict a burn."), .effect = EFFECT_TWO_TURNS_ATTACK, .power = 140, - .type = TYPE_ICE, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -13236,14 +13231,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "lowering its Sp. Atk."), .effect = EFFECT_HIT, .power = 55, - .type = TYPE_DARK, .accuracy = 95, - .pp = 15, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_SPECIAL, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .target = MOVE_TARGET_BOTH, + .pp = 15, + .priority = 0, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, @@ -13263,12 +13258,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe. May cause flinching."), .effect = EFFECT_HIT, .power = 85, - .type = TYPE_ICE, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 30, @@ -13287,12 +13282,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Defense, Sp. Def and Speed."), .effect = EFFECT_HIT, .power = 180, - .type = TYPE_FIRE, .accuracy = 95, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -13313,12 +13308,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "well with a thunderbolt."), .effect = EFFECT_FUSION_COMBO, .power = 100, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .thawsUser = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -13334,12 +13329,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Works well with a fireball."), .effect = EFFECT_FUSION_COMBO, .power = 100, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -13354,17 +13349,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and Flying-type damage."), .effect = EFFECT_TWO_TYPED_MOVE, .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 100 : 80, - .type = TYPE_FIGHTING, .accuracy = 95, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = TYPE_FLYING, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .minimizeDoubleDamage = TRUE, .gravityBanned = TRUE, .skyBattleBanned = TRUE, + .argument = TYPE_FLYING, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -13379,21 +13374,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "for one turn."), .effect = EFFECT_MAT_BLOCK, .power = 0, - .type = TYPE_FIGHTING, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_STATUS, - .argument = TRUE, // Protects the whole side. + .target = MOVE_TARGET_USER, + .pp = 15, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, .skyBattleBanned = TRUE, + .argument = TRUE, // Protects the whole side. .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -13408,20 +13403,20 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Must eat a Berry to use it."), .effect = EFFECT_BELCH, .power = 120, - .type = TYPE_POISON, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, - .metronomeBanned = TRUE, .mimicBanned = TRUE, + .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -13436,13 +13431,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "of Grass-type Pokémon."), .effect = EFFECT_ROTOTILLER, .power = 0, - .type = TYPE_GROUND, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 10, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, @@ -13460,16 +13455,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "slows foes switching in."), .effect = EFFECT_STICKY_WEB, .power = 0, - .type = TYPE_BUG, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_OPPONENTS_FIELD, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_OPPONENTS_FIELD, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, .magicCoatAffected = TRUE, + .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -13485,12 +13480,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the Attack stat is raised."), .effect = EFFECT_FELL_STINGER, .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 50 : 30, - .type = TYPE_BUG, .accuracy = 100, - .pp = 25, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 25, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -13504,18 +13499,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sShadowForceDescription, .effect = EFFECT_SEMI_INVULNERABLE, .power = 90, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, - .ignoresProtect = TRUE, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, + .ignoresProtect = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_VANISHEDINSTANTLY, COMPRESS_BITS(STATUS3_PHANTOM_FORCE)), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FEINT, @@ -13534,15 +13529,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "making the foe Ghost-type."), .effect = EFFECT_THIRD_TYPE, .power = 0, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_STATUS, - .argument = TYPE_GHOST, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, + .argument = TYPE_GHOST, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -13557,16 +13552,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attack and Sp. Atk."), .effect = EFFECT_NOBLE_ROAR, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 30, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .priority = 0, .magicCoatAffected = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -13581,13 +13576,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "moves with charged atoms."), .effect = EFFECT_ION_DELUGE, .power = 0, - .type = TYPE_ELECTRIC, .accuracy = 0, - .pp = 25, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 1, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 25, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 1, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, @@ -13604,12 +13599,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "heals up by half of it."), .effect = EFFECT_ABSORB, .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 65 : 50, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 20, + .priority = 0, .healingMove = B_HEAL_BLOCKING >= GEN_6, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -13625,15 +13620,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "making the foe Grass-type."), .effect = EFFECT_THIRD_TYPE, .power = 0, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, - .argument = TYPE_GRASS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, + .argument = TYPE_GRASS, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -13648,12 +13643,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "of petals to attack."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 15, + .priority = 0, .windMove = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -13669,12 +13664,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "types. May cause freezing."), .effect = EFFECT_FREEZE_DRY, .power = 70, - .type = TYPE_ICE, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, .chance = 10, @@ -13693,14 +13688,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that cannot be evaded."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_FAIRY, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .target = MOVE_TARGET_BOTH, + .pp = 15, + .priority = 0, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -13715,16 +13710,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sp. Atk, then switches out."), .effect = EFFECT_PARTING_SHOT, .power = 0, - .type = TYPE_DARK, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_RESTORE_REPLACEMENT_HP }, + .priority = 0, .magicCoatAffected = TRUE, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -13739,13 +13734,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "affect the target."), .effect = EFFECT_TOPSY_TURVY, .power = 0, - .type = TYPE_DARK, .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 0 : 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -13759,15 +13754,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sDrainingKissDescription, .effect = EFFECT_ABSORB, .power = 50, - .type = TYPE_FAIRY, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, - .argument = 75, // restores 75% HP instead of 50% HP + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .healingMove = B_HEAL_BLOCKING >= GEN_6, + .argument = 75, // restores 75% HP instead of 50% HP .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -13782,17 +13777,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "one turn."), .effect = EFFECT_PROTECT, .power = 0, - .type = TYPE_FAIRY, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 3, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, - .argument = TRUE, // Protects the whole side. + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .priority = 3, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .argument = TRUE, // Protects the whole side. .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -13807,13 +13802,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Grass-type Pokémon."), .effect = EFFECT_FLOWER_SHIELD, .power = 0, - .type = TYPE_FAIRY, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, @@ -13830,13 +13825,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "for 5 turns. Restores HP."), .effect = EFFECT_GRASSY_TERRAIN, .power = 0, - .type = TYPE_GRASS, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, @@ -13854,13 +13849,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "for 5 turns. Blocks status."), .effect = EFFECT_MISTY_TERRAIN, .power = 0, - .type = TYPE_FAIRY, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, @@ -13878,13 +13873,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "its next move Electric-type."), .effect = EFFECT_ELECTRIFY, .power = 0, - .type = TYPE_ELECTRIC, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 0, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -13899,12 +13894,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May lower Attack."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_FAIRY, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, @@ -13924,12 +13919,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "strike the foe."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_FAIRY, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 30, + .priority = 0, .windMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -13945,12 +13940,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the moon. May lower Sp. Atk."), .effect = EFFECT_HIT, .power = 95, - .type = TYPE_FAIRY, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, .chance = 30, @@ -13969,14 +13964,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "destructive sound wave."), .effect = EFFECT_HIT, .power = 140, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 10, + .priority = 0, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -13991,13 +13986,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "preventing escape next turn."), .effect = EFFECT_FAIRY_LOCK, .power = 0, - .type = TYPE_FAIRY, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, @@ -14014,19 +14009,19 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "reduces Attack if struck."), .effect = EFFECT_PROTECT, .power = 0, - .type = TYPE_STEEL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 4, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 4, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .instructBanned = TRUE, .assistBanned = TRUE, + .instructBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -14041,16 +14036,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "its Attack without fail."), .effect = EFFECT_ATTACK_DOWN, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, - .ignoresSubstitute = TRUE, .magicCoatAffected = TRUE, + .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -14065,17 +14060,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foe, lowering Sp. Atk."), .effect = EFFECT_SPECIAL_ATTACK_DOWN, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .magicCoatAffected = TRUE, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -14089,12 +14084,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Whips up a storm of\n" "diamonds. May up Defense."), .power = 100, - .type = TYPE_ROCK, .accuracy = 95, - .pp = 5, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_BOTH, + .pp = 5, + .priority = 0, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = B_UPDATED_MOVE_DATA >= GEN_7 ? MOVE_EFFECT_DEF_PLUS_2: MOVE_EFFECT_DEF_PLUS_1, @@ -14114,12 +14109,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "steam. May inflict a burn."), .effect = EFFECT_HIT, .power = 110, - .type = TYPE_WATER, .accuracy = 95, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .thawsUser = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -14138,12 +14133,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sHyperspaceHoleDescription, .effect = EFFECT_HIT, .power = 80, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, @@ -14164,12 +14159,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "are sure to strike first."), .effect = EFFECT_MULTI_HIT, .power = 15, - .type = TYPE_WATER, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 1, + .type = TYPE_WATER, .category = B_UPDATED_MOVE_DATA >= GEN_7 ? DAMAGE_CATEGORY_SPECIAL : DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 1, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -14184,12 +14179,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "fire. Lowers Sp. Atk."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 75 : 65, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, .chance = 100, @@ -14208,13 +14203,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the foe if struck."), .effect = EFFECT_PROTECT, .power = 0, - .type = TYPE_GRASS, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 4, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 4, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -14234,13 +14229,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "partner Pokémon."), .effect = EFFECT_AROMATIC_MIST, .power = 0, - .type = TYPE_FAIRY, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_ALLY, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALLY, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, + .priority = 0, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -14258,13 +14253,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that sharply cuts Sp. Atk."), .effect = EFFECT_SPECIAL_ATTACK_DOWN_2, .power = 0, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, @@ -14280,13 +14275,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and Speed of a poisoned foe."), .effect = EFFECT_VENOM_DRENCH, .power = 0, - .type = TYPE_POISON, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_BOTH, + .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -14302,15 +14297,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "a Fire-type move."), .effect = EFFECT_POWDER, .power = 0, - .type = TYPE_BUG, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 1, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, - .powderMove = TRUE, + .priority = 1, .magicCoatAffected = TRUE, + .powderMove = TRUE, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -14325,13 +14320,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Speed on the 2nd turn."), .effect = EFFECT_GEOMANCY, .power = 0, - .type = TYPE_FAIRY, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .priority = 0, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .skyBattleBanned = TRUE, @@ -14350,15 +14345,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "those with Plus or Minus."), .effect = EFFECT_MAGNETIC_FLUX, .power = 0, - .type = TYPE_ELECTRIC, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, @@ -14375,13 +14370,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Prize Money received."), .effect = EFFECT_DO_NOTHING, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 30, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 30, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, @@ -14398,13 +14393,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "5 turns. Prevents sleep."), .effect = EFFECT_ELECTRIC_TERRAIN, .power = 0, - .type = TYPE_ELECTRIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, @@ -14422,12 +14417,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "a bright flash."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_FAIRY, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 10, + .priority = 0, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -14442,21 +14437,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "special day."), .effect = EFFECT_DO_NOTHING, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 40, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 40, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, - .metronomeBanned = TRUE, .mimicBanned = TRUE, + .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -14471,21 +14466,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "making them happy."), .effect = EFFECT_DO_NOTHING, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 40, - .target = MOVE_TARGET_ALLY, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALLY, + .pp = 40, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, - .metronomeBanned = TRUE, .mimicBanned = TRUE, + .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -14500,13 +14495,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "before it can move."), .effect = EFFECT_ATTACK_DOWN, .power = 0, - .type = TYPE_FAIRY, .accuracy = 100, - .pp = 30, - .target = MOVE_TARGET_SELECTED, - .priority = 1, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 30, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 1, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -14522,12 +14517,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the foe, paralyzing it."), .effect = EFFECT_HIT, .power = 20, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -14545,12 +14540,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sFalseSwipeDescription, .effect = EFFECT_FALSE_SWIPE, .power = 40, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 40, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 40, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -14566,12 +14561,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "attacked for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, .power = 20, - .type = TYPE_BUG, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_WRAP, @@ -14590,12 +14585,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the user's Attack."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -14615,14 +14610,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sDrainingKissDescription, .effect = EFFECT_ABSORB, .power = 80, - .type = TYPE_FLYING, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_SPECIAL, - .argument = 75, // restores 75% HP instead of 50% HP + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .healingMove = B_HEAL_BLOCKING >= GEN_6, + .argument = 75, // restores 75% HP instead of 50% HP .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -14637,12 +14632,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "knocks them to the ground."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_GROUND, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_BOTH, + .pp = 10, + .priority = 0, .damagesAirborne = TRUE, .ignoreTypeIfFlyingAndUngrounded = TRUE, .metronomeBanned = TRUE, @@ -14664,12 +14659,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "no longer escape."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_GROUND, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_BOTH, + .pp = 10, + .priority = 0, .metronomeBanned = TRUE, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -14689,12 +14684,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "land to attack every foe."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_GROUND, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_BOTH, + .pp = 10, + .priority = 0, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -14710,13 +14705,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that also hurts the user."), .effect = EFFECT_HIT, .power = 140, - .type = TYPE_FAIRY, .accuracy = 90, - .recoil = 50, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, + .recoil = 50, .metronomeBanned = TRUE, }, @@ -14728,12 +14723,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "blast both foes."), .effect = EFFECT_HIT, .power = 110, - .type = TYPE_WATER, .accuracy = 85, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 10, + .priority = 0, .pulseMove = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, @@ -14750,12 +14745,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "attack both foes."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_GROUND, .accuracy = 85, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_BOTH, + .pp = 10, + .priority = 0, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -14769,12 +14764,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sCloseCombatDescription, .effect = EFFECT_HIT, .power = 120, - .type = TYPE_FLYING, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -14793,12 +14788,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sHyperspaceHoleDescription, .effect = EFFECT_HYPERSPACE_FURY, .power = 100, - .type = TYPE_DARK, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, @@ -14822,16 +14817,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "More HP in a sandstorm."), .effect = EFFECT_SHORE_UP, .power = 0, - .type = TYPE_GROUND, .accuracy = 0, - .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .healingMove = TRUE, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, + .healingMove = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -14847,12 +14842,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Only works first turn."), .effect = EFFECT_FIRST_TURN_ONLY, .power = 90, - .type = TYPE_BUG, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 2, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 2, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_COOL, @@ -14868,13 +14863,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "foes on contact."), .effect = EFFECT_PROTECT, .power = 0, - .type = TYPE_POISON, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 4, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 4, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -14894,12 +14889,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "no longer escape."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PREVENT_ESCAPE, .chance = 100, @@ -14918,12 +14913,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "It ignores stat changes."), .effect = EFFECT_HIT, .power = 85, - .type = TYPE_DARK, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .ignoresTargetDefenseEvasionStages = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, @@ -14940,15 +14935,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "burns on contact."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_WATER, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, - .argument = STATUS1_BURN, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 10, + .priority = 0, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .argument = STATUS1_BURN, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_REMOVE_STATUS, .chance = 100, @@ -14967,12 +14962,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the user's Speed."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_ICE, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -14993,17 +14988,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Heals more on grass."), .effect = EFFECT_HEAL_PULSE, .power = 0, - .type = TYPE_FAIRY, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, - .argument = MOVE_EFFECT_FLORAL_HEALING, - .mirrorMoveBanned = TRUE, - .healingMove = TRUE, + .priority = 0, .magicCoatAffected = TRUE, + .healingMove = TRUE, + .mirrorMoveBanned = TRUE, + .argument = MOVE_EFFECT_FLORAL_HEALING, .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -15018,12 +15013,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "its entire body."), .effect = EFFECT_HIT, .power = 95, - .type = TYPE_GROUND, .accuracy = 95, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -15039,13 +15034,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "heal HP, then drops Attack."), .effect = EFFECT_STRENGTH_SAP, .power = 0, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .healingMove = B_HEAL_BLOCKING >= GEN_6, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, @@ -15062,12 +15057,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "chops with a blade of light."), .effect = EFFECT_SOLAR_BEAM, .power = 125, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .slicingMove = TRUE, .sleepTalkBanned = TRUE, @@ -15087,12 +15082,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "small leaves."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 40, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 40, + .priority = 0, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -15107,13 +15102,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "spotlighted Pokémon."), .effect = EFFECT_FOLLOW_ME, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 3, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .priority = 3, .magicCoatAffected = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -15133,13 +15128,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "poisons and drops Speed."), .effect = EFFECT_TOXIC_THREAD, .power = 0, - .type = TYPE_POISON, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -15155,15 +15150,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "will be a critical hit."), .effect = EFFECT_LASER_FOCUS, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 30, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 30, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -15179,15 +15174,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "those with Plus or Minus."), .effect = EFFECT_GEAR_UP, .power = 0, - .type = TYPE_STEEL, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, @@ -15204,12 +15199,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "sound moves for a while."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_DARK, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_THROAT_CHOP, @@ -15229,12 +15224,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "restores ally's HP."), .effect = EFFECT_HIT_ENEMY_HEAL_ALLY, .power = 90, - .type = TYPE_BUG, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -15250,12 +15245,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "chain. The foe can't escape."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_STEEL, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PREVENT_ESCAPE, @@ -15275,13 +15270,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "5 turns. Blocks priority."), .effect = EFFECT_PSYCHIC_TERRAIN, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, @@ -15298,12 +15293,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "its Attack stat."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_BUG, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, @@ -15323,12 +15318,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "lowering its Defense."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, @@ -15348,12 +15343,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "stat boosts the user has."), .effect = EFFECT_STORED_POWER, .power = 20, - .type = TYPE_DARK, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -15369,12 +15364,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "removing the Fire type."), .effect = EFFECT_FAIL_IF_NOT_ARG_TYPE, .power = 130, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .thawsUser = TRUE, .argument = TYPE_FIRE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -15395,13 +15390,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the target's."), .effect = EFFECT_SPEED_SWAP, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_SMART, @@ -15417,12 +15412,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "horn that never misses."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_STEEL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_SMART, @@ -15438,16 +15433,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to restore HP."), .effect = EFFECT_PURIFY, .power = 0, - .type = TYPE_POISON, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, - .mirrorMoveBanned = TRUE, - .healingMove = TRUE, + .priority = 0, .magicCoatAffected = TRUE, + .healingMove = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -15462,12 +15457,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Matches user's first type."), .effect = EFFECT_REVELATION_DANCE, .power = 90, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .danceMove = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -15483,13 +15478,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "nullifies the foe's ability."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, .zMove = { .powerOverride = 140 }, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CORE_ENFORCER, }), @@ -15507,12 +15502,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "tropics. Lowers Attack."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, @@ -15532,13 +15527,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "its last move again."), .effect = EFFECT_INSTRUCT, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .priority = 0, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -15557,20 +15552,20 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Burns foe on contact."), .effect = EFFECT_BEAK_BLAST, .power = 100, - .type = TYPE_FLYING, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = -3, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, - .mirrorMoveBanned = TRUE, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = -3, .ballisticMove = TRUE, + .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -15585,14 +15580,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "its scales. Drops Defense."), .effect = EFFECT_HIT, .power = 110, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .target = MOVE_TARGET_BOTH, + .pp = 5, + .priority = 0, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, .self = TRUE, @@ -15611,12 +15606,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "like a hammer to damage."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, @@ -15632,12 +15627,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to hurt everyone nearby."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_DARK, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 20, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -15653,15 +15648,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "only usable with hail."), .effect = EFFECT_AURORA_VEIL, .power = 0, - .type = TYPE_ICE, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 20, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -15677,19 +15672,19 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "damages on contact."), .effect = EFFECT_SHELL_TRAP, .power = 150, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_BOTH, - .priority = -3, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 5, + .priority = -3, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -15704,12 +15699,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "lowers Sp. Attack."), .effect = EFFECT_HIT, .power = 130, - .type = TYPE_FAIRY, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_TWO_DOWN, @@ -15729,12 +15724,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Destroys any barriers."), .effect = EFFECT_BRICK_BREAK, .power = 85, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .bitingMove = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, @@ -15751,12 +15746,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stronger after a failure."), .effect = EFFECT_STOMPING_TANTRUM, .power = 75, - .type = TYPE_GROUND, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, @@ -15773,12 +15768,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "bone. Might drop Defense."), .effect = EFFECT_HIT, .power = 85, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, .chance = 20, @@ -15797,12 +15792,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "rock that always goes first."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_ROCK, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 1, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 1, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -15818,12 +15813,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Can lower Defense."), .effect = EFFECT_HIT, .power = 85, - .type = TYPE_WATER, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, @@ -15843,12 +15838,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "forces recharge next turn."), .effect = EFFECT_HIT, .power = 160, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, .self = TRUE, @@ -15867,14 +15862,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "boosts, then attacks."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, - .ignoresSubstitute = TRUE, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPECTRAL_THIEF, @@ -15893,12 +15888,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "ignores abilities."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_STEEL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .ignoresTargetAbility = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_8, @@ -15916,12 +15911,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "ignores abilities."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .ignoresTargetAbility = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_8, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, @@ -15938,13 +15933,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attack and Sp. Attack."), .effect = EFFECT_NOBLE_ROAR, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, @@ -15961,12 +15956,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "can cause flinching."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -15986,12 +15981,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the power of nature."), .effect = EFFECT_SUPER_FANG, .power = 1, - .type = TYPE_FAIRY, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_8, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -16007,14 +16002,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with Memories."), .effect = EFFECT_CHANGE_TYPE_ON_ITEM, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 120 : 90, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = HOLD_EFFECT_MEMORY, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, + .argument = HOLD_EFFECT_MEMORY, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -16029,12 +16024,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to damage everything around."), .effect = EFFECT_MIND_BLOWN, .power = 150, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 5, + .priority = 0, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -16050,12 +16045,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Normal moves become Electric."), .effect = EFFECT_PLASMA_FISTS, .power = 100, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .metronomeBanned = TRUE, @@ -16073,12 +16068,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "determines its category."), .effect = EFFECT_PHOTON_GEYSER, .power = 100, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .ignoresTargetAbility = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, @@ -16095,15 +16090,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "first and land a critical hit."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 80 : 50, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 10 : 15, - .target = MOVE_TARGET_SELECTED, - .priority = 2, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 10 : 15, + .priority = 2, + .alwaysCriticalHit = TRUE, .makesContact = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, - .alwaysCriticalHit = TRUE, .metronomeBanned = TRUE, #if B_UPDATED_MOVE_DATA >= GEN_8 .additionalEffects = ADDITIONAL_EFFECTS({ @@ -16121,12 +16116,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "may paralyze the foe."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_WATER, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 15, + .priority = 0, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -16143,15 +16138,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "angle. May cause flinching."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_FLYING, .accuracy = 95, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, - .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .gravityBanned = TRUE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -16167,12 +16162,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "power. It never misses."), .effect = EFFECT_RETURN, .power = 1, - .type = TYPE_ELECTRIC, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, }, @@ -16189,16 +16184,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #endif .effect = EFFECT_ABSORB, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 60 : 90, - .type = TYPE_WATER, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 20 : 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, - .argument = B_UPDATED_MOVE_DATA >= GEN_8 ? 100 : 50, // restores 100% HP instead of 50% HP + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 20 : 15, + .priority = 0, + .healingMove = B_HEAL_BLOCKING >= GEN_6, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, - .healingMove = B_HEAL_BLOCKING >= GEN_6, + .argument = B_UPDATED_MOVE_DATA >= GEN_8 ? 100 : 50, // restores 100% HP instead of 50% HP }, [MOVE_BUZZY_BUZZ] = @@ -16209,12 +16204,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that always paralyzes."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 60 : 90, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 20 : 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 20 : 15, + .priority = 0, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -16231,15 +16226,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Leaves the foe with a burn."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 60 : 90, - .type = TYPE_FIRE, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 20 : 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 20 : 15, + .priority = 0, .makesContact = TRUE, - .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .thawsUser = TRUE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -16255,12 +16250,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "wall, lowering Sp. Atk damage."), .effect = EFFECT_GLITZY_GLOW, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 80 : 90, - .type = TYPE_PSYCHIC, .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 95 : 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, }, @@ -16273,12 +16268,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "wall, lowering Attack damage."), .effect = EFFECT_BADDY_BAD, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 80 : 90, - .type = TYPE_DARK, .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 95 : 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, }, @@ -16291,14 +16286,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that drain HP every turn."), .effect = EFFECT_SAPPY_SEED, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 100 : 90, - .type = TYPE_GRASS, .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 90 : 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 10 : 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, - .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 10 : 15, + .priority = 0, .magicCoatAffected = TRUE, + .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, }, @@ -16310,12 +16305,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Eliminates all stat changes."), .effect = EFFECT_FREEZY_FROST, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 100 : 90, - .type = TYPE_ICE, .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 90 : 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 10 : 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 10 : 15, + .priority = 0, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, }, @@ -16328,12 +16323,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "scent. Heals party's status."), .effect = EFFECT_SPARKLY_SWIRL, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 120 : 90, - .type = TYPE_FAIRY, .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 85 : 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 5 : 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 5 : 15, + .priority = 0, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, }, @@ -16346,12 +16341,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "power. It never misses."), .effect = EFFECT_RETURN, .power = 1, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, @@ -16365,15 +16360,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "its arms. May cause flinch."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_STEEL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, + .strikeCount = 2, .makesContact = TRUE, .punchingMove = TRUE, - .strikeCount = 2, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -16394,20 +16389,20 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "2x damage to Dynamaxed foes."), .effect = EFFECT_DYNAMAX_DOUBLE_DMG, .power = 100, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .mirrorMoveBanned = TRUE, + .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, .sleepTalkBanned = TRUE, .instructBanned = TRUE, - .mimicBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, .parentalBondBanned = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_SMART, @@ -16423,13 +16418,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that draw in moves."), .effect = EFFECT_SNIPE_SHOT, .power = 80, - .type = TYPE_WATER, .accuracy = 100, - .criticalHitStage = 1, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, + .criticalHitStage = 1, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -16444,12 +16439,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the target from escaping."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_DARK, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -16469,14 +16464,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "then sharply raises Def."), .effect = EFFECT_STUFF_CHEEKS, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, - .snatchAffected = TRUE, + .target = MOVE_TARGET_USER, + .pp = 10, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -16492,14 +16487,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "stats but prevents escape."), .effect = EFFECT_NO_RETREAT, .power = 0, - .type = TYPE_FIGHTING, .accuracy = 0, - .pp = 5, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_STATUS, - .snatchAffected = TRUE, + .target = MOVE_TARGET_USER, + .pp = 5, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -16515,12 +16510,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "makes it weak to Fire."), .effect = EFFECT_TAR_SHOT, .power = 0, - .type = TYPE_ROCK, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -16536,15 +16531,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "target into a Psychic-type."), .effect = EFFECT_SOAK, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, - .argument = TYPE_PSYCHIC, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .magicCoatAffected = TRUE, .powderMove = TRUE, + .argument = TYPE_PSYCHIC, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -16559,12 +16554,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "targets are hit once each."), .effect = EFFECT_HIT, // TODO: EFFECT_DRAGON_DARTS .power = 50, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .strikeCount = 2, .parentalBondBanned = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, @@ -16581,12 +16576,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and eat their Berries."), .effect = EFFECT_TEATIME, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 10, + .priority = 0, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -16604,12 +16599,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and Sp. Def fall each turn."), .effect = EFFECT_OCTOLOCK, .power = 0, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -16624,12 +16619,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "moves before the target."), .effect = EFFECT_BOLT_BEAK, .power = 85, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -16645,12 +16640,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "moves before the target."), .effect = EFFECT_BOLT_BEAK, .power = 85, - .type = TYPE_WATER, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .bitingMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, @@ -16667,12 +16662,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "either side of the field."), .effect = EFFECT_COURT_CHANGE, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 10, + .priority = 0, .ignoresProtect = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -16688,17 +16683,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "HP to raise all its stats."), .effect = EFFECT_CLANGOROUS_SOUL, .power = 0, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_STATUS, - .snatchAffected = TRUE, + .target = MOVE_TARGET_USER, + .pp = 5, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .soundMove = TRUE, .danceMove = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -16714,12 +16709,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "higher the user's Def."), .effect = EFFECT_BODY_PRESS, .power = 80, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .metronomeBanned = TRUE, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, @@ -16737,12 +16732,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the target's Atk and Sp.Atk"), .effect = EFFECT_DECORATE, .power = 0, - .type = TYPE_FAIRY, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -16760,12 +16755,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The foe's Speed is lowered."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, @@ -16785,12 +16780,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "trap for four to five turns."), .effect = EFFECT_HIT, .power = 35, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .metronomeBanned = TRUE, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, @@ -16811,14 +16806,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "target. It may cause a burn."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_FIRE, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, - .thawsUser = TRUE, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .ballisticMove = TRUE, + .thawsUser = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -16838,17 +16833,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "damage to Dynamaxed foes."), .effect = EFFECT_DYNAMAX_DOUBLE_DMG, .power = 100, - .type = TYPE_STEEL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .slicingMove = TRUE, + .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .mimicBanned = TRUE, .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -16864,16 +16859,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "damage to Dynamaxed foes."), .effect = EFFECT_DYNAMAX_DOUBLE_DMG, .power = 100, - .type = TYPE_STEEL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, + .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .mimicBanned = TRUE, .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -16889,12 +16884,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Type is based on its form."), .effect = EFFECT_AURA_WHEEL, .power = 110, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_PLUS_1, @@ -16915,12 +16910,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the Atk of those hit."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_BOTH, + .pp = 15, + .priority = 0, .makesContact = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -16941,12 +16936,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with a pointed branch."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 40, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 40, + .priority = 0, .makesContact = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, @@ -16963,12 +16958,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "causing strong vibrations."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 10, + .priority = 0, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .metronomeBanned = TRUE, @@ -16986,12 +16981,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to lower the foe's Sp. Def."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, @@ -17011,12 +17006,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the foe's Defense."), .effect = EFFECT_GRAV_APPLE, .power = 80, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, @@ -17036,12 +17031,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "force. Lowers Sp. Atk."), .effect = EFFECT_HIT, .power = 75, - .type = TYPE_FAIRY, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -17062,12 +17057,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "potentially confuse the foe."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_FAIRY, .accuracy = 95, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, @@ -17087,17 +17082,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the HP of itself and allies."), .effect = EFFECT_JUNGLE_HEALING, .power = 0, - .type = TYPE_WATER, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_STATUS, - .snatchAffected = TRUE, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 10, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, + .healingMove = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, - .healingMove = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -17113,12 +17108,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "lowering Def on contact."), .effect = EFFECT_PROTECT, .power = 0, - .type = TYPE_DARK, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 4, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, + .priority = 4, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -17137,12 +17132,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "with hair. It never misses."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_DARK, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, @@ -17159,12 +17154,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user must then rest."), .effect = EFFECT_HIT, .power = 150, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .metronomeBanned = TRUE, .instructBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -17185,12 +17180,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user rests next turn."), .effect = EFFECT_HIT, .power = 160, - .type = TYPE_DRAGON, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, @@ -17210,12 +17205,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "its body. It hurts the user."), .effect = EFFECT_MAX_HP_50_RECOIL, .power = 140, - .type = TYPE_STEEL, .accuracy = 95, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -17231,12 +17226,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "all foes on Psychic Terrain."), .effect = EFFECT_EXPANDING_FORCE, .power = 80, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -17251,15 +17246,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "ground isn't terrain."), .effect = EFFECT_HIT_SET_REMOVE_TERRAIN, .power = 130, - .type = TYPE_STEEL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, - .argument = ARG_TRY_REMOVE_TERRAIN_FAIL, // Remove a field terrain if there is one and hit, otherwise fail. .skyBattleBanned = TRUE, + .argument = ARG_TRY_REMOVE_TERRAIN_FAIL, // Remove a field terrain if there is one and hit, otherwise fail. .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -17274,12 +17269,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Ups Speed, lowers defense."), .effect = EFFECT_MULTI_HIT, .power = 25, - .type = TYPE_DRAGON, .accuracy = 90, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .argument = MOVE_EFFECT_SCALE_SHOT, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -17295,12 +17290,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sp. Attack before attacking."), .effect = EFFECT_TWO_TURNS_ATTACK, .power = 120, - .type = TYPE_ROCK, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .instructBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_METEORBEAMCHARGING), .additionalEffects = ADDITIONAL_EFFECTS({ @@ -17322,12 +17317,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "special damage. May poison."), .effect = EFFECT_SHELL_SIDE_ARM, .power = 90, - .type = TYPE_POISON, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 20, @@ -17346,12 +17341,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powers up on Misty Terrain."), .effect = EFFECT_EXPLOSION, .power = 100, - .type = TYPE_FAIRY, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 5, + .priority = 0, .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -17366,12 +17361,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "first on Grassy Terrain."), .effect = EFFECT_GRASSY_GLIDE, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 55 : 70, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, @@ -17388,12 +17383,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "when on Electric Terrain."), .effect = EFFECT_RISING_VOLTAGE, .power = 70, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -17408,12 +17403,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "depending on the terrain."), .effect = EFFECT_TERRAIN_PULSE, .power = 50, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .pulseMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -17429,12 +17424,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "attack. Lowers foe's Sp. Atk."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_BUG, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, @@ -17454,12 +17449,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "during the turn get burned."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 5, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .onlyIfTargetRaisedStats = TRUE, @@ -17479,12 +17474,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "turn, power is doubled."), .effect = EFFECT_LASH_OUT, .power = 75, - .type = TYPE_DARK, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_COOL, @@ -17500,12 +17495,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fails if foe has no item."), .effect = EFFECT_POLTERGEIST, .power = 110, - .type = TYPE_GHOST, .accuracy = 90, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -17520,12 +17515,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "held by surrounding Pokémon."), .effect = EFFECT_CORROSIVE_GAS, .power = 0, - .type = TYPE_POISON, .accuracy = 100, - .pp = 40, - .target = MOVE_TARGET_FOES_AND_ALLY, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_FOES_AND_ALLY, + .pp = 40, + .priority = 0, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -17541,12 +17536,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "up their Attack and Defense."), .effect = EFFECT_COACHING, .power = 0, - .type = TYPE_FIGHTING, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_ALLY, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALLY, + .pp = 10, + .priority = 0, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -17564,12 +17559,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "switch with a party Pokémon."), .effect = EFFECT_HIT_ESCAPE, .power = 60, - .type = TYPE_WATER, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_COOL, @@ -17585,14 +17580,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "more powerful with each hit."), .effect = EFFECT_TRIPLE_KICK, .power = 20, - .type = TYPE_ICE, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, - .makesContact = TRUE, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .strikeCount = 3, + .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -17607,14 +17602,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "wings and hits twice in a row."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_FLYING, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, - .makesContact = TRUE, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .strikeCount = 2, + .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -17629,12 +17624,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the target. May leave a burn."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_GROUND, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .thawsUser = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -17654,16 +17649,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "itself and allies in battle."), .effect = EFFECT_JUNGLE_HEALING, .power = 0, - .type = TYPE_GRASS, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, + .priority = 0, .ignoresProtect = TRUE, + .healingMove = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, - .healingMove = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_SMART, @@ -17679,14 +17674,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "strikes with a critical hit."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 75 : 80, - .type = TYPE_DARK, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, - .makesContact = TRUE, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .alwaysCriticalHit = TRUE, + .makesContact = TRUE, .punchingMove = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, @@ -17703,16 +17698,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "strikes with 3 critical hits."), .effect = EFFECT_HIT, .power = 25, - .type = TYPE_WATER, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, - .makesContact = TRUE, - .alwaysCriticalHit = TRUE, - .punchingMove = TRUE, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .strikeCount = 3, + .alwaysCriticalHit = TRUE, + .makesContact = TRUE, + .punchingMove = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -17728,12 +17723,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "electricity for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_ELECTRIC, .accuracy = 90, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_WRAP, @@ -17752,12 +17747,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the more damage caused."), .effect = EFFECT_ERUPTION, .power = 150, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 5, + .priority = 0, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -17775,14 +17770,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else "the eyes. May freeze the foe."), #endif - .power = 90, .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, + .power = 90, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, @@ -17802,12 +17797,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "wrath. May cause flinching."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_DARK, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 10, + .priority = 0, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -17827,12 +17822,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to hit. Lowers foe's Defense."), .effect = EFFECT_HIT, .power = 90, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -17853,12 +17848,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "cloaked icicle lance at foes."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 130, - .type = TYPE_ICE, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_BOTH, + .pp = 5, + .priority = 0, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -17874,12 +17869,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "amount of ghosts at foes."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 5, + .priority = 0, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_SMART, @@ -17895,12 +17890,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Foe's last move has 3 PP cut."), .effect = EFFECT_EERIE_SPELL, .power = 80, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, @@ -17917,12 +17912,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "paralyze, poison or drowse."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 80 : 60, - .type = TYPE_POISON, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DIRE_CLAW, @@ -17938,12 +17933,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "energy. May raise Defense."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_PSYCHIC, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_PLUS_1, @@ -17960,14 +17955,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and Defense stats."), .effect = EFFECT_POWER_TRICK, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, - .snatchAffected = TRUE, + .target = MOVE_TARGET_USER, + .pp = 10, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -17980,12 +17975,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Splinters that hurt the foe."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_ROCK, .accuracy = 90, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .slicingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -18002,12 +17997,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Varies with the user's form."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, - .type = TYPE_FAIRY, .accuracy = 80, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .windMove = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -18024,12 +18019,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "raising the user's Sp. Atk."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_PSYCHIC, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_PLUS_1, .self = TRUE, @@ -18045,12 +18040,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that confuses the user."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 90, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_RANDOM, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_RANDOM, + .pp = 10, + .priority = 0, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_THRASH, @@ -18066,13 +18061,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "It also hurts the user."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 75, - .type = TYPE_WATER, .accuracy = 100, - .recoil = 33, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, + .recoil = 33, .makesContact = TRUE, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, @@ -18085,12 +18080,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "amassed chlorophyll."), .effect = EFFECT_MAX_HP_50_RECOIL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 150 : 120, - .type = TYPE_GRASS, .accuracy = 95, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, }, [MOVE_MOUNTAIN_GALE] = @@ -18101,12 +18096,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the foe. It may flinch."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_ICE, .accuracy = 85, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 30, @@ -18121,15 +18116,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Defense and Speed."), .effect = EFFECT_VICTORY_DANCE, .power = 0, - .type = TYPE_FIGHTING, .accuracy = 0, - .pp = 20, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_STATUS, - .danceMove = TRUE, - .snatchAffected = TRUE, + .target = MOVE_TARGET_USER, + .pp = 20, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, + .danceMove = TRUE, .mirrorMoveBanned = TRUE, }, @@ -18141,12 +18136,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the users's defenses."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 100, - .type = TYPE_GROUND, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -18163,12 +18158,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "up against poisoned foes."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, .power = 60, - .type = TYPE_POISON, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 15, + .priority = 0, .argument = STATUS1_PSN_ANY, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, @@ -18184,13 +18179,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Ups the user's Speed."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 80 : 75, - .type = TYPE_PSYCHIC, .accuracy = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 90, - .criticalHitStage = 1, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, + .criticalHitStage = 1, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_PLUS_1, .self = TRUE, @@ -18206,12 +18201,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May lower the foe's Attack."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 75 : 60, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, .chance = 100, @@ -18226,14 +18221,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "sharply raising its Defense."), .effect = EFFECT_DEFENSE_UP_2, .power = 0, - .type = TYPE_STEEL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_STATUS, - .snatchAffected = TRUE, + .target = MOVE_TARGET_USER, + .pp = 10, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, }, @@ -18245,13 +18240,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May lower Defense or flinch."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 90 : 50, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 15, - .criticalHitStage = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 15, + .priority = 0, + .criticalHitStage = 1, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, .chance = 50, @@ -18270,12 +18265,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "an ailment. May leave a burn."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, .power = 60, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .argument = STATUS1_ANY, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -18291,12 +18286,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Splinters that hurt the foe."), .effect = EFFECT_HIT, .power = 65, - .type = TYPE_DARK, .accuracy = 90, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .slicingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -18313,12 +18308,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May lower the foe's Speed."), .effect = EFFECT_RAIN_ALWAYS_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, - .type = TYPE_FLYING, .accuracy = 80, - .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 5, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 5, + .priority = 0, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, @@ -18334,12 +18329,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May inflict paralysis."), .effect = EFFECT_RAIN_ALWAYS_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, - .type = TYPE_ELECTRIC, .accuracy = 80, - .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 5, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 5, + .priority = 0, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -18355,12 +18350,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May inflict a burn."), .effect = EFFECT_RAIN_ALWAYS_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, - .type = TYPE_GROUND, .accuracy = 80, - .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 5, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 5, + .priority = 0, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -18376,16 +18371,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "itself and its ally."), .effect = EFFECT_JUNGLE_HEALING, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, - .snatchAffected = TRUE, + .target = MOVE_TARGET_USER, + .pp = 10, + .priority = 0, .ignoresProtect = TRUE, - .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .healingMove = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TAKE_HEART] = @@ -18396,14 +18391,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "heal and strengthen itself."), .effect = EFFECT_TAKE_HEART, .power = 0, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, - .snatchAffected = TRUE, + .target = MOVE_TARGET_USER, + .pp = 10, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, }, @@ -18415,12 +18410,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "it hits with its Tera-type."), .effect = EFFECT_PLACEHOLDER, // EFFECT_TERA_BLAST, .power = 80, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .metronomeBanned = TRUE, // Only since it isn't implemented yet }, @@ -18432,12 +18427,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Speed on contact."), .effect = EFFECT_PROTECT, .power = 0, - .type = TYPE_BUG, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 4, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, + .priority = 4, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -18451,12 +18446,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May cause confusion."), .effect = EFFECT_RECOIL_IF_MISS, .power = 120, - .type = TYPE_FIGHTING, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, @@ -18472,12 +18467,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "for each defeated ally."), .effect = EFFECT_PLACEHOLDER, // EFFECT_LAST_RESPECTS .power = 50, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .metronomeBanned = TRUE, // Only since it isn't implemented yet }, @@ -18489,12 +18484,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "harshly lowers Sp. Def."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_2, .chance = 100, @@ -18509,12 +18504,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "depending on Tatsugiri."), .effect = EFFECT_PLACEHOLDER, // EFFECT_ORDER_UP .power = 80, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -18527,12 +18522,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "speed to strike first."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_WATER, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 1, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 1, .makesContact = TRUE, .punchingMove = TRUE, .metronomeBanned = TRUE, @@ -18546,12 +18541,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "harshly lowers its Defense."), .effect = EFFECT_PLACEHOLDER, // EFFECT_SPICY_EXTRACT .power = 0, - .type = TYPE_GRASS, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .magicCoatAffected = TRUE, .metronomeBanned = TRUE, }, @@ -18564,12 +18559,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Harshly lowers user's Speed."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_STEEL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -18586,16 +18581,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "to ten times in a row."), .effect = EFFECT_POPULATION_BOMB, .power = 20, - .type = TYPE_NORMAL, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, + .strikeCount = 10, .makesContact = TRUE, .slicingMove = TRUE, .metronomeBanned = TRUE, - .strikeCount = 10, }, [MOVE_ICE_SPINNER] = @@ -18606,15 +18601,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and destroy the terrain."), .effect = EFFECT_HIT_SET_REMOVE_TERRAIN, .power = 80, - .type = TYPE_ICE, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, - .argument = ARG_TRY_REMOVE_TERRAIN_HIT, // Remove the active field terrain if there is one. .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, + .argument = ARG_TRY_REMOVE_TERRAIN_HIT, // Remove the active field terrain if there is one. }, [MOVE_GLAIVE_RUSH] = @@ -18625,12 +18620,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "miss and do double damage."), .effect = EFFECT_GLAIVE_RUSH, .power = 120, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .metronomeBanned = TRUE, // Only since it isn't implemented yet }, @@ -18643,16 +18638,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and restores half of its HP."), .effect = EFFECT_REVIVAL_BLESSING, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 1, + .priority = 0, .ignoresProtect = TRUE, + .healingMove = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, - .healingMove = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), }, @@ -18664,12 +18659,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "damage to Steel and Water."), .effect = EFFECT_SALT_CURE, .power = 40, - .type = TYPE_ROCK, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .metronomeBanned = TRUE, }, @@ -18681,14 +18676,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "of water 3 times in a row."), .effect = EFFECT_HIT, .power = 30, - .type = TYPE_WATER, .accuracy = 95, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, - .makesContact = TRUE, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .strikeCount = 3, + .makesContact = TRUE, }, [MOVE_MORTAL_SPIN] = @@ -18699,12 +18694,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Seed. Poisons adjecent foes."), .effect = EFFECT_HIT, .power = 30, - .type = TYPE_POISON, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_BOTH, + .pp = 15, + .priority = 0, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RAPIDSPIN, @@ -18724,12 +18719,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Ability into the target's."), .effect = EFFECT_DOODLE, .power = 0, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -18743,15 +18738,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Speed by using its own HP."), .effect = EFFECT_FILLET_AWAY, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, - .snatchAffected = TRUE, + .priority = 0, .ignoresProtect = TRUE, + .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -18764,12 +18759,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "kowtowing. It never misses."), .effect = EFFECT_HIT, .power = 85, - .type = TYPE_DARK, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .slicingMove = TRUE, }, @@ -18782,12 +18777,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "a critical hit, never missing."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_GRASS, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .alwaysCriticalHit = TRUE, }, @@ -18799,12 +18794,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts the user's Sp. Atk."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -18822,12 +18817,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "steps. Ups the user's Speed."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_WATER, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .danceMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -18845,12 +18840,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "User's form determines type."), .effect = EFFECT_RAGING_BULL, .power = 90, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .metronomeBanned = TRUE, }, @@ -18863,12 +18858,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Money is recovered after."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_STEEL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 5, + .priority = 0, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PAYDAY, @@ -18887,12 +18882,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "and cuts half the foe's HP."), .effect = EFFECT_SUPER_FANG, .power = 1, - .type = TYPE_DARK, .accuracy = 90, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .metronomeBanned = TRUE, }, @@ -18904,12 +18899,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "stronger if supereffective."), .effect = EFFECT_COLLISION_COURSE, .power = 100, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .metronomeBanned = TRUE, }, @@ -18922,12 +18917,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "stronger if supereffective."), .effect = EFFECT_COLLISION_COURSE, .power = 100, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .metronomeBanned = TRUE, }, @@ -18940,13 +18935,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "itself before switching out."), .effect = EFFECT_SHED_TAIL, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -18960,13 +18955,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user also switches out."), .effect = EFFECT_CHILLY_RECEPTION, .power = 0, - .type = TYPE_ICE, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -18980,12 +18975,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "raises its Attack and Speed."), .effect = EFFECT_PLACEHOLDER, // EFFECT_TIDY_UP .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -18999,13 +18994,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "lasts for five turns."), .effect = EFFECT_SNOWSCAPE, .power = 0, - .type = TYPE_ICE, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_ALL_BATTLERS, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALL_BATTLERS, + .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .priority = 0, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -19019,12 +19014,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "lowering its Speed."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_BUG, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -19041,12 +19036,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "raising its Speed."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .makesContact = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -19064,12 +19059,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "lowers the target's Attack."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_WATER, .accuracy = 100, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, @@ -19085,12 +19080,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "bypasses a foe's Protect."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .ignoresProtect = TRUE, .metronomeBanned = TRUE, @@ -19104,12 +19099,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the target twice in a row."), .effect = EFFECT_HIT, .power = 40, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .strikeCount = 2, .metronomeBanned = TRUE, }, @@ -19122,12 +19117,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "hit, the stronger the move."), .effect = EFFECT_RAGE_FIST, .power = 50, - .type = TYPE_GHOST, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .punchingMove = TRUE, .metronomeBanned = TRUE, @@ -19141,12 +19136,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the defensive stats."), .effect = EFFECT_HIT, .power = 120, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_SPDEF_DOWN, @@ -19162,12 +19157,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "half the damage inflicted."), .effect = EFFECT_ABSORB, .power = 90, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, .slicingMove = TRUE, .healingMove = TRUE, @@ -19181,12 +19176,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "losing the Electric type."), .effect = EFFECT_FAIL_IF_NOT_ARG_TYPE, .power = 120, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .metronomeBanned = TRUE, .argument = TYPE_ELECTRIC, @@ -19204,12 +19199,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "be used twice in a row."), .effect = EFFECT_HIT, .power = 160, - .type = TYPE_STEEL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .cantUseTwice = TRUE, }, @@ -19221,12 +19216,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "who last hurt the user."), .effect = EFFECT_METAL_BURST, .power = 1, - .type = TYPE_DARK, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_DEPENDS, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_DEPENDS, + .pp = 10, + .priority = 0, .makesContact = TRUE, .meFirstBanned = TRUE, .metronomeBanned = TRUE, @@ -19240,13 +19235,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "high critical-hit ratio."), .effect = EFFECT_HIT, .power = 70, - .type = TYPE_WATER, .accuracy = 100, - .criticalHitStage = 1, - .pp = 20, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 20, + .priority = 0, + .criticalHitStage = 1, .slicingMove = TRUE, }, @@ -19256,21 +19251,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING("---"), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -19284,21 +19279,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING("---"), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_DARK, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SLEEP, @@ -19312,21 +19307,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING("---"), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_POISON, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, @@ -19340,21 +19335,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING("---"), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -19368,21 +19363,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING("---"), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_FAIRY, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, - .assistBanned = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, @@ -19398,12 +19393,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "when on Electric Terrain."), .effect = EFFECT_PSYBLADE, .power = 80, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, .slicingMove = TRUE, }, @@ -19416,12 +19411,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "under harsh sunlight."), .effect = EFFECT_HYDRO_STEAM, .power = 80, - .type = TYPE_WATER, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .thawsUser = TRUE, }, @@ -19433,12 +19428,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Can't be used twice in a row."), .effect = EFFECT_HIT, .power = 140, - .type = TYPE_NORMAL, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .cantUseTwice = TRUE, }, @@ -19450,15 +19445,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "inflicted. May cause a burn."), .effect = EFFECT_ABSORB, .power = 80, - .type = TYPE_GRASS, .accuracy = 90, - .pp = 15, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 15, + .priority = 0, + .healingMove = B_EXTRAPOLATED_MOVE_FLAGS, .thawsUser = TRUE, .metronomeBanned = TRUE, - .healingMove = B_EXTRAPOLATED_MOVE_FLAGS, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 20, @@ -19473,12 +19468,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "each turn for 3 turns."), .effect = EFFECT_HIT, .power = 60, - .type = TYPE_GRASS, .accuracy = 85, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .ballisticMove = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -19495,13 +19490,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical-hit ratio."), .effect = EFFECT_IVY_CUDGEL, .power = 100, - .type = TYPE_GRASS, .accuracy = 100, - .pp = 10, - .criticalHitStage = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, + .criticalHitStage = 1, .metronomeBanned = TRUE, }, @@ -19513,12 +19508,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "then attacks next turn."), .effect = EFFECT_TWO_TURNS_ATTACK, .power = 130, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = TWO_TURN_ARG(STRINGID_ELECTROSHOTCHARGING, B_WEATHER_RAIN), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_PLUS_1, @@ -19535,15 +19530,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stellar form Terapagos."), .effect = EFFECT_PLACEHOLDER, //EFFECT_TERA_STARSTORM .power = 120, - .type = TYPE_NORMAL, // Stellar type if used by Terapagos-Stellar .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, // MOVE_TARGET_BOTH if used by Terapagos-Stellar - .priority = 0, + .type = TYPE_NORMAL, // Stellar type if used by Terapagos-Stellar .category = DAMAGE_CATEGORY_SPECIAL, - .assistBanned = TRUE, - .copycatBanned = TRUE, + .target = MOVE_TARGET_SELECTED, // MOVE_TARGET_BOTH if used by Terapagos-Stellar + .pp = 5, + .priority = 0, .mimicBanned = TRUE, + .copycatBanned = TRUE, + .assistBanned = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), }, @@ -19555,12 +19550,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "twice as strong."), .effect = EFFECT_FICKLE_BEAM, .power = 80, - .type = TYPE_DRAGON, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, }, [MOVE_BURNING_BULWARK] = @@ -19571,13 +19566,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the foe if struck."), .effect = EFFECT_PROTECT, .power = 0, - .type = TYPE_FIRE, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 4, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .priority = 4, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -19591,12 +19586,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sSuckerPunchDescription, .effect = EFFECT_SUCKER_PUNCH, .power = 70, - .type = TYPE_ELECTRIC, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 1, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 1, }, [MOVE_MIGHTY_CLEAVE] = @@ -19605,12 +19600,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sFeintDescription, .effect = EFFECT_HIT, .power = 95, - .type = TYPE_ROCK, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .makesContact = TRUE, .ignoresProtect = TRUE, .slicingMove = TRUE, @@ -19624,12 +19619,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the target. Strikes twice."), .effect = EFFECT_HIT, .power = 50, - .type = TYPE_STEEL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .strikeCount = 2, .slicingMove = TRUE, }, @@ -19640,12 +19635,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sWringOutDescription, .effect = EFFECT_WRING_OUT, .power = 1, - .type = TYPE_STEEL, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, }, @@ -19657,12 +19652,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "ratio, especially if Dragons."), .effect = EFFECT_DRAGON_CHEER, .power = 0, - .type = TYPE_DRAGON, .accuracy = 0, - .pp = 15, - .target = MOVE_TARGET_ALLY, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_ALLY, + .pp = 15, + .priority = 0, .ignoresSubstitute = TRUE, }, @@ -19674,12 +19669,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "stats were boosted this turn."), .effect = EFFECT_HIT, .power = 80, - .type = TYPE_FAIRY, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .soundMove = TRUE, .ignoresSubstitute = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -19697,12 +19692,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "doubles if last move failed."), .effect = EFFECT_STOMPING_TANTRUM, .power = 75, - .type = TYPE_FIRE, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .makesContact = TRUE, }, @@ -19714,12 +19709,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "misses, the user is hurt."), .effect = EFFECT_RECOIL_IF_MISS, .power = 100, - .type = TYPE_ELECTRIC, .accuracy = 95, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 0, .makesContact = TRUE, }, @@ -19731,12 +19726,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "damage and prevent healing."), .effect = EFFECT_HIT, .power = 75, - .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .soundMove = TRUE, .ignoresSubstitute = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -19747,18 +19742,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = [MOVE_UPPER_HAND] = { - .effect = EFFECT_UPPER_HAND, .name = COMPOUND_STRING("Upper Hand"), .description = COMPOUND_STRING( "Makes the target flinch if\n" "readying a priority move."), + .effect = EFFECT_UPPER_HAND, .power = 65, - .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 15, - .target = MOVE_TARGET_SELECTED, - .priority = 3, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 15, + .priority = 3, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -19774,12 +19769,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "that may badly poison."), .effect = EFFECT_HIT, .power = 100, - .type = TYPE_POISON, .accuracy = 100, - .pp = 5, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 5, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_TOXIC, .chance = 50, @@ -19793,12 +19788,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, //determined from move type + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_ALL_OUT_PUMMELING] = { @@ -19806,12 +19801,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_FIGHTING, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_SUPERSONIC_SKYSTRIKE] = { @@ -19819,12 +19814,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_FLYING, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_ACID_DOWNPOUR] = { @@ -19832,12 +19827,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_POISON, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_TECTONIC_RAGE] = { @@ -19845,12 +19840,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_GROUND, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_CONTINENTAL_CRUSH] = @@ -19859,12 +19854,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_ROCK, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_SAVAGE_SPIN_OUT] = { @@ -19872,12 +19867,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_BUG, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_NEVER_ENDING_NIGHTMARE] = { @@ -19885,12 +19880,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_GHOST, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_CORKSCREW_CRASH] = { @@ -19898,12 +19893,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_STEEL, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_INFERNO_OVERDRIVE] = { @@ -19911,12 +19906,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_FIRE, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_HYDRO_VORTEX] = { @@ -19924,12 +19919,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_WATER, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_BLOOM_DOOM] = { @@ -19937,12 +19932,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_GRASS, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_GIGAVOLT_HAVOC] = { @@ -19950,12 +19945,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_ELECTRIC, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_SHATTERED_PSYCHE] = { @@ -19963,12 +19958,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_SUBZERO_SLAMMER] = { @@ -19976,12 +19971,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_ICE, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_DEVASTATING_DRAKE] = { @@ -19989,12 +19984,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_DRAGON, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_BLACK_HOLE_ECLIPSE] = { @@ -20002,12 +19997,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_DARK, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_TWINKLE_TACKLE] = { @@ -20015,12 +20010,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 1, - .type = TYPE_FAIRY, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_CATASTROPIKA] = { @@ -20028,12 +20023,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 210, - .type = TYPE_ELECTRIC, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_10000000_VOLT_THUNDERBOLT] = { @@ -20041,13 +20036,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 195, - .type = TYPE_ELECTRIC, .accuracy = 0, - .criticalHitStage = 2, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, + .criticalHitStage = 2, }, [MOVE_STOKED_SPARKSURFER] = { @@ -20055,12 +20050,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 175, - .type = TYPE_ELECTRIC, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 100, @@ -20072,12 +20067,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_EXTREME_EVOBOOST, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_USER, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 1, + .priority = 0, }, [MOVE_PULVERIZING_PANCAKE] = { @@ -20085,12 +20080,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 210, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_GENESIS_SUPERNOVA] = { @@ -20098,12 +20093,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT_SET_REMOVE_TERRAIN, .power = 185, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, .argument = ARG_SET_PSYCHIC_TERRAIN, // Set Psychic Terrain. If there's a different field terrain active, overwrite it. }, [MOVE_SINISTER_ARROW_RAID] = @@ -20112,12 +20107,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 180, - .type = TYPE_GHOST, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_MALICIOUS_MOONSAULT] = { @@ -20125,12 +20120,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 180, - .type = TYPE_DARK, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_OCEANIC_OPERETTA] = { @@ -20138,12 +20133,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 195, - .type = TYPE_WATER, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_SPLINTERED_STORMSHARDS] = { @@ -20151,12 +20146,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT_SET_REMOVE_TERRAIN, .power = 190, - .type = TYPE_ROCK, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, .argument = ARG_TRY_REMOVE_TERRAIN_HIT, // Remove the active field terrain if there is one. }, [MOVE_LETS_SNUGGLE_FOREVER] = @@ -20165,12 +20160,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 190, - .type = TYPE_FAIRY, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_CLANGOROUS_SOULBLAZE] = { @@ -20178,12 +20173,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 185, - .type = TYPE_DRAGON, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_BOTH, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_BOTH, + .pp = 1, + .priority = 0, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -20198,12 +20193,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_SUPER_FANG, .power = 1, - .type = TYPE_FAIRY, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_SEARING_SUNRAZE_SMASH] = { @@ -20211,12 +20206,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 200, - .type = TYPE_STEEL, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_MENACING_MOONRAZE_MAELSTROM] = { @@ -20224,12 +20219,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 200, - .type = TYPE_GHOST, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_LIGHT_THAT_BURNS_THE_SKY] = { @@ -20237,12 +20232,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 200, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_SOUL_STEALING_7_STAR_STRIKE] = { @@ -20250,12 +20245,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_HIT, .power = 195, - .type = TYPE_GHOST, .accuracy = 0, - .pp = 1, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 1, + .priority = 0, }, [MOVE_MAX_GUARD] = @@ -20264,12 +20259,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_PROTECT, .power = 0, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_USER, - .priority = 4, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .target = MOVE_TARGET_USER, + .pp = 10, + .priority = 4, }, [MOVE_MAX_FLARE] = @@ -20278,12 +20273,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 1, - .type = TYPE_FIRE, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_SUN, }, @@ -20293,12 +20288,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 1, - .type = TYPE_BUG, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_LOWER_SP_ATK, }, @@ -20308,12 +20303,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 1, - .type = TYPE_ELECTRIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_ELECTRIC_TERRAIN, }, @@ -20323,12 +20318,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 1, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_LOWER_SPEED, }, @@ -20338,12 +20333,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 1, - .type = TYPE_FIGHTING, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_RAISE_TEAM_ATTACK, }, @@ -20353,12 +20348,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 1, - .type = TYPE_GHOST, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_LOWER_DEFENSE, }, @@ -20368,12 +20363,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 1, - .type = TYPE_ICE, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_HAIL, }, @@ -20383,12 +20378,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 1, - .type = TYPE_POISON, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_RAISE_TEAM_SP_ATK, }, @@ -20398,12 +20393,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 1, - .type = TYPE_WATER, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_RAIN, }, @@ -20413,12 +20408,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 1, - .type = TYPE_FLYING, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_RAISE_TEAM_SPEED, }, @@ -20428,12 +20423,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 1, - .type = TYPE_FAIRY, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_MISTY_TERRAIN, }, @@ -20443,12 +20438,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 1, - .type = TYPE_DRAGON, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_LOWER_ATTACK, }, @@ -20458,12 +20453,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 1, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_PSYCHIC_TERRAIN, }, @@ -20473,12 +20468,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 1, - .type = TYPE_ROCK, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_SANDSTORM, }, @@ -20488,14 +20483,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 1, - .type = TYPE_GROUND, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = MAX_EFFECT_RAISE_TEAM_SP_DEF, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, + .argument = MAX_EFFECT_RAISE_TEAM_SP_DEF, }, [MOVE_MAX_DARKNESS] = @@ -20504,12 +20499,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 1, - .type = TYPE_DARK, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_LOWER_SP_DEF, }, @@ -20519,12 +20514,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_GRASS, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_GRASSY_TERRAIN, }, @@ -20534,12 +20529,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_STEEL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_RAISE_TEAM_DEFENSE, }, @@ -20549,12 +20544,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_GRASS, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_VINE_LASH, }, @@ -20564,12 +20559,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_FIRE, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_WILDFIRE, }, @@ -20579,12 +20574,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_WATER, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_CANNONADE, }, @@ -20594,12 +20589,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_BUG, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_EFFECT_SPORE_FOES, }, @@ -20609,12 +20604,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_ELECTRIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_PARALYZE_FOES, }, @@ -20624,12 +20619,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_CONFUSE_FOES_PAY_DAY, }, @@ -20639,12 +20634,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_FIGHTING, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_CRIT_PLUS, }, @@ -20654,12 +20649,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_GHOST, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_MEAN_LOOK, }, @@ -20669,12 +20664,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_WATER, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_LOWER_SPEED_2_FOES, }, @@ -20684,12 +20679,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_ICE, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_AURORA_VEIL, }, @@ -20699,12 +20694,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_INFATUATE_FOES, }, @@ -20714,12 +20709,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_RECYCLE_BERRIES, }, @@ -20729,12 +20724,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_POISON, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_POISON_FOES, }, @@ -20744,12 +20739,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_STEEL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_TORMENT_FOES, }, @@ -20759,14 +20754,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_GRASS, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .ignoresTargetAbility = TRUE, + .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO }, [MOVE_G_MAX_FIREBALL] = @@ -20775,14 +20770,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_FIRE, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .ignoresTargetAbility = TRUE, + .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO }, [MOVE_G_MAX_HYDROSNIPE] = @@ -20791,14 +20786,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_WATER, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .ignoresTargetAbility = TRUE, + .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO }, [MOVE_G_MAX_WIND_RAGE] = @@ -20807,12 +20802,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_FLYING, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_DEFOG, }, @@ -20822,12 +20817,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_GRAVITY, }, @@ -20837,12 +20832,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_WATER, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_STEALTH_ROCK, }, @@ -20852,12 +20847,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_ROCK, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_VOLCALITH, }, @@ -20867,12 +20862,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_GRASS, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_LOWER_EVASIVENESS_FOES, }, @@ -20882,12 +20877,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_GRASS, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_AROMATHERAPY, }, @@ -20897,12 +20892,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_GROUND, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_SANDBLAST_FOES, }, @@ -20912,12 +20907,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_ELECTRIC, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_POISON_PARALYZE_FOES, }, @@ -20927,12 +20922,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_FIRE, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_FIRE_SPIN_FOES, }, @@ -20942,12 +20937,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_FAIRY, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_CONFUSE_FOES, }, @@ -20958,12 +20953,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_DARK, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_YAWN_FOE, }, @@ -20973,12 +20968,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_FAIRY, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_HEAL_TEAM, }, @@ -20988,12 +20983,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_STEEL, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_STEELSURGE, }, @@ -21003,12 +20998,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_DRAGON, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_SPITE, }, @@ -21018,12 +21013,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_DARK, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_BYPASS_PROTECT, //EFFECT TODO }, @@ -21033,12 +21028,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, .power = 10, - .type = TYPE_WATER, .accuracy = 0, - .pp = 10, - .target = MOVE_TARGET_SELECTED, - .priority = 0, + .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .target = MOVE_TARGET_SELECTED, + .pp = 10, + .priority = 0, .argument = MAX_EFFECT_BYPASS_PROTECT, //EFFECT TODO }, diff --git a/test/battle/move_effect/upper_hand.c b/test/battle/move_effect/upper_hand.c index 42aaea4a50..797713e6f6 100644 --- a/test/battle/move_effect/upper_hand.c +++ b/test/battle/move_effect/upper_hand.c @@ -99,7 +99,7 @@ SINGLE_BATTLE_TEST("Upper Hand fails if the target moves first") } } -SINGLE_BATTLE_TEST("Upper Hand is boosted by Sheer Force") // why does this move need a special test? +SINGLE_BATTLE_TEST("Upper Hand is boosted by Sheer Force") { GIVEN { ASSUME(gMovesInfo[MOVE_EXTREME_SPEED].category == DAMAGE_CATEGORY_PHYSICAL); From 16ab876241b070868521e4c36b711a7bb863e832 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Mon, 12 Feb 2024 21:47:07 +0900 Subject: [PATCH 08/55] Swapped power/accuracy and type/split Also moved one bit from power to accuracy; raises BP limit to 511, decreases accuracy limit to 127 (which is already more than necessary). --- include/pokemon.h | 6 +- src/data/moves_info.h | 3740 ++++++++++++++++++++--------------------- 2 files changed, 1873 insertions(+), 1873 deletions(-) diff --git a/include/pokemon.h b/include/pokemon.h index 856977bdac..2e305d446e 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -451,11 +451,10 @@ struct MoveInfo const u8 *name; const u8 *description; u16 effect; - u8 power; - u8 accuracy; - u16 type:5; u16 category:2; + u16 power:9; // up to 511 + u16 accuracy:7; u16 target:9; u8 pp; union { @@ -468,6 +467,7 @@ struct MoveInfo u32 strikeCount:4; // Max 15 hits. Defaults to 1 if not set. May apply its effect on each hit. u32 criticalHitStage:2; u32 alwaysCriticalHit:1; + // 14 bits left to complete this word - continues into flags // Flags u32 makesContact:1; diff --git a/src/data/moves_info.h b/src/data/moves_info.h index e6f202bd0f..f09c4ece3f 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -120,10 +120,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("-"), .description = COMPOUND_STRING(""), .effect = EFFECT_HIT, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 0, .priority = 0, @@ -139,10 +139,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Pounds the foe with\n" "forelegs or tail."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 35, .priority = 0, @@ -161,10 +161,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A chopping attack with a\n" "high critical-hit ratio."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 25, .priority = 0, @@ -183,10 +183,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Repeatedly slaps the foe\n" "2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .power = 15, - .accuracy = 85, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 15, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -204,10 +204,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Repeatedly punches the foe\n" "2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .power = 18, - .accuracy = 85, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 18, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -226,10 +226,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A strong punch thrown with\n" "incredible power."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 85, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -248,10 +248,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Throws coins at the foe.\n" "Money is recovered after."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -271,10 +271,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A fiery punch that may burn\n" "the foe."), .effect = EFFECT_HIT, - .power = 75, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 75, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -301,10 +301,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "freeze the foe."), #endif .effect = EFFECT_HIT, - .power = 75, - .accuracy = 100, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 75, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -327,10 +327,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An electrified punch that\n" "may paralyze the foe."), .effect = EFFECT_HIT, - .power = 75, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 75, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -353,10 +353,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Scratches the foe with\n" "sharp claws."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 35, .priority = 0, @@ -374,10 +374,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Grips the foe with large and\n" "powerful pincers."), .effect = EFFECT_HIT, - .power = 55, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 55, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 30, .priority = 0, @@ -395,10 +395,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A powerful pincer attack\n" "that may cause fainting."), .effect = EFFECT_OHKO, - .power = 1, - .accuracy = 30, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 30, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -416,10 +416,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A 2-turn move that strikes\n" "the foe on the 2nd turn."), .effect = EFFECT_TWO_TURNS_ATTACK, - .power = 80, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 10, .priority = 0, @@ -441,10 +441,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A fighting dance that\n" "sharply raises Attack."), .effect = EFFECT_ATTACK_UP_2, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 30, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -464,10 +464,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Cuts the foe with sharp\n" "scythes, claws, etc."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 95, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 30, .priority = 0, @@ -486,10 +486,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes the foe with a gust\n" "of wind whipped up by wings."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 35, .priority = 0, @@ -509,10 +509,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes the foe with wings\n" "spread wide."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 35, .priority = 0, @@ -530,10 +530,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Blows away the foe with\n" "wind and ends the battle."), .effect = EFFECT_ROAR, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 0 : 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 0 : 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -557,10 +557,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Flies up on the first turn,\n" "then strikes the next turn."), .effect = EFFECT_SEMI_INVULNERABLE, - .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 90 : 70, - .accuracy = 95, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 90 : 70, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -583,10 +583,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Binds and squeezes the foe\n" "for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, - .power = 15, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 75, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 15, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 75, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -608,10 +608,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slams the foe with a long\n" "tail, vine, etc."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 75, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 75, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -630,10 +630,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes the foe with\n" "slender, whiplike vines."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 45 : 35, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 45 : 35, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, #if B_UPDATED_MOVE_DATA >= GEN_6 .pp = 25, @@ -657,10 +657,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stomps the enemy with a big\n" "foot. May cause flinching."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 65, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -684,10 +684,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A double-kicking attack\n" "that strikes the foe twice."), .effect = EFFECT_HIT, - .power = 30, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 30, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 30, .priority = 0, @@ -706,10 +706,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An extremely powerful kick\n" "with intense force."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 75, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 75, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -727,6 +727,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A strong jumping kick. May\n" "miss and hurt the kicker."), .effect = EFFECT_RECOIL_IF_MISS, + .type = TYPE_FIGHTING, + .category = DAMAGE_CATEGORY_PHYSICAL, #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 100, #elif B_UPDATED_MOVE_DATA >= GEN_4 @@ -735,8 +737,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .power = 70, #endif .accuracy = 95, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 25, .priority = 0, @@ -755,10 +755,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A fast kick delivered from\n" "a rapid spin."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 85, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -781,10 +781,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Reduces the foe's accuracy\n" "by hurling sand in its face."), .effect = EFFECT_ACCURACY_DOWN, - .power = 0, - .accuracy = 100, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, @@ -803,10 +803,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A ramming attack that may\n" "cause flinching."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -828,10 +828,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Jabs the foe with sharp\n" "horns."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 65, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 25, .priority = 0, @@ -849,10 +849,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Jabs the foe 2 to 5 times\n" "with sharp horns, etc."), .effect = EFFECT_MULTI_HIT, - .power = 15, - .accuracy = 85, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 15, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -870,10 +870,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A one-hit KO attack that\n" "uses a horn like a drill."), .effect = EFFECT_OHKO, - .power = 1, - .accuracy = 30, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 30, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -891,6 +891,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Charges the foe with a full-\n" "body tackle."), .effect = EFFECT_HIT, + .type = TYPE_NORMAL, + .category = DAMAGE_CATEGORY_PHYSICAL, #if B_UPDATED_MOVE_DATA >= GEN_7 .power = 40, #elif B_UPDATED_MOVE_DATA >= GEN_5 @@ -899,8 +901,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .power = 35, #endif .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 95, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .target = MOVE_TARGET_SELECTED, .pp = 35, .priority = 0, @@ -918,10 +918,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A full-body slam that may\n" "cause paralysis."), .effect = EFFECT_HIT, - .power = 85, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 85, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -945,10 +945,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Wraps and squeezes the foe\n" BINDING_TURNS" times with vines, etc."), .effect = EFFECT_HIT, - .power = 15, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 85, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 15, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 85, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -969,10 +969,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A reckless charge attack\n" "that also hurts the user."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 85, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -991,10 +991,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A rampage of 2 to 3 turns\n" "that confuses the user."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 120 : 90, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 120 : 90, + .accuracy = 100, .target = MOVE_TARGET_RANDOM, .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 20, .priority = 0, @@ -1017,10 +1017,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A life-risking tackle that\n" "also hurts the user."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -1039,10 +1039,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Wags the tail to lower the\n" "foe's Defense."), .effect = EFFECT_DEFENSE_DOWN, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 30, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, @@ -1061,10 +1061,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A toxic attack with barbs,\n" "etc., that may poison."), .effect = EFFECT_HIT, - .power = 15, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 15, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 35, .priority = 0, @@ -1085,10 +1085,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stingers on the forelegs\n" "jab the foe twice."), .effect = EFFECT_HIT, - .power = 25, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 25, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -1111,10 +1111,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sharp pins are fired to\n" "strike 2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 25 : 14, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 95 : 85, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 25 : 14, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 95 : 85, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -1131,10 +1131,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Frightens the foe with a\n" "leer to lower Defense."), .effect = EFFECT_DEFENSE_DOWN, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 30, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, @@ -1153,10 +1153,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Bites with vicious fangs.\n" "May cause flinching."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 25, .priority = 0, @@ -1179,10 +1179,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Growls cutely to reduce the\n" "foe's Attack."), .effect = EFFECT_ATTACK_DOWN, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 40, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -1203,10 +1203,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the foe flee to end\n" "the battle."), .effect = EFFECT_ROAR, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 0 : 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 0 : 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -1230,10 +1230,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A soothing song lulls the\n" "foe into a deep slumber."), .effect = EFFECT_SLEEP, - .power = 0, - .accuracy = 55, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 55, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -1254,10 +1254,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Emits bizarre sound waves\n" "that may confuse the foe."), .effect = EFFECT_CONFUSE, - .power = 0, - .accuracy = 55, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 55, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -1278,10 +1278,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Launches shock waves that\n" "always inflict 20 HP damage."), .effect = EFFECT_FIXED_DAMAGE_ARG, - .power = 1, - .accuracy = 90, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 1, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -1299,6 +1299,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Psychically disables one of\n" "the foe's moves."), .effect = EFFECT_DISABLE, + .type = TYPE_NORMAL, + .category = DAMAGE_CATEGORY_STATUS, .power = 0, #if B_UPDATED_MOVE_DATA >= GEN_5 .accuracy = 100, @@ -1307,8 +1309,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .accuracy = 55, #endif - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -1332,10 +1332,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May lower Defense."), #endif .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 30, .priority = 0, @@ -1356,10 +1356,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A weak fire attack that may\n" "inflict a burn."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 25, .priority = 0, @@ -1380,10 +1380,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A powerful fire attack that\n" "may inflict a burn."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -1404,10 +1404,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates a mist that stops\n" "reduction of abilities."), .effect = EFFECT_MIST, - .power = 0, - .accuracy = 0, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 30, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, @@ -1428,10 +1428,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Squirts water to attack\n" "the foe."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 25, .priority = 0, @@ -1448,10 +1448,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Blasts water at high power\n" "to strike the foe."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, - .accuracy = 80, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, + .accuracy = 80, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -1468,10 +1468,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates a huge wave, then\n" "crashes it down on the foe."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, + .accuracy = 100, .target = B_UPDATED_MOVE_DATA >= GEN_4 ? MOVE_TARGET_FOES_AND_ALLY : MOVE_TARGET_BOTH, .pp = 15, .priority = 0, @@ -1494,10 +1494,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "beam that may freeze it."), #endif .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, - .accuracy = 100, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -1524,10 +1524,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "storm that may freeze it."), #endif .effect = B_BLIZZARD_HAIL >= GEN_4 ? EFFECT_BLIZZARD : EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, - .accuracy = 70, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, + .accuracy = 70, .target = MOVE_TARGET_BOTH, .pp = 5, .priority = 0, @@ -1549,10 +1549,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires a peculiar ray that\n" "may confuse the foe."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 65, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -1573,10 +1573,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Forcefully sprays bubbles\n" "that may lower Speed."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 65, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -1597,10 +1597,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires a rainbow-colored\n" "beam that may lower Attack."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 100, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 65, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -1619,10 +1619,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Hyper Beam"), .description = sHyperBeamDescription, .effect = EFFECT_HIT, - .power = 150, - .accuracy = 90, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 150, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -1644,10 +1644,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks the foe with a\n" "jabbing beak, etc."), .effect = EFFECT_HIT, - .power = 35, - .accuracy = 100, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 35, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 35, .priority = 0, @@ -1665,10 +1665,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A corkscrewing attack with\n" "the beak acting as a drill."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -1686,10 +1686,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A reckless body slam that\n" "also hurts the user."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 80, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 80, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 25, .priority = 0, @@ -1708,10 +1708,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A kick that inflicts more\n" "damage on heavier foes."), .effect = EFFECT_LOW_KICK, - .power = 1, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -1729,10 +1729,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Retaliates any physical hit\n" "with double the power."), .effect = EFFECT_COUNTER, - .power = 1, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_DEPENDS, .pp = 20, .priority = -5, @@ -1755,10 +1755,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts damage identical\n" "to the user's level."), .effect = EFFECT_LEVEL_DAMAGE, - .power = 1, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -1777,10 +1777,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Builds enormous power,\n" "then slams the foe."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -1798,10 +1798,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that absorbs\n" "half the damage inflicted."), .effect = EFFECT_ABSORB, - .power = 20, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 20, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_4 ? 25 : 20, .priority = 0, @@ -1818,10 +1818,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Mega Drain"), .description = sMegaDrainDescription, .effect = EFFECT_ABSORB, - .power = 40, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_4 ? 15 : 10, .priority = 0, @@ -1840,10 +1840,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Plants a seed on the foe to\n" "steal HP on every turn."), .effect = EFFECT_LEECH_SEED, - .power = 0, - .accuracy = 90, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -1862,10 +1862,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Forces the body to grow\n" "and heightens Sp. Atk."), .effect = B_GROWTH_STAT_RAISE >= GEN_5 ? EFFECT_GROWTH : EFFECT_SPECIAL_ATTACK_UP, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 40, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -1886,10 +1886,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Cuts the enemy with leaves.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .power = 55, - .accuracy = 95, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 55, + .accuracy = 95, .target = MOVE_TARGET_BOTH, .pp = 25, .priority = 0, @@ -1908,10 +1908,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Absorbs light in one turn,\n" "then attacks next turn."), .effect = EFFECT_SOLAR_BEAM, - .power = 120, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -1931,10 +1931,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Scatters a toxic powder\n" "that may poison the foe."), .effect = EFFECT_POISON, - .power = 0, - .accuracy = 75, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 75, .target = MOVE_TARGET_SELECTED, .pp = 35, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -1954,10 +1954,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Scatters a powder that may\n" "paralyze the foe."), .effect = EFFECT_PARALYZE, - .power = 0, - .accuracy = 75, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 75, .target = MOVE_TARGET_SELECTED, .pp = 30, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -1977,10 +1977,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Scatters a powder that may\n" "cause the foe to sleep."), .effect = EFFECT_SLEEP, - .power = 0, - .accuracy = 75, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 75, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -2000,6 +2000,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A rampage of 2 to 3 turns\n" "that confuses the user."), .effect = EFFECT_HIT, + .type = TYPE_GRASS, + .category = DAMAGE_CATEGORY_SPECIAL, #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 120, #elif B_UPDATED_MOVE_DATA == GEN_4 @@ -2008,8 +2010,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .power = 70, #endif .accuracy = 100, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .target = MOVE_TARGET_RANDOM, .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 20, .priority = 0, @@ -2033,10 +2033,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Binds the foe with string\n" "to reduce its Speed."), .effect = B_UPDATED_MOVE_DATA >= GEN_6 ? EFFECT_SPEED_DOWN_2 : EFFECT_SPEED_DOWN, - .power = 0, - .accuracy = 95, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 95, .target = MOVE_TARGET_BOTH, .pp = 40, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -2055,10 +2055,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Launches shock waves that\n" "always inflict 40 HP damage."), .effect = EFFECT_FIXED_DAMAGE_ARG, - .power = 1, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -2077,10 +2077,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Traps the foe in a ring of\n" "fire for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 35 : 15, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 70, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 35 : 15, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 70, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -2101,10 +2101,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An electrical attack that\n" "may paralyze the foe."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 30, .priority = 0, @@ -2125,10 +2125,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A strong electrical attack\n" "that may paralyze the foe."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -2149,10 +2149,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A weak jolt of electricity\n" "that paralyzes the foe."), .effect = EFFECT_PARALYZE, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 90 : 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 90 : 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -2171,10 +2171,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A lightning attack that may\n" "cause paralysis."), .effect = EFFECT_THUNDER, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, - .accuracy = 70, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, + .accuracy = 70, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -2196,10 +2196,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Throws small rocks to\n" "strike the foe."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 90, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -2216,10 +2216,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A powerful quake, but has\n" "no effect on flying foes."), .effect = EFFECT_EARTHQUAKE, - .power = 100, - .accuracy = 100, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 10, .priority = 0, @@ -2239,10 +2239,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A one-hit KO move that\n" "drops the foe in a fissure."), .effect = EFFECT_OHKO, - .power = 1, - .accuracy = 30, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 30, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -2261,10 +2261,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Digs underground the first\n" "turn and strikes next turn."), .effect = EFFECT_SEMI_INVULNERABLE, - .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 80 : 60, - .accuracy = 100, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 80 : 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -2287,10 +2287,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Poisons the foe with an\n" "intensifying toxin."), .effect = EFFECT_TOXIC, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 85, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 85, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -2309,10 +2309,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A psychic attack that may\n" "cause confusion."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 25, .priority = 0, @@ -2333,10 +2333,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A powerful psychic attack\n" "that may lower Sp. Def."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -2357,10 +2357,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A hypnotizing move that\n" "may induce sleep."), .effect = EFFECT_SLEEP, - .power = 0, - .accuracy = 60, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 60, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -2379,10 +2379,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Meditates in a peaceful\n" "fashion to raise Attack."), .effect = EFFECT_ATTACK_UP, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 40, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, @@ -2403,10 +2403,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Relaxes the body to sharply\n" "boost Speed."), .effect = EFFECT_SPEED_UP_2, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 30, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -2427,10 +2427,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An extremely fast attack\n" "that always strikes first."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 30, .priority = 1, @@ -2448,10 +2448,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises the user's Attack\n" "every time it is hit."), .effect = EFFECT_RAGE, - .power = 20, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 20, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -2469,10 +2469,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A psychic move for fleeing\n" "from battle instantly."), .effect = EFFECT_TELEPORT, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, @@ -2492,10 +2492,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts damage identical\n" "to the user's level."), .effect = EFFECT_LEVEL_DAMAGE, - .power = 1, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -2512,10 +2512,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Copies a move used by the\n" "foe during one battle."), .effect = EFFECT_MIMIC, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, @@ -2541,10 +2541,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Emits a screech to sharply\n" "reduce the foe's Defense."), .effect = EFFECT_DEFENSE_DOWN_2, - .power = 0, - .accuracy = 85, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 40, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, @@ -2565,10 +2565,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates illusory copies to\n" "raise evasiveness."), .effect = EFFECT_EVASION_UP, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 15, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -2589,10 +2589,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Recovers up to half the\n" "user's maximum HP."), .effect = EFFECT_RESTORE_HP, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, #if B_UPDATED_MOVE_DATA >= GEN_9 .pp = 5, @@ -2620,10 +2620,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stiffens the body's \n" "muscles to raise Defense."), .effect = EFFECT_DEFENSE_UP, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 30, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -2644,10 +2644,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Minimizes the user's size\n" "to raise evasiveness."), .effect = EFFECT_MINIMIZE, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 10 : 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -2668,10 +2668,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the foe's accuracy\n" "using smoke, ink, etc."), .effect = EFFECT_ACCURACY_DOWN, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, @@ -2690,10 +2690,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A sinister ray that\n" "confuses the foe."), .effect = EFFECT_CONFUSE, - .power = 0, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -2712,10 +2712,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Withdraws the body into its\n" "hard shell to raise Defense."), .effect = EFFECT_DEFENSE_UP, - .power = 0, - .accuracy = 0, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 40, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -2736,10 +2736,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Curls up to conceal weak\n" "spots and raise Defense."), .effect = EFFECT_DEFENSE_CURL, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 40, .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, @@ -2760,10 +2760,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates a barrier that\n" "sharply raises Defense."), .effect = EFFECT_DEFENSE_UP_2, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 30, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -2784,10 +2784,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates a wall of light that\n" "lowers Sp. Atk damage."), .effect = EFFECT_LIGHT_SCREEN, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 30, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -2808,10 +2808,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates a black haze that\n" "eliminates all stat changes."), .effect = EFFECT_HAZE, - .power = 0, - .accuracy = 0, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 30, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, @@ -2832,10 +2832,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates a wall of light that\n" "weakens physical attacks."), .effect = EFFECT_REFLECT, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -2856,10 +2856,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Focuses power to raise the\n" "critical-hit ratio."), .effect = EFFECT_FOCUS_ENERGY, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 30, .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, @@ -2881,10 +2881,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Endures attack for 2\n" "turns to retaliate double."), .effect = EFFECT_BIDE, - .power = 1, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, .target = MOVE_TARGET_USER, .pp = 10, .priority = B_UPDATED_MOVE_DATA >= GEN_4 ? 1 : 0, @@ -2905,10 +2905,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Waggles a finger to use any\n" "Pokémon move at random."), .effect = EFFECT_METRONOME, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_DEPENDS, .pp = 10, .priority = 0, @@ -2934,10 +2934,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Counters the foe's attack\n" "with the same move."), .effect = EFFECT_MIRROR_MOVE, - .power = 0, - .accuracy = 0, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_DEPENDS, .pp = 20, .zMove = { .effect = Z_EFFECT_ATK_UP_2 }, @@ -2962,10 +2962,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts severe damage but\n" "makes the user faint."), .effect = EFFECT_EXPLOSION, - .power = 200, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 200, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 5, .priority = 0, @@ -2983,10 +2983,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An egg is forcibly hurled at\n" "the foe."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 75, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 75, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -3004,10 +3004,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Licks with a long tongue to\n" "injure. May also paralyze."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 30 : 20, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 30 : 20, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 30, .priority = 0, @@ -3029,10 +3029,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An exhaust-gas attack\n" "that may also poison."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 30 : 20, - .accuracy = 70, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 30 : 20, + .accuracy = 70, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -3053,10 +3053,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sludge is hurled to inflict\n" "damage. May also poison."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 65, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -3077,10 +3077,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Clubs the foe with a bone.\n" "May cause flinching."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 85, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 65, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -3101,10 +3101,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Incinerates everything it\n" "strikes. May cause a burn."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, - .accuracy = 85, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -3125,10 +3125,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Charges the foe with speed\n" "to climb waterfalls."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -3152,10 +3152,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Traps and squeezes the\n" "foe for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, - .power = 35, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 75, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 35, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 75, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 15 : 10, .priority = 0, @@ -3177,10 +3177,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sprays star-shaped rays\n" "that never miss."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 60, + .accuracy = 0, .target = MOVE_TARGET_BOTH, .pp = 20, .priority = 0, @@ -3197,10 +3197,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Tucks in the head, then\n" "attacks on the next turn."), .effect = EFFECT_TWO_TURNS_ATTACK, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 100, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 10 : 15, .priority = 0, @@ -3226,10 +3226,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Launches sharp spikes that\n" "strike 2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .power = 20, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 20, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -3246,10 +3246,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Constricts to inflict pain.\n" "May lower Speed."), .effect = EFFECT_HIT, - .power = 10, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 35, .priority = 0, @@ -3271,10 +3271,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Forgets about something\n" "and sharply raises Sp. Def."), .effect = EFFECT_SPECIAL_DEFENSE_UP_2, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -3295,10 +3295,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Distracts the foe.\n" "May lower accuracy."), .effect = EFFECT_ACCURACY_DOWN, - .power = 0, - .accuracy = 80, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 80, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, @@ -3317,10 +3317,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Recovers up to half the\n" "user's maximum HP."), .effect = EFFECT_SOFTBOILED, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -3342,6 +3342,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A jumping knee kick. If it\n" "misses, the user is hurt."), .effect = EFFECT_RECOIL_IF_MISS, + .type = TYPE_FIGHTING, + .category = DAMAGE_CATEGORY_PHYSICAL, #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 130, #elif B_UPDATED_MOVE_DATA == GEN_4 @@ -3350,8 +3352,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .power = 85, #endif .accuracy = 90, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 20, .priority = 0, @@ -3370,6 +3370,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Intimidates and frightens\n" "the foe into paralysis."), .effect = EFFECT_PARALYZE, + .type = TYPE_NORMAL, + .category = DAMAGE_CATEGORY_STATUS, .power = 0, #if B_UPDATED_MOVE_DATA >= GEN_6 .accuracy = 100, @@ -3378,8 +3380,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .accuracy = 75, #endif - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .target = MOVE_TARGET_SELECTED, .pp = 30, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -3398,10 +3398,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Takes one half the damage\n" "inflicted on a sleeping foe."), .effect = EFFECT_DREAM_EATER, - .power = 100, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -3419,6 +3419,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Envelops the foe in a toxic\n" "gas that may poison."), .effect = EFFECT_POISON, + .type = TYPE_POISON, + .category = DAMAGE_CATEGORY_STATUS, .power = 0, #if B_UPDATED_MOVE_DATA >= GEN_6 .accuracy = 90, @@ -3427,8 +3429,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .accuracy = 55, #endif - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_STATUS, .target = B_UPDATED_MOVE_DATA >= GEN_5 ? MOVE_TARGET_BOTH : MOVE_TARGET_SELECTED, .pp = 40, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -3447,10 +3447,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurls round objects at the\n" "foe 2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .power = 15, - .accuracy = 85, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 15, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -3468,10 +3468,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that steals half\n" "the damage inflicted."), .effect = EFFECT_ABSORB, - .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 80 : 20, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 80 : 20, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_7 ? 10 : 15, .priority = 0, @@ -3491,10 +3491,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Demands a kiss with a scary\n" "face that induces sleep."), .effect = EFFECT_SLEEP, - .power = 0, - .accuracy = 75, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 75, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -3513,10 +3513,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Searches out weak spots,\n" "then strikes the next turn."), .effect = EFFECT_TWO_TURNS_ATTACK, - .power = 140, - .accuracy = 90, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 140, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -3543,10 +3543,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Alters the user's cells to\n" "become a copy of the foe."), .effect = EFFECT_TRANSFORM, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, @@ -3572,10 +3572,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack using bubbles.\n" "May lower the foe's Speed."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 40 : 20, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 40 : 20, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 30, .priority = 0, @@ -3596,10 +3596,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A rhythmic punch that may\n" "confuse the foe."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -3622,10 +3622,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Scatters a cloud of spores\n" "that always induce sleep."), .effect = EFFECT_SLEEP, - .power = 0, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -3645,10 +3645,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Looses a powerful blast of\n" "light that cuts accuracy."), .effect = EFFECT_ACCURACY_DOWN, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 100 : 70, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 100 : 70, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, @@ -3667,10 +3667,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a psychic\n" "wave of varying intensity."), .effect = EFFECT_PSYWAVE, - .power = 1, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 80, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 1, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 80, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -3687,10 +3687,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "It's just a splash...\n" "Has no effect whatsoever."), .effect = EFFECT_DO_NOTHING, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 40, .zMove = { .effect = Z_EFFECT_ATK_UP_3 }, @@ -3711,10 +3711,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Liquifies the user's body\n" "to sharply raise Defense."), .effect = EFFECT_DEFENSE_UP_2, - .power = 0, - .accuracy = 0, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 40, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -3735,10 +3735,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hammers with a pincer. Has a\n" "high critical-hit ratio."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 90, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 85, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 90, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 85, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -3757,10 +3757,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts severe damage but\n" "makes the user faint."), .effect = EFFECT_EXPLOSION, - .power = 250, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 250, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 5, .priority = 0, @@ -3778,10 +3778,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Rakes the foe with sharp\n" "claws, etc., 2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .power = 18, - .accuracy = 80, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 18, + .accuracy = 80, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -3799,10 +3799,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Throws a bone boomerang\n" "that strikes twice."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 90, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -3820,10 +3820,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user sleeps for 2 turns,\n" "restoring HP and status."), .effect = EFFECT_REST, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -3845,10 +3845,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Large boulders are hurled.\n" "May cause flinching."), .effect = EFFECT_HIT, - .power = 75, - .accuracy = 90, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 75, + .accuracy = 90, .target = MOVE_TARGET_BOTH, .pp = 10, .priority = 0, @@ -3869,10 +3869,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with sharp fangs.\n" "May cause flinching."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 90, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -3895,10 +3895,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Reduces the polygon count\n" "and raises Attack."), .effect = EFFECT_ATTACK_UP, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 30, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, @@ -3919,10 +3919,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Changes the user's type\n" "into a known move's type."), .effect = EFFECT_CONVERSION, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 30, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, @@ -3943,10 +3943,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires three types of beams\n" "at the same time."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -3967,10 +3967,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with sharp fangs\n" "and cuts half the foe's HP."), .effect = EFFECT_SUPER_FANG, - .power = 1, - .accuracy = 90, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -3989,10 +3989,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slashes with claws, etc. Has\n" "a high critical-hit ratio."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -4012,10 +4012,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates a decoy using 1/4\n" "of the user's maximum HP."), .effect = EFFECT_SUBSTITUTE, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -4037,10 +4037,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Used only if all PP are gone.\n" "Also hurts the user a little."), .effect = B_UPDATED_MOVE_DATA >= GEN_4 ? EFFECT_RECOIL_HP_25 : EFFECT_HIT, - .power = 50, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -4071,10 +4071,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Copies the foe's last move\n" "permanently."), .effect = EFFECT_SKETCH, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, @@ -4103,10 +4103,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Kicks the foe 3 times in a\n" "row with rising intensity."), .effect = EFFECT_TRIPLE_KICK, - .power = 10, - .accuracy = 90, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -4125,10 +4125,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "While attacking, it may\n" "steal the foe's held item."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 40, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 25 : 10, .priority = 0, @@ -4154,10 +4154,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Ensnares the foe to stop it\n" "from fleeing or switching."), .effect = EFFECT_MEAN_LOOK, - .power = 0, - .accuracy = 0, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -4177,10 +4177,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Senses the foe's action to\n" "ensure the next move's hit."), .effect = EFFECT_LOCK_ON, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -4198,10 +4198,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts 1/4 damage on a\n" "sleeping foe every turn."), .effect = EFFECT_NIGHTMARE, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 100 : 0, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 100 : 0, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -4220,10 +4220,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A fiery charge attack that\n" "may inflict a burn."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 25, .priority = 0, @@ -4246,10 +4246,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A loud attack that can be\n" "used only while asleep."), .effect = EFFECT_SNORE, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 50 : 40, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 50 : 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -4273,10 +4273,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A move that functions\n" "differently for GHOSTS."), .effect = EFFECT_CURSE, - .power = 0, - .accuracy = 0, .type = B_UPDATED_MOVE_TYPES >= GEN_5 ? TYPE_GHOST : TYPE_MYSTERY, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_CURSE }, @@ -4297,10 +4297,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts more damage when\n" "the user's HP is down."), .effect = EFFECT_FLAIL, - .power = 1, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -4318,10 +4318,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the user resistant\n" "to the last attack's type."), .effect = EFFECT_CONVERSION_2, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 30, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, @@ -4342,10 +4342,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Launches a vacuumed blast.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 95, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 100, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -4364,10 +4364,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Spores cling to the foe,\n" "sharply reducing Speed."), .effect = EFFECT_SPEED_DOWN_2, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 85, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 85, .target = B_UPDATED_MOVE_DATA >= GEN_6 ? MOVE_TARGET_BOTH : MOVE_TARGET_SELECTED, .pp = 40, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -4387,10 +4387,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts more damage when\n" "the user's HP is down."), .effect = EFFECT_FLAIL, - .power = 1, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -4408,10 +4408,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Spitefully cuts the PP\n" "of the foe's last move."), .effect = EFFECT_SPITE, - .power = 0, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, @@ -4431,10 +4431,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Blasts the foe with a snowy\n" "gust. May cause freezing."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 25, .priority = 0, @@ -4455,10 +4455,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades attack, but may fail\n" "if used in succession."), .effect = EFFECT_PROTECT, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -4479,10 +4479,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A punch is thrown at wicked\n" "speed to strike first."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 30, .priority = 1, @@ -4501,10 +4501,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Frightens with a scary face\n" "to sharply reduce Speed."), .effect = EFFECT_SPEED_DOWN_2, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 90, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -4521,10 +4521,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Feint Attack"), .description = sFeintDescription, .effect = EFFECT_HIT, - .power = 60, - .accuracy = 0, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -4542,10 +4542,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Demands a kiss with a cute\n" "look. May cause confusion."), .effect = EFFECT_CONFUSE, - .power = 0, - .accuracy = 75, .type = B_UPDATED_MOVE_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 75, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -4564,10 +4564,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Maximizes Attack while\n" "sacrificing HP."), .effect = EFFECT_BELLY_DRUM, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, @@ -4588,10 +4588,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sludge is hurled to inflict\n" "damage. May also poison."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -4613,10 +4613,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurls mud in the foe's face\n" "to reduce its accuracy."), .effect = EFFECT_HIT, - .power = 20, - .accuracy = 100, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 20, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -4637,10 +4637,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires a lump of ink to\n" "damage and cut accuracy."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 85, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 65, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -4662,10 +4662,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sets spikes that hurt a \n" "foe switching in."), .effect = EFFECT_SPIKES, - .power = 0, - .accuracy = 0, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_OPPONENTS_FIELD, .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -4687,10 +4687,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful and sure to cause\n" "paralysis, but inaccurate."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 120 : 100, - .accuracy = 50, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 120 : 100, + .accuracy = 50, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -4712,10 +4712,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Negates the foe's efforts\n" "to heighten evasiveness."), .effect = EFFECT_FORESIGHT, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 0 : 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 0 : 100, .target = MOVE_TARGET_SELECTED, .pp = 40, .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, @@ -4735,10 +4735,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "If the user faints, the foe\n" "is also made to faint."), .effect = EFFECT_DESTINY_BOND, - .power = 0, - .accuracy = 0, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 5, .zMove = { .effect = Z_EFFECT_FOLLOW_ME }, @@ -4762,10 +4762,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Any Pokémon hearing this\n" "song faints in 3 turns."), .effect = EFFECT_PERISH_SONG, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 5, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -4787,10 +4787,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A chilling attack that\n" "lowers the foe's Speed."), .effect = EFFECT_HIT, - .power = 55, - .accuracy = 95, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 55, + .accuracy = 95, .target = MOVE_TARGET_BOTH, .pp = 15, .priority = 0, @@ -4812,10 +4812,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades attack, but may fail\n" "if used in succession."), .effect = EFFECT_PROTECT, - .power = 0, - .accuracy = 0, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 5, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, @@ -4838,10 +4838,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes the foe with a bone\n" "in hand 2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .power = 25, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 80, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 25, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 80, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -4858,10 +4858,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Locks on to the foe to\n" "ensure the next move hits."), .effect = EFFECT_LOCK_ON, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -4879,10 +4879,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A rampage of 2 to 3 turns\n" "that confuses the user."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 120 : 90, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 120 : 90, + .accuracy = 100, .target = MOVE_TARGET_RANDOM, .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 15, .priority = 0, @@ -4905,10 +4905,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Causes a sandstorm that\n" "rages for several turns."), .effect = EFFECT_SANDSTORM, - .power = 0, - .accuracy = 0, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -4929,10 +4929,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that steals half\n" "the damage inflicted."), .effect = EFFECT_ABSORB, - .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 75 : 60, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 75 : 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_4 ? 10 : 5, .priority = 0, @@ -4951,10 +4951,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Endures any attack for\n" "1 turn, leaving at least 1HP."), .effect = EFFECT_ENDURE, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -4977,10 +4977,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Charms the foe and sharply\n" "reduces its Attack."), .effect = EFFECT_ATTACK_DOWN_2, - .power = 0, - .accuracy = 100, .type = B_UPDATED_MOVE_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -4999,10 +4999,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack lasting 5 turns\n" "with rising intensity."), .effect = EFFECT_ROLLOUT, - .power = 30, - .accuracy = 90, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 30, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -5020,10 +5020,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("False Swipe"), .description = sFalseSwipeDescription, .effect = EFFECT_FALSE_SWIPE, - .power = 40, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 40, .priority = 0, @@ -5041,10 +5041,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Confuses the foe, but also\n" "sharply raises Attack."), .effect = EFFECT_SWAGGER, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 85 : 90, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 85 : 90, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -5063,10 +5063,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Recovers up to half the\n" "user's maximum HP."), .effect = EFFECT_SOFTBOILED, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -5088,10 +5088,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An electrified tackle that\n" "may paralyze the foe."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 65, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -5113,6 +5113,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that intensifies\n" "on each successive hit."), .effect = EFFECT_FURY_CUTTER, + .type = TYPE_BUG, + .category = DAMAGE_CATEGORY_PHYSICAL, #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 40, #elif B_UPDATED_MOVE_DATA >= GEN_5 @@ -5121,8 +5123,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .power = 10, #endif .accuracy = 95, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -5141,10 +5141,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes the foe with hard\n" "wings spread wide."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 90, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 25, .priority = 0, @@ -5167,10 +5167,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fixes the foe with a mean\n" "look that prevents escape."), .effect = EFFECT_MEAN_LOOK, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 5, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -5190,10 +5190,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the opposite gender\n" "less likely to attack."), .effect = EFFECT_ATTRACT, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -5213,10 +5213,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Uses an available move\n" "randomly while asleep."), .effect = EFFECT_SLEEP_TALK, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_DEPENDS, .pp = 10, .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, @@ -5243,10 +5243,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Chimes soothingly to heal\n" "all status abnormalities."), .effect = EFFECT_HEAL_BELL, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .pp = 5, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, @@ -5269,10 +5269,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that increases\n" "in power with friendship."), .effect = EFFECT_RETURN, - .power = 1, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -5290,10 +5290,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A gift in the form of a\n" "bomb. May restore HP."), .effect = EFFECT_PRESENT, - .power = 1, - .accuracy = 90, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -5311,10 +5311,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that is stronger\n" "if the Trainer is disliked."), .effect = EFFECT_FRUSTRATION, - .power = 1, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -5332,10 +5332,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A mystical force prevents\n" "all status problems."), .effect = EFFECT_SAFEGUARD, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 25, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -5356,10 +5356,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Adds the user and foe's HP,\n" "then shares them equally."), .effect = EFFECT_PAIN_SPLIT, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -5377,10 +5377,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A mystical fire attack that\n" "may inflict a burn."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 95, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -5402,10 +5402,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A ground-shaking attack\n" "of random intensity."), .effect = EFFECT_MAGNITUDE, - .power = 1, - .accuracy = 100, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 30, .priority = 0, @@ -5424,10 +5424,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful and sure to cause\n" "confusion, but inaccurate."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 50, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 50, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -5450,10 +5450,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A brutal ramming attack\n" "using out-thrust horns."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 85, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -5471,10 +5471,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes the foe with an\n" "incredible blast of breath."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -5496,10 +5496,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Switches out the user while\n" "keeping effects in play."), .effect = EFFECT_BATON_PASS, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 40, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -5519,10 +5519,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the foe repeat its\n" "last move over 2 to 6 turns."), .effect = EFFECT_ENCORE, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -5543,10 +5543,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts bad damage if used\n" "on a foe switching out."), .effect = EFFECT_PURSUIT, - .power = 40, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -5565,10 +5565,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Spins the body at high\n" "speed to strike the foe."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 50 : 20, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 50 : 20, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 40, .priority = 0, @@ -5598,10 +5598,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Allures the foe to reduce\n" "evasiveness."), .effect = B_UPDATED_MOVE_DATA >= GEN_6 ? EFFECT_EVASION_DOWN_2 : EFFECT_EVASION_DOWN, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 20, .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, @@ -5620,10 +5620,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a rock-hard\n" "tail. May lower Defense."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 75, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 75, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -5645,10 +5645,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A claw attack that may\n" "raise the user's Attack."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 95, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 35, .priority = 0, @@ -5671,10 +5671,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the user's move last,\n" "but it never misses."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 0, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = -1, @@ -5692,10 +5692,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Restores HP. The amount\n" "varies with the weather."), .effect = EFFECT_MORNING_SUN, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 5, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -5717,10 +5717,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Restores HP. The amount\n" "varies with the weather."), .effect = EFFECT_SYNTHESIS, - .power = 0, - .accuracy = 0, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 5, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -5742,10 +5742,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Restores HP. The amount\n" "varies with the weather."), .effect = EFFECT_MOONLIGHT, - .power = 0, - .accuracy = 0, .type = B_UPDATED_MOVE_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 5, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -5767,10 +5767,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The effectiveness varies\n" "with the user."), .effect = EFFECT_HIDDEN_POWER, - .power = B_HIDDEN_POWER_DMG >= GEN_6 ? 60 : 1, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_HIDDEN_POWER_DMG >= GEN_6 ? 60 : 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -5787,10 +5787,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A double-chopping attack.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 80, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 80, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -5809,10 +5809,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Whips up a vicious twister\n" "to tear at the foe."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 20, .priority = 0, @@ -5835,10 +5835,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts the power of Water-\n" "type moves for 5 turns."), .effect = EFFECT_RAIN_DANCE, - .power = 0, - .accuracy = 0, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 5, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -5858,10 +5858,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts the power of Fire-\n" "type moves for 5 turns."), .effect = EFFECT_SUNNY_DAY, - .power = 0, - .accuracy = 0, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 5, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -5885,10 +5885,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May lower Sp. Def."), #endif .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -5915,10 +5915,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Counters the foe's special\n" "attack at double the power."), .effect = EFFECT_MIRROR_COAT, - .power = 1, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_DEPENDS, .pp = 20, .priority = -5, @@ -5939,10 +5939,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Copies the foe's effect(s)\n" "and gives to the user."), .effect = EFFECT_PSYCH_UP, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, @@ -5964,10 +5964,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An extremely fast and\n" "powerful attack."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 2 : 1, @@ -5985,10 +5985,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that may raise\n" "all stats."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -6011,10 +6011,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurls a black blob that may\n" "lower the foe's Sp. Def."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -6036,6 +6036,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Heightens inner power to\n" "strike 2 turns later."), .effect = EFFECT_FUTURE_SIGHT, + .type = TYPE_PSYCHIC, + .category = DAMAGE_CATEGORY_SPECIAL, #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 120, #elif B_UPDATED_MOVE_DATA >= GEN_5 @@ -6044,8 +6046,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .power = 80, #endif .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 90, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 15, .priority = 0, @@ -6064,10 +6064,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A rock-crushing attack\n" "that may lower Defense."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 40 : 20, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 40 : 20, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -6089,10 +6089,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Traps and hurts the foe in\n" "a whirlpool for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 35 : 15, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 70, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 35 : 15, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 70, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -6113,10 +6113,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Summons party Pokémon to\n" "join in the attack."), .effect = EFFECT_BEAT_UP, - .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 1 : 10, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 1 : 10, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -6133,10 +6133,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A 1st-turn, 1st-strike move\n" "that causes flinching."), .effect = EFFECT_FIRST_TURN_ONLY, - .power = 40, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 3 : 1, @@ -6162,10 +6162,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #endif "turns and prevents sleep."), .effect = EFFECT_UPROAR, - .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 50, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 50, + .accuracy = 100, .target = MOVE_TARGET_RANDOM, .pp = 10, .priority = 0, @@ -6190,10 +6190,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Charges up power for up to\n" "3 turns."), .effect = EFFECT_STOCKPILE, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_4 ? 20 : 10, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, @@ -6214,10 +6214,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Releases stockpiled power\n" "(the more the better)."), .effect = EFFECT_SPIT_UP, - .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 1 : 100, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 1 : 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -6235,10 +6235,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Absorbs stockpiled power\n" "and restores HP."), .effect = EFFECT_SWALLOW, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -6260,10 +6260,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Exhales a hot breath on the\n" "foe. May inflict a burn."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 95 : 100, - .accuracy = 90, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 95 : 100, + .accuracy = 90, .target = MOVE_TARGET_BOTH, .pp = 10, .priority = 0, @@ -6285,10 +6285,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Summons a hailstorm that\n" "strikes every turn."), .effect = EFFECT_HAIL, - .power = 0, - .accuracy = 0, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -6308,10 +6308,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Torments the foe and stops\n" "successive use of a move."), .effect = EFFECT_TORMENT, - .power = 0, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -6330,10 +6330,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Confuses the foe, but\n" "raises its Sp. Atk."), .effect = EFFECT_FLATTER, - .power = 0, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -6352,10 +6352,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts a burn on the foe\n" "with intense fire."), .effect = EFFECT_WILL_O_WISP, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 85 : 75, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 85 : 75, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, @@ -6374,10 +6374,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user faints and lowers\n" "the foe's abilities."), .effect = EFFECT_MEMENTO, - .power = 0, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_RESTORE_REPLACEMENT_HP }, @@ -6395,10 +6395,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts Attack when burned,\n" "paralyzed, or poisoned."), .effect = EFFECT_FACADE, - .power = 70, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -6416,10 +6416,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A powerful loyalty attack.\n" "The user flinches if hit."), .effect = EFFECT_FOCUS_PUNCH, - .power = 150, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 150, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = -3, @@ -6445,10 +6445,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful against paralyzed\n" "foes, but also heals them."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 70 : 60, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 70 : 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -6470,10 +6470,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Draws attention to make\n" "foes attack only the user."), .effect = EFFECT_FOLLOW_ME, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -6496,10 +6496,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The type of attack varies\n" "depending on the location."), .effect = EFFECT_NATURE_POWER, - .power = 1, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_DEPENDS, .pp = 20, .priority = 0, @@ -6523,10 +6523,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Charges power to boost the\n" "electric move used next."), .effect = EFFECT_CHARGE, - .power = 0, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -6547,10 +6547,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Taunts the foe into only\n" "using attack moves."), .effect = EFFECT_TAUNT, - .power = 0, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, @@ -6570,10 +6570,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts the power of the\n" "recipient's moves."), .effect = EFFECT_HELPING_HAND, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = B_UPDATED_MOVE_DATA >= GEN_4 ? MOVE_TARGET_ALLY : MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -6597,10 +6597,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Tricks the foe into trading\n" "held items."), .effect = EFFECT_TRICK, - .power = 0, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, @@ -6621,10 +6621,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Mimics the target and\n" "copies its special ability."), .effect = EFFECT_ROLE_PLAY, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -6645,10 +6645,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A wish that restores HP.\n" "It takes time to work."), .effect = EFFECT_WISH, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -6670,10 +6670,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks randomly with one\n" "of the partner's moves."), .effect = EFFECT_ASSIST, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_DEPENDS, .pp = 20, .priority = 0, @@ -6699,10 +6699,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lays roots that restore HP.\n" "The user can't switch out."), .effect = EFFECT_INGRAIN, - .power = 0, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -6724,10 +6724,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts strength sharply,\n" "but lowers abilities."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -6749,10 +6749,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Reflects special effects\n" "back to the attacker."), .effect = EFFECT_MAGIC_COAT, - .power = 0, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_DEPENDS, .pp = 15, .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, @@ -6772,10 +6772,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Recycles a used item for\n" "one more use."), .effect = EFFECT_RECYCLE, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, @@ -6794,10 +6794,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Revenge"), .description = sRevengeDescription, .effect = EFFECT_REVENGE, - .power = 60, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = -4, @@ -6815,10 +6815,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Destroys barriers such as\n" "REFLECT and causes damage."), .effect = EFFECT_BRICK_BREAK, - .power = 75, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 75, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -6836,10 +6836,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lulls the foe into yawning,\n" "then sleeping next turn."), .effect = EFFECT_YAWN, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -6858,10 +6858,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Knocks down the foe's held\n" "item to prevent its use."), .effect = EFFECT_KNOCK_OFF, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 65 : 20, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 65 : 20, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -6882,10 +6882,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Gains power if the user's HP\n" "is lower than the foe's HP."), .effect = EFFECT_ENDEAVOR, - .power = 1, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -6904,10 +6904,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The higher the user's HP,\n" "the more damage caused."), .effect = EFFECT_ERUPTION, - .power = 150, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 150, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 5, .priority = 0, @@ -6924,10 +6924,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user swaps special\n" "abilities with the target."), .effect = EFFECT_SKILL_SWAP, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -6946,10 +6946,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Prevents foes from using\n" "moves known by the user."), .effect = EFFECT_IMPRISON, - .power = 0, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, @@ -6971,10 +6971,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Heals poisoning, paralysis,\n" "or a burn."), .effect = EFFECT_REFRESH, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, @@ -6995,10 +6995,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "If the user faints, deletes\n" "all PP of foe's last move."), .effect = EFFECT_GRUDGE, - .power = 0, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_USER, .pp = 5, .zMove = { .effect = Z_EFFECT_FOLLOW_ME }, @@ -7019,10 +7019,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Steals the effects of the\n" "move the target uses next."), .effect = EFFECT_SNATCH, - .power = 0, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_DEPENDS, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, @@ -7044,10 +7044,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack with effects\n" "that vary by location."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -7068,10 +7068,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Dives underwater the first\n" "turn and strikes next turn."), .effect = EFFECT_SEMI_INVULNERABLE, - .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 80 : 60, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 80 : 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -7094,10 +7094,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Straight-arm punches that\n" "strike the foe 2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .power = 15, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 15, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -7115,10 +7115,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Alters the Pokémon's type\n" "depending on the location."), .effect = EFFECT_CAMOUFLAGE, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, @@ -7139,10 +7139,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Flashes a light that sharply\n" "raises Sp. Atk."), .effect = B_UPDATED_MOVE_DATA >= GEN_5 ? EFFECT_SPECIAL_ATTACK_UP_3 : EFFECT_SPECIAL_ATTACK_UP_2, - .power = 0, - .accuracy = 0, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -7163,10 +7163,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a burst of\n" "light. May lower Sp. Def."), .effect = EFFECT_HIT, - .power = (B_UPDATED_MOVE_DATA >= GEN_9) ? 95 : 70, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = (B_UPDATED_MOVE_DATA >= GEN_9) ? 95 : 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -7187,10 +7187,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a flurry of\n" "down. May lower Sp. Atk."), .effect = EFFECT_HIT, - .power = (B_UPDATED_MOVE_DATA >= GEN_9) ? 95 : 70, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = (B_UPDATED_MOVE_DATA >= GEN_9) ? 95 : 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -7212,10 +7212,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Envelops the foe with down\n" "to sharply reduce Attack."), .effect = EFFECT_ATTACK_DOWN_2, - .power = 0, - .accuracy = 100, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -7235,10 +7235,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Confuses all Pokémon on\n" "the scene."), .effect = EFFECT_TEETER_DANCE, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 20, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -7258,10 +7258,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A kick with a high critical-\n" "hit ratio. May cause a burn."), .effect = EFFECT_HIT, - .power = 85, - .accuracy = 90, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 85, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -7284,10 +7284,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Covers the user in mud to\n" "raise electrical resistance."), .effect = EFFECT_MUD_SPORT, - .power = 0, - .accuracy = 100, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 15, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -7308,10 +7308,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A 5-turn attack that gains\n" "power on successive hits."), .effect = EFFECT_ROLLOUT, - .power = 30, - .accuracy = 90, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 30, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -7332,10 +7332,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with thorny arms.\n" "May cause flinching."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -7358,10 +7358,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slacks off and restores\n" "half the maximum HP."), .effect = EFFECT_RESTORE_HP, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -7383,10 +7383,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A loud attack that uses\n" "sound waves to injure."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 10, .priority = 0, @@ -7405,10 +7405,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A sharp-fanged attack.\n" "May badly poison the foe."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -7431,10 +7431,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Tears at the foe with sharp\n" "claws. May lower Defense."), .effect = EFFECT_HIT, - .power = 75, - .accuracy = 95, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 75, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -7456,10 +7456,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful, but leaves the\n" "user immobile the next turn."), .effect = EFFECT_HIT, - .power = 150, - .accuracy = 90, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 150, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -7480,10 +7480,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful, but leaves the\n" "user immobile the next turn."), .effect = EFFECT_HIT, - .power = 150, - .accuracy = 90, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 150, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -7504,10 +7504,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires a meteor-like punch.\n" "May raise Attack."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 100, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 85, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 100, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 85, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -7531,10 +7531,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that may shock\n" "the foe into flinching."), .effect = EFFECT_HIT, - .power = 30, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 30, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -7557,10 +7557,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The move's type and power\n" "change with the weather."), .effect = EFFECT_WEATHER_BALL, - .power = 50, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -7578,10 +7578,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Heals all status problems\n" "with a soothing scent."), .effect = EFFECT_HEAL_BELL, - .power = 0, - .accuracy = 0, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .pp = 5, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, @@ -7602,10 +7602,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Feigns crying to sharply\n" "lower the foe's Sp. Def."), .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2, - .power = 0, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -7624,10 +7624,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hacks with razorlike wind.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 55, - .accuracy = 95, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 55, + .accuracy = 95, .target = MOVE_TARGET_BOTH, .pp = 25, .priority = 0, @@ -7647,10 +7647,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Allows a full-power attack,\n" "but sharply lowers Sp. Atk."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 140, - .accuracy = 90, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 140, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -7672,10 +7672,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Negates the foe's efforts\n" "to heighten evasiveness."), .effect = EFFECT_FORESIGHT, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, .target = MOVE_TARGET_SELECTED, .pp = 40, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, @@ -7695,10 +7695,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stops the foe from moving\n" "with rocks and cuts Speed."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 50, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 95 : 80, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 50, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 95 : 80, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 15 : 10, .priority = 0, @@ -7719,10 +7719,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A powdery attack that may\n" "raise abilities."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -7745,10 +7745,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Emits a horrible screech\n" "that sharply lowers Sp. Def."), .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2, - .power = 0, - .accuracy = 85, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 40, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -7769,10 +7769,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lulls the foe into sleep\n" "with a pleasant melody."), .effect = EFFECT_SLEEP, - .power = 0, - .accuracy = 55, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 55, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -7793,10 +7793,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the foe laugh to\n" "lower Attack and Defense."), .effect = EFFECT_TICKLE, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -7815,10 +7815,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises Defense and Sp. Def\n" "with a mystic power."), .effect = EFFECT_COSMIC_POWER, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -7839,10 +7839,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts more damage if the\n" "user's HP is high."), .effect = EFFECT_ERUPTION, - .power = 150, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 150, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 5, .priority = 0, @@ -7859,10 +7859,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A strange beam attack that\n" "may confuse the foe."), .effect = EFFECT_HIT, - .power = 75, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 75, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -7883,10 +7883,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An unavoidable punch that\n" "is thrown from shadows."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 0, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -7905,10 +7905,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a peculiar\n" "power. May cause flinching."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 30, .priority = 0, @@ -7930,10 +7930,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An uppercut thrown as if\n" "leaping into the sky."), .effect = EFFECT_HIT, - .power = 85, - .accuracy = 90, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 85, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -7953,10 +7953,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Traps and hurts the foe in\n" "quicksand for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 35 : 15, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 70, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 35 : 15, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 70, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -7976,10 +7976,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A chilling attack that\n" "causes fainting if it hits."), .effect = EFFECT_OHKO, - .power = 1, - .accuracy = 30, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 1, + .accuracy = 30, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -7996,10 +7996,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with muddy water.\n" "May lower accuracy."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, - .accuracy = 85, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, + .accuracy = 85, .target = MOVE_TARGET_BOTH, .pp = 10, .priority = 0, @@ -8021,10 +8021,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Shoots 2 to 5 seeds in a row\n" "to strike the foe."), .effect = EFFECT_MULTI_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 25 : 10, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 25 : 10, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 30, .priority = 0, @@ -8042,10 +8042,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An extremely speedy and\n" "unavoidable attack."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 0, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -8064,10 +8064,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks the foe by firing\n" "2 to 5 icicles in a row."), .effect = EFFECT_MULTI_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 25 : 10, - .accuracy = 100, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 25 : 10, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 30, .priority = 0, @@ -8084,10 +8084,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hardens the body's surface\n" "to sharply raise Defense."), .effect = EFFECT_DEFENSE_UP_2, - .power = 0, - .accuracy = 0, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 15, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -8108,10 +8108,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Blocks the foe's way to\n" "prevent escape."), .effect = EFFECT_MEAN_LOOK, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 5, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -8131,10 +8131,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Howls to raise the spirit\n" "and boosts Attack."), .effect = B_UPDATED_MOVE_DATA >= GEN_8 ? EFFECT_ATTACK_UP_USER_ALLY : EFFECT_ATTACK_UP, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 40, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, @@ -8156,10 +8156,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slashes the foe with sharp\n" "claws."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -8177,10 +8177,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful, but leaves the\n" "user immobile the next turn."), .effect = EFFECT_HIT, - .power = 150, - .accuracy = 90, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 150, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -8202,10 +8202,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Bulks up the body to boost\n" "both Attack and Defense."), .effect = EFFECT_BULK_UP, - .power = 0, - .accuracy = 0, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, @@ -8226,10 +8226,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Bounces up, then down the\n" "next turn. May paralyze."), .effect = EFFECT_SEMI_INVULNERABLE, - .power = 85, - .accuracy = 85, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 85, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -8256,10 +8256,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurls mud at the foe and\n" "reduces Speed."), .effect = EFFECT_HIT, - .power = 55, - .accuracy = 95, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 55, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -8280,10 +8280,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Has a high critical-hit\n" "ratio. May also poison."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 25, .priority = 0, @@ -8306,10 +8306,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Cutely begs to obtain an\n" "item held by the foe."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 60 : 40, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 60 : 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 25 : 40, .priority = 0, @@ -8334,10 +8334,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A life-risking tackle that\n" "slightly hurts the user."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -8362,10 +8362,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a strange leaf\n" "that cannot be evaded."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 0, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 60, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -8382,10 +8382,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user becomes soaked to\n" "raise resistance to fire."), .effect = EFFECT_WATER_SPORT, - .power = 0, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 15, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -8406,10 +8406,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises Sp. Atk and Sp. Def\n" "by focusing the mind."), .effect = EFFECT_CALM_MIND, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -8430,10 +8430,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slashes with a sharp leaf.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 90 : 70, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 90 : 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -8453,10 +8453,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A mystical dance that ups\n" "Attack and Speed."), .effect = EFFECT_DRAGON_DANCE, - .power = 0, - .accuracy = 0, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -8478,10 +8478,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurls boulders at the foe\n" "2 to 5 times in a row."), .effect = EFFECT_MULTI_HIT, - .power = 25, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 80, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 25, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 80, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -8499,10 +8499,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A fast and unavoidable\n" "electric attack."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 0, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 60, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -8519,10 +8519,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with ultrasonic\n" "waves. May confuse the foe."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -8544,10 +8544,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Summons strong sunlight to\n" "attack 2 turns later."), .effect = EFFECT_FUTURE_SIGHT, - .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 140 : 120, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 85, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 140 : 120, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 85, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -8566,10 +8566,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Allows a full-power attack,\n" "but sharply lowers Sp. Atk."), .effect = EFFECT_HIT, - .power = 140, - .accuracy = 90, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 140, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -8590,10 +8590,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Restores the user's HP by\n" "half of its max HP."), .effect = EFFECT_ROOST, - .power = 0, - .accuracy = 0, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -8615,10 +8615,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Gravity is intensified\n" "negating levitation."), .effect = EFFECT_GRAVITY, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 5, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -8639,10 +8639,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Negate evasiveness and\n" "Dark-type's immunities."), .effect = EFFECT_MIRACLE_EYE, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 40, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -8662,10 +8662,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful against sleeping\n" "foes, but also heals them."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 70 : 60, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 70 : 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -8687,10 +8687,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A swinging fist attack\n" "that also lowers Speed."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 90, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -8713,10 +8713,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A high-speed spin that does\n" "more damage to faster foes."), .effect = EFFECT_GYRO_BALL, - .power = 1, - .accuracy = 100, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -8733,10 +8733,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Healing Wish"), .description = sHealingWishDescription, .effect = EFFECT_HEALING_WISH, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .priority = 0, @@ -8757,10 +8757,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Does double damage to foes\n" "with half HP."), .effect = EFFECT_BRINE, - .power = 65, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 65, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -8777,10 +8777,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The effectiveness varies\n" "with the held Berry."), .effect = EFFECT_NATURAL_GIFT, - .power = 1, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -8797,10 +8797,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that hits foes\n" "using moves like Protect."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 30 : 50, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 30 : 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 2, @@ -8823,10 +8823,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Pluck"), .description = sPluckDescription, .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -8847,10 +8847,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Whips up a turbulent breeze\n" "that raises Speed."), .effect = EFFECT_TAILWIND, - .power = 0, - .accuracy = 0, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 15 : 30, .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, @@ -8872,10 +8872,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user sharply raises\n" "one of its stats."), .effect = EFFECT_ACUPRESSURE, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .pp = 30, .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, @@ -8896,10 +8896,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Retaliates any hit with\n" "greater power."), .effect = EFFECT_METAL_BURST, - .power = 1, - .accuracy = 100, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_DEPENDS, .pp = 10, .priority = 0, @@ -8915,10 +8915,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("U-turn"), .description = sUTurnDescription, .effect = EFFECT_HIT_ESCAPE, - .power = 70, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -8934,10 +8934,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Close Combat"), .description = sCloseCombatDescription, .effect = EFFECT_HIT, - .power = 120, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -8959,10 +8959,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that gains power\n" "if the user moves last."), .effect = EFFECT_PAYBACK, - .power = 50, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -8980,10 +8980,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that gains power\n" "if the foe has been hurt."), .effect = EFFECT_ASSURANCE, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 50, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -9001,10 +9001,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Prevents the foe from\n" "using any items."), .effect = EFFECT_EMBARGO, - .power = 0, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -9023,10 +9023,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The effectiveness varies\n" "with the held item."), .effect = EFFECT_FLING, - .power = 1, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -9044,10 +9044,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Transfers status problems\n" "to the foe."), .effect = EFFECT_PSYCHO_SHIFT, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 90, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPATK_UP_2 }, @@ -9065,10 +9065,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The less PP the move has\n" "the more damage it does."), .effect = EFFECT_TRUMP_CARD, - .power = 1, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -9086,10 +9086,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Prevents the foe from\n" "recovering any HP."), .effect = EFFECT_HEAL_BLOCK, - .power = 0, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 15, .zMove = { .effect = Z_EFFECT_SPATK_UP_2 }, @@ -9106,10 +9106,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Wring Out"), .description = sWringOutDescription, .effect = EFFECT_WRING_OUT, - .power = 1, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -9127,10 +9127,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user swaps its Attack\n" "and Defense stats."), .effect = EFFECT_POWER_TRICK, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, @@ -9151,10 +9151,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stomach acid suppresses\n" "the foe's ability."), .effect = EFFECT_GASTRO_ACID, - .power = 0, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -9173,10 +9173,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Prevents the foe from\n" "landing critical hits."), .effect = EFFECT_LUCKY_CHANT, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 30, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, @@ -9197,10 +9197,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Executes the foe's attack\n" "with greater power."), .effect = EFFECT_ME_FIRST, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, @@ -9228,10 +9228,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user mimics the last\n" "move used by a foe."), .effect = EFFECT_COPYCAT, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_DEPENDS, .pp = 20, .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, @@ -9258,10 +9258,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swaps changes to Attack\n" "and Sp. Atk with the foe."), .effect = EFFECT_POWER_SWAP, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -9280,10 +9280,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swaps changes to Defense\n" "and Sp. Def with the foe."), .effect = EFFECT_GUARD_SWAP, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -9302,10 +9302,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Does more damage if the\n" "foe has powered up."), .effect = EFFECT_PUNISHMENT, - .power = 60, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -9323,10 +9323,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Can only be used if every\n" "other move has been used."), .effect = EFFECT_LAST_RESORT, - .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 140 : 130, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 140 : 130, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -9344,10 +9344,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Plants a seed on the foe\n" "giving it Insomnia."), .effect = EFFECT_WORRY_SEED, - .power = 0, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -9364,10 +9364,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Sucker Punch"), .description = sSuckerPunchDescription, .effect = EFFECT_SUCKER_PUNCH, - .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 70 : 80, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 70 : 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 1, @@ -9385,10 +9385,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sets spikes that poison a\n" "foe switching in."), .effect = EFFECT_TOXIC_SPIKES, - .power = 0, - .accuracy = 0, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_OPPONENTS_FIELD, .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -9410,10 +9410,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swaps any stat changes\n" "with the foe."), .effect = EFFECT_HEART_SWAP, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, @@ -9432,10 +9432,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Forms a veil of water\n" "that restores HP."), .effect = EFFECT_AQUA_RING, - .power = 0, - .accuracy = 0, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -9456,10 +9456,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user levitates with\n" "electromagnetism."), .effect = EFFECT_MAGNET_RISE, - .power = 0, - .accuracy = 0, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, @@ -9481,10 +9481,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A charge that may burn the\n" "foe. Also hurts the user."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -9508,10 +9508,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A shock wave attack that\n" "may paralyze the foe."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -9533,10 +9533,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with an aura blast\n" "that cannot be evaded."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 90, - .accuracy = 0, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 90, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -9555,10 +9555,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Polishes the body to\n" "sharply raise Speed."), .effect = EFFECT_SPEED_UP_2, - .power = 0, - .accuracy = 0, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -9579,10 +9579,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A stabbing attack that\n" "may poison the foe."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -9604,10 +9604,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a horrible\n" "aura. May cause flinching."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -9629,10 +9629,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits as soon as possible.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -9652,10 +9652,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user swings its tail\n" "like a wave to attack."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 90, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -9673,10 +9673,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A barrage of hard seeds\n" "is fired at the foe."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -9694,10 +9694,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a blade of\n" "air. May cause flinching."), .effect = EFFECT_HIT, - .power = 75, - .accuracy = 95, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 75, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 15 : 20, .priority = 0, @@ -9719,10 +9719,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slashes the foe with crossed\n" "scythes, claws, etc."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -9741,10 +9741,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A damaging sound wave that\n" "may lower Sp. Def."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -9767,10 +9767,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Generates a shock wave to\n" "damage the foe."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 85 : 90, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 85 : 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -9788,10 +9788,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Tackles the foe with menace.\n" "May cause flinching."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 75, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 75, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -9814,10 +9814,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with rays of light\n" "that sparkle like diamonds."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 70, - .accuracy = 100, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -9832,10 +9832,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Drain Punch"), .description = sMegaDrainDescription, .effect = EFFECT_ABSORB, - .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 75 : 60, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 75 : 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 5, .priority = 0, @@ -9855,10 +9855,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Whirls its fists to send\n" "a wave that strikes first."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 30, .priority = 1, @@ -9875,10 +9875,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks at full power.\n" "May lower Sp. Def."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 70, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 120, + .accuracy = 70, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -9900,10 +9900,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Draws power from nature to\n" "attack. May lower Sp. Def."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 80, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -9925,10 +9925,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A low altitude charge that\n" "also hurts the user."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 100, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -9947,10 +9947,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the ground erupt with\n" "power. May lower Sp. Def."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -9972,10 +9972,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swaps items with the foe\n" "faster than the eye can see."), .effect = EFFECT_TRICK, - .power = 0, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, @@ -9994,10 +9994,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Giga Impact"), .description = sHyperBeamDescription, .effect = EFFECT_HIT, - .power = 150, - .accuracy = 90, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 150, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -10019,10 +10019,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Thinks bad thoughts to\n" "sharply boost Sp. Atk."), .effect = EFFECT_SPECIAL_ATTACK_UP_2, - .power = 0, - .accuracy = 0, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -10043,10 +10043,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Punches as fast as a bul-\n" "let. It always hits first."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 30, .priority = 1, @@ -10063,10 +10063,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Avalanche"), .description = sRevengeDescription, .effect = EFFECT_REVENGE, - .power = 60, - .accuracy = 100, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 10, .priority = -4, @@ -10084,10 +10084,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurls a chunk of ice that\n" "always strike first."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 30, .priority = 1, @@ -10104,10 +10104,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes with a shadow claw.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -10126,10 +10126,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May cause flinching or\n" "leave the foe paralyzed."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 95, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 65, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -10156,10 +10156,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May cause flinching or\n" "leave the foe frozen."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 95, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 65, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -10186,10 +10186,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May cause flinching or\n" "leave the foe with a burn."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 95, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 65, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -10216,10 +10216,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Extends the user's shadow\n" "to strike first."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 30, .priority = 1, @@ -10237,10 +10237,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Throws a blob of mud to\n" "damage and cut accuracy."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 85, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 65, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -10262,10 +10262,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Tears with psychic blades.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -10284,10 +10284,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with a strong head-\n" "butt. May cause flinching."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 90, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -10309,10 +10309,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Emits a flash of energy to\n" "damage and cut accuracy."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 85, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 65, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -10333,10 +10333,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Releases a blast of light\n" "that may lower Sp. Def."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -10357,10 +10357,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A charging attack that may\n" "confuse the foe."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 85, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -10382,10 +10382,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Removes obstacles and\n" "lowers evasion."), .effect = EFFECT_DEFOG, - .power = 0, - .accuracy = 0, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, @@ -10405,10 +10405,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slower Pokémon get to move\n" "first for 5 turns."), .effect = EFFECT_TRICK_ROOM, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 5, .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, @@ -10427,10 +10427,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Casts comets onto the foe.\n" "Harshly lowers the Sp. Atk."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 140, - .accuracy = 90, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 140, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -10451,10 +10451,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Zaps the foes with electri-\n" "city. May paralyze them."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 15, .priority = 0, @@ -10473,10 +10473,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Lava Plume"), .description = sLavaPlumeDescription, .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 15, .priority = 0, @@ -10497,10 +10497,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Whips up a storm of leaves.\n" "Harshly lowers the Sp. Atk."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 140, - .accuracy = 90, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 140, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -10521,10 +10521,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Violently lashes the foe\n" "with vines or tentacles."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 85, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -10540,10 +10540,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Rock Wrecker"), .description = sHyperBeamDescription, .effect = EFFECT_HIT, - .power = 150, - .accuracy = 90, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 150, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -10565,10 +10565,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A slash that may poison a\n" "foe and do critical damage."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -10592,10 +10592,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Shoots filthy garbage at\n" "the foe. May also poison."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 70, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 70, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -10616,10 +10616,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slams the foe with a hard\n" "head. May cause flinching."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -10641,10 +10641,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Launches a magnet that\n" "strikes without fail."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 0, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -10662,10 +10662,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stabs the foe with stones.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 80, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 80, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -10683,10 +10683,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the opposite gender\n" "sharply reduce its Sp. Atk."), .effect = EFFECT_CAPTIVATE, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, @@ -10705,10 +10705,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sets floating stones that\n" "hurt a foe switching in."), .effect = EFFECT_STEALTH_ROCK, - .power = 0, - .accuracy = 0, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_OPPONENTS_FIELD, .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -10729,10 +10729,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A snare attack that does\n" "more damage to heavier foes."), .effect = EFFECT_LOW_KICK, - .power = 1, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -10751,10 +10751,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a sound wave\n" "that causes confusion."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 65 : 60, - .accuracy = 100, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 65 : 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -10790,10 +10790,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The type varies with the\n" "kind of Plate held."), .effect = EFFECT_CHANGE_TYPE_ON_ITEM, - .power = 100, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -10809,10 +10809,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Bug Bite"), .description = sPluckDescription, .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -10833,10 +10833,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires a beam of electricity.\n" "May raise Sp. Atk."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 90, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 50, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -10858,10 +10858,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slams the body into a foe.\n" "The user gets hurt too."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -10880,10 +10880,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes first by dashing\n" "at the foe at a high speed."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 1, @@ -10901,10 +10901,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Underlings pummel the foe.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -10922,10 +10922,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises Defense and Sp. Def\n" "with a living shield."), .effect = EFFECT_COSMIC_POWER, - .power = 0, - .accuracy = 0, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -10946,10 +10946,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user's underlings show\n" "up to heal half its max HP."), .effect = EFFECT_RESTORE_HP, - .power = 0, - .accuracy = 0, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -10971,10 +10971,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A life-risking headbutt that\n" "seriously hurts the user."), .effect = EFFECT_HIT, - .power = 150, - .accuracy = 80, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 150, + .accuracy = 80, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -10993,10 +10993,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slams the foe with a tail\n" "etc. Strikes twice."), .effect = EFFECT_HIT, - .power = 35, - .accuracy = 90, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 35, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -11015,10 +11015,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful, but leaves the\n" "user immobile the next turn."), .effect = EFFECT_HIT, - .power = 150, - .accuracy = 90, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 150, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -11039,10 +11039,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Tears the foe, and space.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 95, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 100, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -11058,10 +11058,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Lunar Dance"), .description = sHealingWishDescription, .effect = EFFECT_HEALING_WISH, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .priority = 0, @@ -11081,10 +11081,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Crush Grip"), .description = sWringOutDescription, .effect = EFFECT_WRING_OUT, - .power = 1, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -11102,10 +11102,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Traps the foe in a vortex\n" "of fire for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 120, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 75 : 70, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 120, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 75 : 70, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -11125,10 +11125,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Drags the foe into total\n" "darkness, inducing Sleep."), .effect = EFFECT_DARK_VOID, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 50 : 80, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 50 : 80, .target = MOVE_TARGET_BOTH, .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -11148,10 +11148,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Generates a shock wave that\n" "sharply reduces Sp. Def."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 85, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 120, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -11172,10 +11172,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A repulsive attack that may\n" "raise all stats."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -11196,10 +11196,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Shadow Force"), .description = sShadowForceDescription, .effect = EFFECT_SEMI_INVULNERABLE, - .power = 120, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -11226,10 +11226,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sharpens its claws to raise\n" "Attack and Accuracy."), .effect = EFFECT_ATTACK_ACCURACY_UP, - .power = 0, - .accuracy = 0, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 15, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, @@ -11250,10 +11250,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades wide-ranging attacks\n" "for one turn."), .effect = EFFECT_PROTECT, - .power = 0, - .accuracy = 0, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -11276,10 +11276,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Averages changes to Defense\n" "and Sp. Def with the foe."), .effect = EFFECT_GUARD_SPLIT, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -11298,10 +11298,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Averages changes to Attack\n" "and Sp. Atk with the foe."), .effect = EFFECT_POWER_SPLIT, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -11320,10 +11320,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Defense and Sp. Def stats\n" "are swapped for 5 turns."), .effect = EFFECT_WONDER_ROOM, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -11340,10 +11340,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Psyshock"), .description = sPsyshockDescription, .effect = EFFECT_PSYSHOCK, - .power = 80, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -11360,10 +11360,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Does double damage if the\n" "foe is poisoned."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, - .power = 65, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 65, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -11381,10 +11381,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sheds additional weight to\n" "sharply boost Speed."), .effect = EFFECT_AUTOTOMIZE, - .power = 0, - .accuracy = 0, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 15, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -11405,10 +11405,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Scatters powder to make\n" "foes attack only the user."), .effect = EFFECT_FOLLOW_ME, - .power = 0, - .accuracy = 0, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -11432,10 +11432,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the foe float. It is\n" "easier to hit for 3 turns."), .effect = EFFECT_TELEKINESIS, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -11455,10 +11455,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hold items lose their\n" "effects for 5 turns."), .effect = EFFECT_MAGIC_ROOM, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -11477,10 +11477,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Throws a rock to knock the\n" "foe down to the ground."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 100, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -11500,10 +11500,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Storm Throw"), .description = sStormThrowDescription, .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 40, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -11522,10 +11522,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A bursting flame that does\n" "damage to all foes."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -11546,10 +11546,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swamps the foe with a wave\n" "of sludge. May also poison."), .effect = EFFECT_HIT, - .power = 95, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 95, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 10, .priority = 0, @@ -11570,10 +11570,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Dances to raise Sp. Atk\n" "Sp. Def and Speed."), .effect = EFFECT_QUIVER_DANCE, - .power = 0, - .accuracy = 0, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -11593,10 +11593,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Heavy Slam"), .description = sHeavySlamDescription, .effect = EFFECT_HEAT_CRASH, - .power = 1, - .accuracy = 100, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -11616,10 +11616,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An odd shock wave that only\n" "damages same-type foes."), .effect = EFFECT_SYNCHRONOISE, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 120 : 70, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 120 : 70, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 10 : 15, .priority = 0, @@ -11636,10 +11636,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurls an orb that does more\n" "damage to slower foes."), .effect = EFFECT_ELECTRO_BALL, - .power = 1, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -11657,10 +11657,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sprays water at the foe\n" "making it Water-type."), .effect = EFFECT_SOAK, - .power = 0, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -11679,10 +11679,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks in a cloak of\n" "flames. Raises Speed."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -11705,10 +11705,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Coils up to raise Attack\n" "Defense and Accuracy."), .effect = EFFECT_COIL, - .power = 0, - .accuracy = 0, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -11729,10 +11729,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks the foe's legs\n" "lowering its Speed."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 65 : 60, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 65 : 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -11754,10 +11754,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sprays a hide-melting acid.\n" "Sharply reduces Sp. Def."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -11779,10 +11779,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The higher the foe's Attack\n" "the more damage caused."), .effect = EFFECT_FOUL_PLAY, - .power = 95, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 95, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -11800,10 +11800,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A beam that changes the\n" "foe's ability to Simple."), .effect = EFFECT_SIMPLE_BEAM, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -11822,10 +11822,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the foe mimic the\n" "user, gaining its ability."), .effect = EFFECT_ENTRAINMENT, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -11844,10 +11844,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Helps out the foe, letting\n" "it move next."), .effect = EFFECT_AFTER_YOU, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -11869,10 +11869,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A song that inflicts damage.\n" "Others can join in too."), .effect = EFFECT_ROUND, - .power = 60, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -11894,10 +11894,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Does more damage every turn\n" "it is used."), .effect = EFFECT_ECHOED_VOICE, - .power = 40, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -11914,10 +11914,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Chip Away"), .description = sChipAwayDescription, .effect = EFFECT_HIT, - .power = 70, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -11936,10 +11936,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with white haze that\n" "eliminates all stat changes."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 0, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 50, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -11959,10 +11959,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The higher the user's stats\n" "the more damage caused."), .effect = EFFECT_STORED_POWER, - .power = 20, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 20, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -11979,10 +11979,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades priority attacks\n" "for one turn."), .effect = EFFECT_PROTECT, - .power = 0, - .accuracy = 0, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 15, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -12005,10 +12005,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user switches places\n" "with its partner."), .effect = EFFECT_ALLY_SWITCH, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 15, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, @@ -12028,10 +12028,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Shoots boiling water at the\n" "foe. May inflict a burn."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -12053,10 +12053,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises offensive stats, but\n" "lowers defensive stats."), .effect = EFFECT_SHELL_SMASH, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 15, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -12077,10 +12077,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Recovers up to half the\n" "target's maximum HP."), .effect = EFFECT_HEAL_PULSE, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -12102,10 +12102,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Does double damage if the\n" "foe has a status problem."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 65 : 50, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 65 : 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -12123,10 +12123,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Takes the foe into the sky\n" "then drops it the next turn."), .effect = EFFECT_SKY_DROP, - .power = 60, - .accuracy = 100, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -12149,10 +12149,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Rotates its gears to raise\n" "Attack and Speed."), .effect = EFFECT_SHIFT_GEAR, - .power = 0, - .accuracy = 0, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -12171,10 +12171,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Circle Throw"), .description = sCircleThrowDescription, .effect = EFFECT_HIT_SWITCH_TARGET, - .power = 60, - .accuracy = 90, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = -6, @@ -12194,10 +12194,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Burns up Berries and Gems\n" "preventing their use."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 30, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 30, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 15, .priority = 0, @@ -12217,10 +12217,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Suppresses the foe, making\n" "it move last."), .effect = EFFECT_QUASH, - .power = 0, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -12239,10 +12239,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Does double damage if the\n" "user has no item."), .effect = EFFECT_ACROBATICS, - .power = 55, - .accuracy = 100, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 55, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -12260,10 +12260,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user reflects the foe's\n" "type, copying it."), .effect = EFFECT_REFLECT_TYPE, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -12283,10 +12283,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that does more\n" "damage if an ally fainted."), .effect = EFFECT_RETALIATE, - .power = 70, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -12304,10 +12304,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user faints to damage\n" "the foe equal to its HP."), .effect = EFFECT_FINAL_GAMBIT, - .power = 1, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -12326,10 +12326,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user gives its held\n" "item to the foe."), .effect = EFFECT_BESTOW, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, @@ -12352,10 +12352,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful and sure to inflict\n" "a burn, but inaccurate."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 50, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 100, + .accuracy = 50, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -12376,10 +12376,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a column of\n" "water. May make a rainbow."), .effect = EFFECT_PLEDGE, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 50, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -12397,10 +12397,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a column of\n" "fire. May burn the grass."), .effect = EFFECT_PLEDGE, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 50, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -12418,10 +12418,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a column of\n" "grass. May create a swamp."), .effect = EFFECT_PLEDGE, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 50, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -12437,10 +12437,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Volt Switch"), .description = sUTurnDescription, .effect = EFFECT_HIT_ESCAPE, - .power = 70, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -12457,10 +12457,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Resisting, the user attacks\n" "the foe. Lowers Sp. Atk."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 50 : 30, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 50 : 30, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 20, .priority = 0, @@ -12481,10 +12481,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stomps down on the ground.\n" "Lowers Speed."), .effect = EFFECT_BULLDOZE, - .power = 60, - .accuracy = 100, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 20, .priority = 0, @@ -12504,10 +12504,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Frost Breath"), .description = sStormThrowDescription, .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 40, - .accuracy = 90, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 40, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -12523,10 +12523,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Dragon Tail"), .description = sCircleThrowDescription, .effect = EFFECT_HIT_SWITCH_TARGET, - .power = 60, - .accuracy = 90, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = -6, @@ -12546,10 +12546,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user is roused.\n" "Ups Attack and Sp. Atk."), .effect = EFFECT_ATTACK_SPATK_UP, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 30, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, @@ -12570,10 +12570,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Snares the foe with an\n" "electric net. Lowers Speed."), .effect = EFFECT_HIT, - .power = 55, - .accuracy = 95, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 55, + .accuracy = 95, .target = MOVE_TARGET_BOTH, .pp = 15, .priority = 0, @@ -12594,10 +12594,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An electrical tackle that\n" "also hurts the user."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -12616,10 +12616,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Spins its body like a drill.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 95, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -12638,10 +12638,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with brutal hits\n" "that strike twice."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 90, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -12660,10 +12660,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A sudden blow after a cute\n" "act. May cause flinching."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 25, .priority = 0, @@ -12683,10 +12683,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Horn Leech"), .description = sMegaDrainDescription, .effect = EFFECT_ABSORB, - .power = 75, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 75, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -12703,10 +12703,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Sacred Sword"), .description = sChipAwayDescription, .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 15 : 20, .priority = 0, @@ -12726,10 +12726,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Tears at the foe with sharp\n" "shells. May lower Defense."), .effect = EFFECT_HIT, - .power = 75, - .accuracy = 95, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 75, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -12750,10 +12750,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Heat Crash"), .description = sHeavySlamDescription, .effect = EFFECT_HEAT_CRASH, - .power = 1, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -12772,10 +12772,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Circles the foe with leaves\n" "to damage and cut accuracy."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 90, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 65, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -12797,10 +12797,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Crushes the foe with its\n" "body. May cause flinching."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 65, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -12823,10 +12823,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Wraps its body in cotton.\n" "Drastically raises Defense."), .effect = EFFECT_DEFENSE_UP_3, - .power = 0, - .accuracy = 0, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -12847,10 +12847,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Looses a pitch-black shock\n" "wave. May lower accuracy."), .effect = EFFECT_HIT, - .power = 85, - .accuracy = 95, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 85, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -12869,10 +12869,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Psystrike"), .description = sPsyshockDescription, .effect = EFFECT_PSYSHOCK, - .power = 100, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -12889,10 +12889,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes the foe with its\n" "tail 2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .power = 25, - .accuracy = 85, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 25, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -12910,10 +12910,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Traps the foe in a fierce\n" "wind. May cause confusion."), .effect = EFFECT_THUNDER, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, - .accuracy = 70, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, + .accuracy = 70, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -12936,10 +12936,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A charge using guard hair.\n" "It hurts the user a little."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -12958,10 +12958,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Throws two steel gears\n" "that strike twice."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 85, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -12978,10 +12978,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Searing Shot"), .description = sLavaPlumeDescription, .effect = EFFECT_HIT, - .power = 100, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 5, .priority = 0, @@ -13003,10 +13003,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The type varies with the\n" "kind of Drive held."), .effect = EFFECT_CHANGE_TYPE_ON_ITEM, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 120 : 85, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 120 : 85, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -13025,10 +13025,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with an ancient\n" "song. May induce sleep."), .effect = EFFECT_RELIC_SONG, - .power = 75, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 75, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 10, .priority = 0, @@ -13053,10 +13053,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Cuts with a long horn that\n" "does physical damage."), .effect = EFFECT_PSYSHOCK, - .power = 85, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 85, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -13075,10 +13075,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Blows very cold air at the\n" "foe. It lowers their Speed."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 95, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 65, + .accuracy = 95, .target = MOVE_TARGET_BOTH, .pp = 10, .priority = 0, @@ -13099,10 +13099,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes with a great amount\n" "of lightning. May paralyze."), .effect = EFFECT_HIT, - .power = 130, - .accuracy = 85, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 130, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -13124,10 +13124,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Engulfs the foe in a blue\n" "flame. May inflict a burn."), .effect = EFFECT_HIT, - .power = 130, - .accuracy = 85, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 130, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -13148,10 +13148,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Dances cloaked in flames.\n" "May raise Sp. Atk."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -13174,10 +13174,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A powerful 2-turn move that\n" "may paralyze the foe."), .effect = EFFECT_TWO_TURNS_ATTACK, - .power = 140, - .accuracy = 90, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 140, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -13202,10 +13202,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A powerful 2-turn move that\n" "may inflict a burn."), .effect = EFFECT_TWO_TURNS_ATTACK, - .power = 140, - .accuracy = 90, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 140, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -13230,10 +13230,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Yells and rants at the foe\n" "lowering its Sp. Atk."), .effect = EFFECT_HIT, - .power = 55, - .accuracy = 95, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 55, + .accuracy = 95, .target = MOVE_TARGET_BOTH, .pp = 15, .priority = 0, @@ -13257,10 +13257,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Drops large icicles on the\n" "foe. May cause flinching."), .effect = EFFECT_HIT, - .power = 85, - .accuracy = 90, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 85, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -13281,10 +13281,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Very powerful, but lowers\n" "Defense, Sp. Def and Speed."), .effect = EFFECT_HIT, - .power = 180, - .accuracy = 95, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 180, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -13307,10 +13307,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Summons a fireball. Works\n" "well with a thunderbolt."), .effect = EFFECT_FUSION_COMBO, - .power = 100, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -13328,10 +13328,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Summons a thunderbolt.\n" "Works well with a fireball."), .effect = EFFECT_FUSION_COMBO, - .power = 100, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -13348,10 +13348,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "This attack does Fighting\n" "and Flying-type damage."), .effect = EFFECT_TWO_TYPED_MOVE, - .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 100 : 80, - .accuracy = 95, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 100 : 80, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -13373,10 +13373,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades damaging moves\n" "for one turn."), .effect = EFFECT_MAT_BLOCK, - .power = 0, - .accuracy = 0, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 15, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -13402,10 +13402,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lets out a loud belch.\n" "Must eat a Berry to use it."), .effect = EFFECT_BELCH, - .power = 120, - .accuracy = 90, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 120, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -13430,10 +13430,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Ups the Attack and Sp. Atk\n" "of Grass-type Pokémon."), .effect = EFFECT_ROTOTILLER, - .power = 0, - .accuracy = 0, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, @@ -13454,10 +13454,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Weaves a sticky net that\n" "slows foes switching in."), .effect = EFFECT_STICKY_WEB, - .power = 0, - .accuracy = 0, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_OPPONENTS_FIELD, .pp = 20, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -13479,10 +13479,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "If it knocks out a foe\n" "the Attack stat is raised."), .effect = EFFECT_FELL_STINGER, - .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 50 : 30, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 50 : 30, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 25, .priority = 0, @@ -13498,10 +13498,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("PhantomForce", "Phantom Force"), .description = sShadowForceDescription, .effect = EFFECT_SEMI_INVULNERABLE, - .power = 90, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -13528,10 +13528,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Goes trick-or-treating\n" "making the foe Ghost-type."), .effect = EFFECT_THIRD_TYPE, - .power = 0, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, @@ -13551,10 +13551,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Intimidates the foe, to cut\n" "Attack and Sp. Atk."), .effect = EFFECT_NOBLE_ROAR, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 30, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -13575,10 +13575,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Electrifies Normal-type\n" "moves with charged atoms."), .effect = EFFECT_ION_DELUGE, - .power = 0, - .accuracy = 0, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 25, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -13598,10 +13598,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Damages adjacent Pokémon and\n" "heals up by half of it."), .effect = EFFECT_ABSORB, - .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 65 : 50, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 65 : 50, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 20, .priority = 0, @@ -13619,10 +13619,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Puts a curse on the foe\n" "making the foe Grass-type."), .effect = EFFECT_THIRD_TYPE, - .power = 0, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, @@ -13642,10 +13642,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stirs up a violent storm\n" "of petals to attack."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 15, .priority = 0, @@ -13663,10 +13663,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Super effective on Water-\n" "types. May cause freezing."), .effect = EFFECT_FREEZE_DRY, - .power = 70, - .accuracy = 100, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -13687,10 +13687,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lets out a charming cry\n" "that cannot be evaded."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 0, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 40, + .accuracy = 0, .target = MOVE_TARGET_BOTH, .pp = 15, .priority = 0, @@ -13709,10 +13709,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the foe's Attack and\n" "Sp. Atk, then switches out."), .effect = EFFECT_PARTING_SHOT, - .power = 0, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_RESTORE_REPLACEMENT_HP }, @@ -13733,10 +13733,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swaps all stat changes that\n" "affect the target."), .effect = EFFECT_TOPSY_TURVY, - .power = 0, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 0 : 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 0 : 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, @@ -13753,10 +13753,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("DrainingKiss", "Draining Kiss"), .description = sDrainingKissDescription, .effect = EFFECT_ABSORB, - .power = 50, - .accuracy = 100, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -13776,10 +13776,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades status moves for\n" "one turn."), .effect = EFFECT_PROTECT, - .power = 0, - .accuracy = 0, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -13801,10 +13801,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises the Defense of\n" "Grass-type Pokémon."), .effect = EFFECT_FLOWER_SHIELD, - .power = 0, - .accuracy = 0, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -13824,10 +13824,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The ground turns to grass\n" "for 5 turns. Restores HP."), .effect = EFFECT_GRASSY_TERRAIN, - .power = 0, - .accuracy = 0, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -13848,10 +13848,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Covers the ground with mist\n" "for 5 turns. Blocks status."), .effect = EFFECT_MISTY_TERRAIN, - .power = 0, - .accuracy = 0, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -13872,10 +13872,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Electrifies the foe, making\n" "its next move Electric-type."), .effect = EFFECT_ELECTRIFY, - .power = 0, - .accuracy = 0, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -13893,10 +13893,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Plays rough with the foe.\n" "May lower Attack."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 90, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -13918,10 +13918,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stirs up a fairy wind to\n" "strike the foe."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 30, .priority = 0, @@ -13939,10 +13939,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with the power of\n" "the moon. May lower Sp. Atk."), .effect = EFFECT_HIT, - .power = 95, - .accuracy = 100, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 95, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -13963,10 +13963,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks everything with a\n" "destructive sound wave."), .effect = EFFECT_HIT, - .power = 140, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 140, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 10, .priority = 0, @@ -13985,10 +13985,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Locks down the battlefield\n" "preventing escape next turn."), .effect = EFFECT_FAIRY_LOCK, - .power = 0, - .accuracy = 0, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -14008,10 +14008,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades damage, and sharply\n" "reduces Attack if struck."), .effect = EFFECT_PROTECT, - .power = 0, - .accuracy = 0, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -14035,10 +14035,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Befriend the foe, lowering\n" "its Attack without fail."), .effect = EFFECT_ATTACK_DOWN, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -14059,10 +14059,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Shares a secret with the\n" "foe, lowering Sp. Atk."), .effect = EFFECT_SPECIAL_ATTACK_DOWN, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -14083,10 +14083,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Whips up a storm of\n" "diamonds. May up Defense."), - .power = 100, - .accuracy = 95, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 95, .target = MOVE_TARGET_BOTH, .pp = 5, .priority = 0, @@ -14108,10 +14108,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Immerses the foe in heated\n" "steam. May inflict a burn."), .effect = EFFECT_HIT, - .power = 110, - .accuracy = 95, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 110, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -14132,10 +14132,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("HyprspceHole", "Hyprspace Hole"), .description = sHyperspaceHoleDescription, .effect = EFFECT_HIT, - .power = 80, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -14158,10 +14158,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Throws 2 to 5 stars that\n" "are sure to strike first."), .effect = EFFECT_MULTI_HIT, - .power = 15, - .accuracy = 100, .type = TYPE_WATER, .category = B_UPDATED_MOVE_DATA >= GEN_7 ? DAMAGE_CATEGORY_SPECIAL : DAMAGE_CATEGORY_PHYSICAL, + .power = 15, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 1, @@ -14178,10 +14178,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Breathes a special, hot\n" "fire. Lowers Sp. Atk."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 75 : 65, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 75 : 65, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -14202,10 +14202,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades attack, and damages\n" "the foe if struck."), .effect = EFFECT_PROTECT, - .power = 0, - .accuracy = 0, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -14228,10 +14228,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises the Sp. Def of a\n" "partner Pokémon."), .effect = EFFECT_AROMATIC_MIST, - .power = 0, - .accuracy = 0, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALLY, .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, @@ -14252,10 +14252,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Exposes the foe to a pulse\n" "that sharply cuts Sp. Atk."), .effect = EFFECT_SPECIAL_ATTACK_DOWN_2, - .power = 0, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -14274,10 +14274,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the Attack, Sp. Atk\n" "and Speed of a poisoned foe."), .effect = EFFECT_VENOM_DRENCH, - .power = 0, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -14296,10 +14296,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Damages the foe if it uses\n" "a Fire-type move."), .effect = EFFECT_POWDER, - .power = 0, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, @@ -14319,10 +14319,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises Sp. Atk, Sp. Def and\n" "Speed on the 2nd turn."), .effect = EFFECT_GEOMANCY, - .power = 0, - .accuracy = 0, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, @@ -14344,10 +14344,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts the defenses of\n" "those with Plus or Minus."), .effect = EFFECT_MAGNETIC_FLUX, - .power = 0, - .accuracy = 0, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -14369,10 +14369,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Doubles the amount of\n" "Prize Money received."), .effect = EFFECT_DO_NOTHING, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 30, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, @@ -14392,10 +14392,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Electrifies the ground for\n" "5 turns. Prevents sleep."), .effect = EFFECT_ELECTRIC_TERRAIN, - .power = 0, - .accuracy = 0, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -14416,10 +14416,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Damages foes by emitting\n" "a bright flash."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 10, .priority = 0, @@ -14436,10 +14436,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Congratulates you on your\n" "special day."), .effect = EFFECT_DO_NOTHING, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 40, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, @@ -14465,10 +14465,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user and ally hold hands\n" "making them happy."), .effect = EFFECT_DO_NOTHING, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALLY, .pp = 40, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, @@ -14494,10 +14494,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the foe's Attack\n" "before it can move."), .effect = EFFECT_ATTACK_DOWN, - .power = 0, - .accuracy = 100, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 30, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -14516,10 +14516,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Rubs its cheecks against\n" "the foe, paralyzing it."), .effect = EFFECT_HIT, - .power = 20, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 20, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -14539,10 +14539,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Hold Back"), .description = sFalseSwipeDescription, .effect = EFFECT_FALSE_SWIPE, - .power = 40, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 40, .priority = 0, @@ -14560,10 +14560,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The foe is infested and\n" "attacked for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, - .power = 20, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 20, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -14584,10 +14584,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A hard punch that raises\n" "the user's Attack."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -14609,10 +14609,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("OblivionWing", "Oblivion Wing"), .description = sDrainingKissDescription, .effect = EFFECT_ABSORB, - .power = 80, - .accuracy = 100, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -14631,10 +14631,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Can hit Flying foes, then\n" "knocks them to the ground."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 10, .priority = 0, @@ -14658,10 +14658,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Those hit by the wave can\n" "no longer escape."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 10, .priority = 0, @@ -14683,10 +14683,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Gathers the energy of the\n" "land to attack every foe."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 10, .priority = 0, @@ -14704,10 +14704,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires a great beam of light\n" "that also hurts the user."), .effect = EFFECT_HIT, - .power = 140, - .accuracy = 90, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 140, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -14722,10 +14722,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Beams of glowing blue light\n" "blast both foes."), .effect = EFFECT_HIT, - .power = 110, - .accuracy = 85, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 110, + .accuracy = 85, .target = MOVE_TARGET_BOTH, .pp = 10, .priority = 0, @@ -14744,10 +14744,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fearsome blades of stone\n" "attack both foes."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 85, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 85, .target = MOVE_TARGET_BOTH, .pp = 10, .priority = 0, @@ -14763,10 +14763,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("DragonAscent", "Dragon Ascent"), .description = sCloseCombatDescription, .effect = EFFECT_HIT, - .power = 120, - .accuracy = 100, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -14787,10 +14787,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("HyprspceFury", "Hyperspace Fury"), .description = sHyperspaceHoleDescription, .effect = EFFECT_HYPERSPACE_FURY, - .power = 100, - .accuracy = 0, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -14816,10 +14816,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Restores the user's HP.\n" "More HP in a sandstorm."), .effect = EFFECT_SHORE_UP, - .power = 0, - .accuracy = 0, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -14841,10 +14841,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits hard and first.\n" "Only works first turn."), .effect = EFFECT_FIRST_TURN_ONLY, - .power = 90, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 2, @@ -14862,10 +14862,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Protects user and poisons\n" "foes on contact."), .effect = EFFECT_PROTECT, - .power = 0, - .accuracy = 0, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -14888,10 +14888,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "After being hit, foes can\n" "no longer escape."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -14912,10 +14912,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swings the arms to strike\n" "It ignores stat changes."), .effect = EFFECT_HIT, - .power = 85, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 85, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -14934,10 +14934,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sings with bubbles. Cures\n" "burns on contact."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 10, .priority = 0, @@ -14961,10 +14961,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swings the fist to strike.\n" "Lowers the user's Speed."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 90, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -14987,10 +14987,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Restores an ally's HP.\n" "Heals more on grass."), .effect = EFFECT_HEAL_PULSE, - .power = 0, - .accuracy = 0, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -15012,10 +15012,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slams hard into the foe with\n" "its entire body."), .effect = EFFECT_HIT, - .power = 95, - .accuracy = 95, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 95, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -15033,10 +15033,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Saps the foe's Attack to\n" "heal HP, then drops Attack."), .effect = EFFECT_STRENGTH_SAP, - .power = 0, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -15056,10 +15056,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Charges first turn, then\n" "chops with a blade of light."), .effect = EFFECT_SOLAR_BEAM, - .power = 125, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 125, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -15081,10 +15081,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a flurry of\n" "small leaves."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 40, .priority = 0, @@ -15101,10 +15101,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the foe attack the\n" "spotlighted Pokémon."), .effect = EFFECT_FOLLOW_ME, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, @@ -15127,10 +15127,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a thread that\n" "poisons and drops Speed."), .effect = EFFECT_TOXIC_THREAD, - .power = 0, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -15149,10 +15149,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Guarantees the next move\n" "will be a critical hit."), .effect = EFFECT_LASER_FOCUS, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 30, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, @@ -15173,10 +15173,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts the attacks of\n" "those with Plus or Minus."), .effect = EFFECT_GEAR_UP, - .power = 0, - .accuracy = 0, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -15198,10 +15198,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Chops the throat to disable\n" "sound moves for a while."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -15223,10 +15223,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Explodes on foes, but\n" "restores ally's HP."), .effect = EFFECT_HIT_ENEMY_HEAL_ALLY, - .power = 90, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -15244,10 +15244,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strangles the foe with a\n" "chain. The foe can't escape."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -15269,10 +15269,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The ground turns weird for\n" "5 turns. Blocks priority."), .effect = EFFECT_PSYCHIC_TERRAIN, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -15292,10 +15292,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lunges at the foe to lower\n" "its Attack stat."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -15317,10 +15317,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Whips the foe with fire\n" "lowering its Defense."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -15342,10 +15342,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "It hits harder the more\n" "stat boosts the user has."), .effect = EFFECT_STORED_POWER, - .power = 20, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 20, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -15363,10 +15363,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Burns out the user fully\n" "removing the Fire type."), .effect = EFFECT_FAIL_IF_NOT_ARG_TYPE, - .power = 130, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 130, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -15389,10 +15389,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swaps user's Speed with\n" "the target's."), .effect = EFFECT_SPEED_SWAP, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -15411,10 +15411,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with an accurate\n" "horn that never misses."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 0, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -15432,10 +15432,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Cures the foe's status\n" "to restore HP."), .effect = EFFECT_PURIFY, - .power = 0, - .accuracy = 0, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, @@ -15456,10 +15456,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Dances with mystical power.\n" "Matches user's first type."), .effect = EFFECT_REVELATION_DANCE, - .power = 90, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -15477,10 +15477,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with a ray that\n" "nullifies the foe's ability."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .zMove = { .powerOverride = 140 }, @@ -15501,10 +15501,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An intense kick from the\n" "tropics. Lowers Attack."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -15526,10 +15526,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Orders the target to use\n" "its last move again."), .effect = EFFECT_INSTRUCT, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 15, .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, @@ -15551,10 +15551,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Heats up beak to attack.\n" "Burns foe on contact."), .effect = EFFECT_BEAK_BLAST, - .power = 100, - .accuracy = 100, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = -3, @@ -15579,10 +15579,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes a big noise with\n" "its scales. Drops Defense."), .effect = EFFECT_HIT, - .power = 110, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 110, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 5, .priority = 0, @@ -15605,10 +15605,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swings its whole body\n" "like a hammer to damage."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -15626,10 +15626,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Violently swings around\n" "to hurt everyone nearby."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 20, .priority = 0, @@ -15647,10 +15647,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Weakens all attacks, but\n" "only usable with hail."), .effect = EFFECT_AURORA_VEIL, - .power = 0, - .accuracy = 0, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -15671,10 +15671,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sets a shell trap that\n" "damages on contact."), .effect = EFFECT_SHELL_TRAP, - .power = 150, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 150, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 5, .priority = -3, @@ -15698,10 +15698,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A strong ray that harshly\n" "lowers Sp. Attack."), .effect = EFFECT_HIT, - .power = 130, - .accuracy = 90, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 130, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -15723,10 +15723,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Chomps with psychic fangs.\n" "Destroys any barriers."), .effect = EFFECT_BRICK_BREAK, - .power = 85, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 85, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -15745,10 +15745,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stomps around angrily.\n" "Stronger after a failure."), .effect = EFFECT_STOMPING_TANTRUM, - .power = 75, - .accuracy = 100, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 75, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -15767,10 +15767,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes with a haunted\n" "bone. Might drop Defense."), .effect = EFFECT_HIT, - .power = 85, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 85, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -15791,10 +15791,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with a high-speed\n" "rock that always goes first."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 1, @@ -15812,10 +15812,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slams the foe with water.\n" "Can lower Defense."), .effect = EFFECT_HIT, - .power = 85, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 85, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -15837,10 +15837,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A high power laser that\n" "forces recharge next turn."), .effect = EFFECT_HIT, - .power = 160, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 160, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -15861,10 +15861,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Steals the target's stat\n" "boosts, then attacks."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -15887,10 +15887,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A sun-fueled strike that\n" "ignores abilities."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 100, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -15910,10 +15910,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A moon-powered beam that\n" "ignores abilities."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -15932,10 +15932,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user tears up, dropping\n" "Attack and Sp. Attack."), .effect = EFFECT_NOBLE_ROAR, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 20, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, @@ -15955,10 +15955,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An electrified impact that\n" "can cause flinching."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -15980,10 +15980,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Halves the foe's HP with\n" "the power of nature."), .effect = EFFECT_SUPER_FANG, - .power = 1, - .accuracy = 90, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 1, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -16001,10 +16001,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that changes\n" "with Memories."), .effect = EFFECT_CHANGE_TYPE_ON_ITEM, - .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 120 : 90, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 120 : 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -16023,10 +16023,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "It explodes the user's head\n" "to damage everything around."), .effect = EFFECT_MIND_BLOWN, - .power = 150, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 150, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 5, .priority = 0, @@ -16044,10 +16044,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with electrical fists.\n" "Normal moves become Electric."), .effect = EFFECT_PLASMA_FISTS, - .power = 100, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -16067,10 +16067,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "User's highest attack stat\n" "determines its category."), .effect = EFFECT_PHOTON_GEYSER, - .power = 100, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -16089,10 +16089,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Electric bursts always go\n" "first and land a critical hit."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 80 : 50, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 80 : 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 10 : 15, .priority = 2, @@ -16115,10 +16115,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A huge electrified wave that\n" "may paralyze the foe."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 15, .priority = 0, @@ -16137,10 +16137,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Floats in air and dives at\n" "angle. May cause flinching."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 95, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -16161,10 +16161,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Pikachu's love increases its\n" "power. It never misses."), .effect = EFFECT_RETURN, - .power = 1, - .accuracy = 0, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -16183,10 +16183,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "half the damage inflicted."), #endif .effect = EFFECT_ABSORB, - .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 60 : 90, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 60 : 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 20 : 15, .priority = 0, @@ -16203,10 +16203,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Shoots a jolt of electricity\n" "that always paralyzes."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 60 : 90, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 60 : 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 20 : 15, .priority = 0, @@ -16225,10 +16225,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "User cloaked in fire charges.\n" "Leaves the foe with a burn."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 60 : 90, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 60 : 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 20 : 15, .priority = 0, @@ -16249,10 +16249,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Telekinetic force that sets\n" "wall, lowering Sp. Atk damage."), .effect = EFFECT_GLITZY_GLOW, - .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 80 : 90, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 95 : 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 80 : 90, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 95 : 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -16267,10 +16267,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Acting badly, attacks. Sets\n" "wall, lowering Attack damage."), .effect = EFFECT_BADDY_BAD, - .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 80 : 90, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 95 : 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 80 : 90, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 95 : 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -16285,10 +16285,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Giant stalk scatters seeds\n" "that drain HP every turn."), .effect = EFFECT_SAPPY_SEED, - .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 100 : 90, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 90 : 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 100 : 90, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 90 : 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 10 : 15, .priority = 0, @@ -16304,10 +16304,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Crystal from cold haze hits.\n" "Eliminates all stat changes."), .effect = EFFECT_FREEZY_FROST, - .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 100 : 90, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 90 : 100, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 100 : 90, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 90 : 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 10 : 15, .priority = 0, @@ -16322,10 +16322,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Wrap foe with whirlwind of\n" "scent. Heals party's status."), .effect = EFFECT_SPARKLY_SWIRL, - .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 120 : 90, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 85 : 100, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 120 : 90, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 85 : 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 5 : 15, .priority = 0, @@ -16340,10 +16340,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Eevee's love increases its\n" "power. It never misses."), .effect = EFFECT_RETURN, - .power = 1, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -16359,10 +16359,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user spins and hits with\n" "its arms. May cause flinch."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -16388,10 +16388,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires a strong beam. Deals\n" "2x damage to Dynamaxed foes."), .effect = EFFECT_DYNAMAX_DOUBLE_DMG, - .power = 100, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -16417,10 +16417,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user ignores effects\n" "that draw in moves."), .effect = EFFECT_SNIPE_SHOT, - .power = 80, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -16438,10 +16438,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Prevents the user and\n" "the target from escaping."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -16463,10 +16463,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Consumes the user's Berry,\n" "then sharply raises Def."), .effect = EFFECT_STUFF_CHEEKS, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .priority = 0, @@ -16486,10 +16486,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises all of the user's\n" "stats but prevents escape."), .effect = EFFECT_NO_RETREAT, - .power = 0, - .accuracy = 0, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 5, .priority = 0, @@ -16509,10 +16509,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the foe's Speed and\n" "makes it weak to Fire."), .effect = EFFECT_TAR_SHOT, - .power = 0, - .accuracy = 100, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -16530,10 +16530,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Magic powder changes the\n" "target into a Psychic-type."), .effect = EFFECT_SOAK, - .power = 0, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -16553,10 +16553,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user attacks twice. Two\n" "targets are hit once each."), .effect = EFFECT_HIT, // TODO: EFFECT_DRAGON_DARTS - .power = 50, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -16575,10 +16575,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "All Pokémon have teatime\n" "and eat their Berries."), .effect = EFFECT_TEATIME, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, .priority = 0, @@ -16598,10 +16598,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Traps the foe to lower Def\n" "and Sp. Def fall each turn."), .effect = EFFECT_OCTOLOCK, - .power = 0, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -16618,10 +16618,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Double power if the user\n" "moves before the target."), .effect = EFFECT_BOLT_BEAK, - .power = 85, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 85, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -16639,10 +16639,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Double power if the user\n" "moves before the target."), .effect = EFFECT_BOLT_BEAK, - .power = 85, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 85, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -16661,10 +16661,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user swaps effects on\n" "either side of the field."), .effect = EFFECT_COURT_CHANGE, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, .priority = 0, @@ -16682,10 +16682,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user uses some of its\n" "HP to raise all its stats."), .effect = EFFECT_CLANGOROUS_SOUL, - .power = 0, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_USER, .pp = 5, .priority = 0, @@ -16708,10 +16708,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Does more damage the\n" "higher the user's Def."), .effect = EFFECT_BODY_PRESS, - .power = 80, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -16731,10 +16731,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user sharply raises\n" "the target's Atk and Sp.Atk"), .effect = EFFECT_DECORATE, - .power = 0, - .accuracy = 0, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -16754,10 +16754,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Plays a drum to attack.\n" "The foe's Speed is lowered."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -16779,10 +16779,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Snares the target in a snap\n" "trap for four to five turns."), .effect = EFFECT_HIT, - .power = 35, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 35, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -16805,10 +16805,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Launches a fiery ball at the\n" "target. It may cause a burn."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 90, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -16832,10 +16832,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes as a sword. Deals 2x\n" "damage to Dynamaxed foes."), .effect = EFFECT_DYNAMAX_DOUBLE_DMG, - .power = 100, - .accuracy = 100, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -16858,10 +16858,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks as a shield. Deals 2x\n" "damage to Dynamaxed foes."), .effect = EFFECT_DYNAMAX_DOUBLE_DMG, - .power = 100, - .accuracy = 100, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -16883,10 +16883,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises Speed to attack. The\n" "Type is based on its form."), .effect = EFFECT_AURA_WHEEL, - .power = 110, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 110, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -16909,10 +16909,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swings its tail to attack.\n" "Lowers the Atk of those hit."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 15, .priority = 0, @@ -16935,10 +16935,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user pokes the target\n" "with a pointed branch."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 40, .priority = 0, @@ -16957,10 +16957,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user twangs its guitar,\n" "causing strong vibrations."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 10, .priority = 0, @@ -16980,10 +16980,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with tart apple acid\n" "to lower the foe's Sp. Def."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -17005,10 +17005,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Drops an apple from above.\n" "Lowers the foe's Defense."), .effect = EFFECT_GRAV_APPLE, - .power = 80, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -17030,10 +17030,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with spirit-breaking\n" "force. Lowers Sp. Atk."), .effect = EFFECT_HIT, - .power = 75, - .accuracy = 100, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 75, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -17056,10 +17056,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Emits a strange steam to\n" "potentially confuse the foe."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 95, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 90, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -17081,10 +17081,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Scatters water to restore\n" "the HP of itself and allies."), .effect = EFFECT_JUNGLE_HEALING, - .power = 0, - .accuracy = 0, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, .priority = 0, @@ -17107,10 +17107,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Protects itself, harshly\n" "lowering Def on contact."), .effect = EFFECT_PROTECT, - .power = 0, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_USER, .pp = 10, .priority = 4, @@ -17131,10 +17131,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Bows to stab the foe\n" "with hair. It never misses."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 0, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -17153,10 +17153,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a thick leek.\n" "The user must then rest."), .effect = EFFECT_HIT, - .power = 150, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 150, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -17179,10 +17179,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Eternatus' strongest move.\n" "The user rests next turn."), .effect = EFFECT_HIT, - .power = 160, - .accuracy = 90, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 160, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -17204,10 +17204,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires a beam of steel from\n" "its body. It hurts the user."), .effect = EFFECT_MAX_HP_50_RECOIL, - .power = 140, - .accuracy = 95, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 140, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -17225,10 +17225,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Power goes up and damages\n" "all foes on Psychic Terrain."), .effect = EFFECT_EXPANDING_FORCE, - .power = 80, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -17245,10 +17245,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Destroys terrain. Fails if\n" "ground isn't terrain."), .effect = EFFECT_HIT_SET_REMOVE_TERRAIN, - .power = 130, - .accuracy = 100, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 130, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -17268,10 +17268,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Shoots scales 2 to 5 times.\n" "Ups Speed, lowers defense."), .effect = EFFECT_MULTI_HIT, - .power = 25, - .accuracy = 90, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 25, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -17289,10 +17289,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A 2-turn move that raises\n" "Sp. Attack before attacking."), .effect = EFFECT_TWO_TURNS_ATTACK, - .power = 120, - .accuracy = 90, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 120, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -17316,10 +17316,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Deals better of physical and\n" "special damage. May poison."), .effect = EFFECT_SHELL_SIDE_ARM, - .power = 90, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -17340,10 +17340,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hit everything and faint.\n" "Powers up on Misty Terrain."), .effect = EFFECT_EXPLOSION, - .power = 100, - .accuracy = 100, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 5, .priority = 0, @@ -17360,10 +17360,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Gliding on ground, hits. Goes\n" "first on Grassy Terrain."), .effect = EFFECT_GRASSY_GLIDE, - .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 55 : 70, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 55 : 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -17382,10 +17382,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "This move's power doubles\n" "when on Electric Terrain."), .effect = EFFECT_RISING_VOLTAGE, - .power = 70, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -17402,10 +17402,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Type and power changes\n" "depending on the terrain."), .effect = EFFECT_TERRAIN_PULSE, - .power = 50, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -17423,10 +17423,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "User skitters behind foe to\n" "attack. Lowers foe's Sp. Atk."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 90, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -17448,10 +17448,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Foes that have stats upped\n" "during the turn get burned."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 5, .priority = 0, @@ -17473,10 +17473,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "If stats lowered during this\n" "turn, power is doubled."), .effect = EFFECT_LASH_OUT, - .power = 75, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 75, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -17494,10 +17494,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Control foe's item to attack.\n" "Fails if foe has no item."), .effect = EFFECT_POLTERGEIST, - .power = 110, - .accuracy = 90, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 110, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -17514,10 +17514,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Highly acidic gas melts items\n" "held by surrounding Pokémon."), .effect = EFFECT_CORROSIVE_GAS, - .power = 0, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 40, .priority = 0, @@ -17535,10 +17535,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Properly coaches allies to\n" "up their Attack and Defense."), .effect = EFFECT_COACHING, - .power = 0, - .accuracy = 0, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALLY, .pp = 10, .priority = 0, @@ -17558,10 +17558,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks and rushes back to\n" "switch with a party Pokémon."), .effect = EFFECT_HIT_ESCAPE, - .power = 60, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -17579,10 +17579,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A 3-kick attack that gets\n" "more powerful with each hit."), .effect = EFFECT_TRIPLE_KICK, - .power = 20, - .accuracy = 90, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 20, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -17601,10 +17601,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "User slams the target with\n" "wings and hits twice in a row."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 90, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -17623,10 +17623,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Throws scorching sand at\n" "the target. May leave a burn."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 100, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -17648,10 +17648,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Heals HP and status of\n" "itself and allies in battle."), .effect = EFFECT_JUNGLE_HEALING, - .power = 0, - .accuracy = 0, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .priority = 0, @@ -17673,10 +17673,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Mastering the Dark style,\n" "strikes with a critical hit."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 75 : 80, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 75 : 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -17697,10 +17697,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Mastering the Water style,\n" "strikes with 3 critical hits."), .effect = EFFECT_HIT, - .power = 25, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 25, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -17722,10 +17722,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Traps the foe in a cage of\n" "electricity for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 90, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -17746,10 +17746,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The higher the user's HP\n" "the more damage caused."), .effect = EFFECT_ERUPTION, - .power = 150, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 150, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 5, .priority = 0, @@ -17771,10 +17771,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "the eyes. May freeze the foe."), #endif .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -17796,10 +17796,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack fueled by your\n" "wrath. May cause flinching."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 10, .priority = 0, @@ -17821,10 +17821,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Uses a lightning-like kick\n" "to hit. Lowers foe's Defense."), .effect = EFFECT_HIT, - .power = 90, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -17847,10 +17847,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes by hurling a blizzard-\n" "cloaked icicle lance at foes."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 130, - .accuracy = 100, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 130, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 5, .priority = 0, @@ -17868,10 +17868,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes by sending a frightful\n" "amount of ghosts at foes."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 5, .priority = 0, @@ -17889,10 +17889,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with psychic power.\n" "Foe's last move has 3 PP cut."), .effect = EFFECT_EERIE_SPELL, - .power = 80, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -17911,10 +17911,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical hit chance. May\n" "paralyze, poison or drowse."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 80 : 60, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 80 : 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -17932,10 +17932,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits a foe with psychic\n" "energy. May raise Defense."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 90, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -17954,10 +17954,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user swaps its Attack\n" "and Defense stats."), .effect = EFFECT_POWER_TRICK, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .priority = 0, @@ -17974,10 +17974,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical hit ratio. Sets\n" "Splinters that hurt the foe."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 90, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 65, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -17996,10 +17996,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Wraps a foe in fierce winds.\n" "Varies with the user's form."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, - .accuracy = 80, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, + .accuracy = 80, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -18018,10 +18018,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A mysterious power strikes,\n" "raising the user's Sp. Atk."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 90, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 70, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18039,10 +18039,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A rampage of 2 to 3 turns\n" "that confuses the user."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 90, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 90, + .accuracy = 100, .target = MOVE_TARGET_RANDOM, .pp = 10, .priority = 0, @@ -18060,10 +18060,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A slam shrouded in water.\n" "It also hurts the user."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 75, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 75, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18079,10 +18079,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A user-hurting blast of\n" "amassed chlorophyll."), .effect = EFFECT_MAX_HP_50_RECOIL, - .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 150 : 120, - .accuracy = 95, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 150 : 120, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -18095,10 +18095,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Giant chunks of ice damage\n" "the foe. It may flinch."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 85, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -18115,10 +18115,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Dances to raise Attack,\n" "Defense and Speed."), .effect = EFFECT_VICTORY_DANCE, - .power = 0, - .accuracy = 0, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 20, .priority = 0, @@ -18135,10 +18135,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with a full-body tackle.\n" "Lowers the users's defenses."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 100, - .accuracy = 100, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -18157,10 +18157,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Can poison on impact. Powers\n" "up against poisoned foes."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, - .power = 60, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 15, .priority = 0, @@ -18178,10 +18178,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical hit ratio.\n" "Ups the user's Speed."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 80 : 75, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 90, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 80 : 75, + .accuracy = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18200,10 +18200,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A spine-chilling resentment.\n" "May lower the foe's Attack."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 75 : 60, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 75 : 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -18220,10 +18220,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user hardens their skin,\n" "sharply raising its Defense."), .effect = EFFECT_DEFENSE_UP_2, - .power = 0, - .accuracy = 0, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .priority = 0, @@ -18239,10 +18239,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical hit ratio.\n" "May lower Defense or flinch."), .effect = EFFECT_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 90 : 50, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 90 : 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 15, .priority = 0, @@ -18264,10 +18264,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurts a foe harder if it has\n" "an ailment. May leave a burn."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, - .power = 60, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -18285,10 +18285,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical hit ratio. Sets\n" "Splinters that hurt the foe."), .effect = EFFECT_HIT, - .power = 65, - .accuracy = 90, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 65, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -18307,10 +18307,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with brutal, cold winds.\n" "May lower the foe's Speed."), .effect = EFFECT_RAIN_ALWAYS_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, - .accuracy = 80, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, + .accuracy = 80, .target = MOVE_TARGET_BOTH, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 5, .priority = 0, @@ -18328,10 +18328,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with a brutal tempest.\n" "May inflict paralysis."), .effect = EFFECT_RAIN_ALWAYS_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, - .accuracy = 80, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, + .accuracy = 80, .target = MOVE_TARGET_BOTH, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 5, .priority = 0, @@ -18349,10 +18349,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with brutally hot sand.\n" "May inflict a burn."), .effect = EFFECT_RAIN_ALWAYS_HIT, - .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, - .accuracy = 80, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_SPECIAL, + .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, + .accuracy = 80, .target = MOVE_TARGET_BOTH, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 5, .priority = 0, @@ -18370,10 +18370,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user heals and cures\n" "itself and its ally."), .effect = EFFECT_JUNGLE_HEALING, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .priority = 0, @@ -18390,10 +18390,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user lifts its spirits to\n" "heal and strengthen itself."), .effect = EFFECT_TAKE_HEART, - .power = 0, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .priority = 0, @@ -18409,10 +18409,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "If the user's Terastallized,\n" "it hits with its Tera-type."), .effect = EFFECT_PLACEHOLDER, // EFFECT_TERA_BLAST, // .forcePressure = TRUE, - .power = 80, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18426,10 +18426,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Protects itself, lowering\n" "Speed on contact."), .effect = EFFECT_PROTECT, - .power = 0, - .accuracy = 0, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .priority = 4, @@ -18445,10 +18445,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May miss and hurt the kicker.\n" "May cause confusion."), .effect = EFFECT_RECOIL_IF_MISS, - .power = 120, - .accuracy = 90, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18466,10 +18466,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "This move deals more damage\n" "for each defeated ally."), .effect = EFFECT_LAST_RESPECTS, - .power = 50, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18483,10 +18483,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A mind-affecting light\n" "harshly lowers Sp. Def."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18503,10 +18503,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts a user's stats\n" "depending on Tatsugiri."), .effect = EFFECT_PLACEHOLDER, // EFFECT_ORDER_UP - .power = 80, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18521,10 +18521,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A punch is thrown at blinding\n" "speed to strike first."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 60, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 1, @@ -18540,10 +18540,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sharply ups target's Attack,\n" "harshly lowers its Defense."), .effect = EFFECT_PLACEHOLDER, // EFFECT_SPICY_EXTRACT - .power = 0, - .accuracy = 0, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -18558,10 +18558,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Furiously strains its legs.\n" "Harshly lowers user's Speed."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 100, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -18580,10 +18580,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user's fellows hit one\n" "to ten times in a row."), .effect = EFFECT_POPULATION_BOMB, - .power = 20, - .accuracy = 90, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 20, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18600,10 +18600,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Ice-covered feet hit a foe\n" "and destroy the terrain."), .effect = EFFECT_HIT_SET_REMOVE_TERRAIN, - .power = 80, - .accuracy = 100, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -18619,10 +18619,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Foe attacks next turn can't\n" "miss and do double damage."), .effect = EFFECT_GLAIVE_RUSH, - .power = 120, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -18636,10 +18636,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Revives a fainted party {PKMN}\n" "and restores half of its HP."), .effect = EFFECT_REVIVAL_BLESSING, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 1, .priority = 0, @@ -18657,10 +18657,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurts foe every turn. Double\n" "damage to Steel and Water."), .effect = EFFECT_SALT_CURE, - .power = 40, - .accuracy = 100, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -18674,10 +18674,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits target with splashes\n" "of water 3 times in a row."), .effect = EFFECT_HIT, - .power = 30, - .accuracy = 95, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 30, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18692,10 +18692,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Erases trap moves and Leech\n" "Seed. Poisons adjecent foes."), .effect = EFFECT_HIT, - .power = 30, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 30, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 15, .priority = 0, @@ -18717,10 +18717,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Changes user's and ally's\n" "Ability into the target's."), .effect = EFFECT_DOODLE, - .power = 0, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18736,10 +18736,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sharply boosts offenses and\n" "Speed by using its own HP."), .effect = EFFECT_FILLET_AWAY, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, @@ -18757,10 +18757,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "User slashes the foe after\n" "kowtowing. It never misses."), .effect = EFFECT_HIT, - .power = 85, - .accuracy = 0, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 85, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18775,10 +18775,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Rigged bouquet. Always gets\n" "a critical hit, never missing."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 0, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18792,10 +18792,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Flames scorch the target.\n" "Boosts the user's Sp. Atk."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18815,10 +18815,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with light, fluid dance\n" "steps. Ups the user's Speed."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18838,10 +18838,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Tackle that breaks barriers.\n" "User's form determines type."), .effect = EFFECT_RAGING_BULL, - .power = 90, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18856,10 +18856,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the user's Sp. Atk.\n" "Money is recovered after."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 100, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_BOTH, .pp = 5, .priority = 0, @@ -18880,10 +18880,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Summons a ruinous disaster\n" "and cuts half the foe's HP."), .effect = EFFECT_SUPER_FANG, - .power = 1, - .accuracy = 90, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 1, + .accuracy = 90, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -18897,10 +18897,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Prehistoric explosion that's\n" "stronger if supereffective."), .effect = EFFECT_COLLISION_COURSE, - .power = 100, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -18915,10 +18915,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Futuristic electricity. It's\n" "stronger if supereffective."), .effect = EFFECT_COLLISION_COURSE, - .power = 100, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -18933,10 +18933,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates a Substitute for\n" "itself before switching out."), .effect = EFFECT_SHED_TAIL, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -18953,10 +18953,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Bad joke summons snowstorm.\n" "The user also switches out."), .effect = EFFECT_CHILLY_RECEPTION, - .power = 0, - .accuracy = 0, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -18973,10 +18973,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "User tidies up hazards and\n" "raises its Attack and Speed."), .effect = EFFECT_PLACEHOLDER, // EFFECT_TIDY_UP - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .priority = 0, @@ -18992,10 +18992,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Summons a snowstorm that\n" "lasts for five turns."), .effect = EFFECT_SNOWSCAPE, - .power = 0, - .accuracy = 0, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, @@ -19012,10 +19012,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user pounces on the foe,\n" "lowering its Speed."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 100, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -19034,10 +19034,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user attacks suddenly,\n" "raising its Speed."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -19057,10 +19057,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A shower with ice-cold water\n" "lowers the target's Attack."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -19078,10 +19078,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A spinning pointed part\n" "bypasses a foe's Protect."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -19097,10 +19097,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Mystical eye-beams that hit\n" "the target twice in a row."), .effect = EFFECT_HIT, - .power = 40, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 40, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -19115,10 +19115,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The more the user has been\n" "hit, the stronger the move."), .effect = EFFECT_RAGE_FIST, - .power = 50, - .accuracy = 100, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 50, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -19134,10 +19134,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A strong attack but lowers\n" "the defensive stats."), .effect = EFFECT_HIT, - .power = 120, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -19155,10 +19155,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that absorbs\n" "half the damage inflicted."), .effect = EFFECT_ABSORB, - .power = 90, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 90, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -19174,10 +19174,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Discharges all electricity,\n" "losing the Electric type."), .effect = EFFECT_FAIL_IF_NOT_ARG_TYPE, - .power = 120, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -19197,10 +19197,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swings a huge hammer. Can't\n" "be used twice in a row."), .effect = EFFECT_HIT, - .power = 160, - .accuracy = 100, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 160, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -19214,10 +19214,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Retaliates strongly against\n" "who last hurt the user."), .effect = EFFECT_METAL_BURST, - .power = 1, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_DEPENDS, .pp = 10, .priority = 0, @@ -19233,10 +19233,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Pressurized water cut with a\n" "high critical-hit ratio."), .effect = EFFECT_HIT, - .power = 70, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 20, .priority = 0, @@ -19249,10 +19249,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("BlazngTorque", "Blazing Torque"), .description = COMPOUND_STRING("---"), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -19277,10 +19277,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("WickedTorque", "Wicked Torque"), .description = COMPOUND_STRING("---"), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -19305,10 +19305,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("NoxiusTorque", "Noxious Torque"), .description = COMPOUND_STRING("---"), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -19333,10 +19333,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("CombatTorque", "Combat Torque"), .description = COMPOUND_STRING("---"), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -19361,10 +19361,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("MagiclTorque", "Magical Torque"), .description = COMPOUND_STRING("---"), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 100, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -19391,10 +19391,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "This move's power increases\n" "when on Electric Terrain."), .effect = EFFECT_PSYBLADE, - .power = 80, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -19409,10 +19409,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "This move's power increases\n" "under harsh sunlight."), .effect = EFFECT_HYDRO_STEAM, - .power = 80, - .accuracy = 100, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -19426,10 +19426,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Unleashes the blood moon.\n" "Can't be used twice in a row."), .effect = EFFECT_HIT, - .power = 140, - .accuracy = 100, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 140, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -19443,10 +19443,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Absorbs half the damage\n" "inflicted. May cause a burn."), .effect = EFFECT_ABSORB, - .power = 80, - .accuracy = 90, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 90, .target = MOVE_TARGET_BOTH, .pp = 15, .priority = 0, @@ -19466,10 +19466,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the foe's speed\n" "each turn for 3 turns."), .effect = EFFECT_HIT, - .power = 60, - .accuracy = 85, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 60, + .accuracy = 85, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -19488,10 +19488,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Type changes with held mask.\n" "High critical-hit ratio."), .effect = EFFECT_IVY_CUDGEL, - .power = 100, - .accuracy = 100, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -19506,10 +19506,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Absorbs electricity in one turn,\n" "then attacks next turn."), .effect = EFFECT_TWO_TURNS_ATTACK, - .power = 130, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 130, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -19528,10 +19528,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Damages all opponents if user is\n" "Stellar form Terapagos."), .effect = EFFECT_PLACEHOLDER, //EFFECT_TERA_STARSTORM - .power = 120, - .accuracy = 100, .type = TYPE_NORMAL, // Stellar type if used by Terapagos-Stellar .category = DAMAGE_CATEGORY_SPECIAL, + .power = 120, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, // MOVE_TARGET_BOTH if used by Terapagos-Stellar .pp = 5, .priority = 0, @@ -19548,10 +19548,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Shoots a beam of light. Sometimes\n" "twice as strong."), .effect = EFFECT_FICKLE_BEAM, - .power = 80, - .accuracy = 100, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -19564,10 +19564,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades attack, and burns\n" "the foe if struck."), .effect = EFFECT_PROTECT, - .power = 0, - .accuracy = 0, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .zMove = { .effect = Z_EFFECT_RESET_STATS }, @@ -19584,10 +19584,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Thunderclap"), .description = sSuckerPunchDescription, .effect = EFFECT_SUCKER_PUNCH, - .power = 70, - .accuracy = 100, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 70, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 1, @@ -19598,10 +19598,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("MightyCleave", "Mighty Cleave"), .description = sFeintDescription, .effect = EFFECT_HIT, - .power = 95, - .accuracy = 100, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 95, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -19617,10 +19617,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Launches particle blades at\n" "the target. Strikes twice."), .effect = EFFECT_HIT, - .power = 50, - .accuracy = 0, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 50, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -19633,10 +19633,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Hard Press"), .description = sWringOutDescription, .effect = EFFECT_WRING_OUT, - .power = 1, - .accuracy = 100, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -19650,10 +19650,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Increases allies' critical hit\n" "ratio, especially if Dragons."), .effect = EFFECT_DRAGON_CHEER, - .power = 0, - .accuracy = 0, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_ALLY, .pp = 15, .priority = 0, @@ -19667,10 +19667,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Confuses the target if their\n" "stats were boosted this turn."), .effect = EFFECT_HIT, - .power = 80, - .accuracy = 100, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 80, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -19690,10 +19690,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A desperation attack. Power\n" "doubles if last move failed."), .effect = EFFECT_STOMPING_TANTRUM, - .power = 75, - .accuracy = 100, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 75, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -19707,10 +19707,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An electrified slam. If it\n" "misses, the user is hurt."), .effect = EFFECT_RECOIL_IF_MISS, - .power = 100, - .accuracy = 95, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 100, + .accuracy = 95, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 0, @@ -19724,10 +19724,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Unpleasant sound waves that\n" "damage and prevent healing."), .effect = EFFECT_HIT, - .power = 75, - .accuracy = 100, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 75, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -19746,10 +19746,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the target flinch if\n" "readying a priority move."), .effect = EFFECT_UPPER_HAND, - .power = 65, - .accuracy = 100, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 65, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 15, .priority = 3, @@ -19767,10 +19767,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A corrosive chain attack\n" "that may badly poison."), .effect = EFFECT_HIT, - .power = 100, - .accuracy = 100, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 100, + .accuracy = 100, .target = MOVE_TARGET_SELECTED, .pp = 5, .priority = 0, @@ -19786,10 +19786,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Breakneck Blitz"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, //determined from move type + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -19799,10 +19799,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("All Out Pummeling"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -19812,10 +19812,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Supersonic Skystrike"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -19825,10 +19825,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Acid Downpour"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -19838,10 +19838,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Tectonic Rage"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -19852,10 +19852,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Continental Crush"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -19865,10 +19865,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Savage Spin Out"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -19878,10 +19878,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Never Ending Nightmare"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -19891,10 +19891,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Corkscrew Crash"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -19904,10 +19904,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Inferno Overdrive"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -19917,10 +19917,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Hydro Vortex"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -19930,10 +19930,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Bloom Doom"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -19943,10 +19943,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Gigavolt Havoc"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -19956,10 +19956,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Shattered Psyche"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -19969,10 +19969,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Subzero Slammer"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -19982,10 +19982,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Devastating Drake"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -19995,10 +19995,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Black Hole Eclipse"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20008,10 +20008,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Twinkle Tackle"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 1, - .accuracy = 0, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20021,10 +20021,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Catastropika"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 210, - .accuracy = 0, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 210, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20034,10 +20034,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("10000000 Volt Thunderbolt"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 195, - .accuracy = 0, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 195, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20048,10 +20048,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Stoked Sparksurfer"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 175, - .accuracy = 0, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 175, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20065,10 +20065,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Extreme Evoboost"), .description = sNullDescription, .effect = EFFECT_EXTREME_EVOBOOST, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 1, .priority = 0, @@ -20078,10 +20078,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Pulverizing Pancake"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 210, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 210, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20091,10 +20091,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Genesis Supernova"), .description = sNullDescription, .effect = EFFECT_HIT_SET_REMOVE_TERRAIN, - .power = 185, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 185, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20105,10 +20105,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Sinister Arrow Raid"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 180, - .accuracy = 0, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 180, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20118,10 +20118,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Malicious Moonsault"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 180, - .accuracy = 0, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 180, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20131,10 +20131,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Oceaning Operetta"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 195, - .accuracy = 0, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 195, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20144,10 +20144,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Splintered Stormshards"), .description = sNullDescription, .effect = EFFECT_HIT_SET_REMOVE_TERRAIN, - .power = 190, - .accuracy = 0, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 190, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20158,10 +20158,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Let's Snuggle Forever"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 190, - .accuracy = 0, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 190, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20171,10 +20171,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Clangorous Soulblaze"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 185, - .accuracy = 0, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 185, + .accuracy = 0, .target = MOVE_TARGET_BOTH, .pp = 1, .priority = 0, @@ -20191,10 +20191,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Guardian Of Alola"), .description = sNullDescription, .effect = EFFECT_SUPER_FANG, - .power = 1, - .accuracy = 0, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20204,10 +20204,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Searing Sunraze Smash"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 200, - .accuracy = 0, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 200, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20217,10 +20217,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Menacing Moonraze Maelstrom"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 200, - .accuracy = 0, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 200, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20230,10 +20230,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Light That Burns The Sky"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 200, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_SPECIAL, + .power = 200, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20243,10 +20243,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Soul Stealing 7 Star Strike"), .description = sNullDescription, .effect = EFFECT_HIT, - .power = 195, - .accuracy = 0, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 195, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 1, .priority = 0, @@ -20257,10 +20257,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Guard"), .description = sNullDescription, .effect = EFFECT_PROTECT, - .power = 0, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_STATUS, + .power = 0, + .accuracy = 0, .target = MOVE_TARGET_USER, .pp = 10, .priority = 4, @@ -20271,10 +20271,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Flare"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 1, - .accuracy = 0, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20286,10 +20286,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Flutterby"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 1, - .accuracy = 0, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20301,10 +20301,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Lightning"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 1, - .accuracy = 0, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20316,10 +20316,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Strike"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 1, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20331,10 +20331,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Knuckle"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 1, - .accuracy = 0, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20346,10 +20346,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Phantasm"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 1, - .accuracy = 0, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20361,10 +20361,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Hailstorm"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 1, - .accuracy = 0, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20376,10 +20376,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Ooze"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 1, - .accuracy = 0, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20391,10 +20391,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Geyser"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 1, - .accuracy = 0, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20406,10 +20406,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Airstream"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 1, - .accuracy = 0, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20421,10 +20421,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Starfall"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 1, - .accuracy = 0, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20436,10 +20436,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Wyrmwind"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 1, - .accuracy = 0, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20451,10 +20451,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Mindstorm"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 1, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20466,10 +20466,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Rockfall"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 1, - .accuracy = 0, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20481,10 +20481,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Quake"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 1, - .accuracy = 0, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20497,10 +20497,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Darkness"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 1, - .accuracy = 0, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 1, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20512,10 +20512,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Overgrowth"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20527,10 +20527,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Steelspike"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20542,10 +20542,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Vine Lash"), .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20557,10 +20557,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Wildfire"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20572,10 +20572,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Canonade"), .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20587,10 +20587,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Befuddle"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_BUG, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20602,10 +20602,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Volt Crash"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20617,10 +20617,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Gold Rush"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20632,10 +20632,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Chi Strike"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_FIGHTING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20647,10 +20647,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Terror"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_GHOST, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20662,10 +20662,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Foam Burst"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20677,10 +20677,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Resonance"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_ICE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20692,10 +20692,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Cuddle"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20707,10 +20707,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Replenish"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20722,10 +20722,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Malodor"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_POISON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20737,10 +20737,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Meltdown"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20752,10 +20752,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Drum Solo"), .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20768,10 +20768,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Fireball"), .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20784,10 +20784,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Hydrosnipe"), .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20800,10 +20800,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Wind Rage"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_FLYING, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20815,10 +20815,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Gravitas"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_PSYCHIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20830,10 +20830,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Stonesurge"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20845,10 +20845,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Volcalith"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_ROCK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20860,10 +20860,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Tartness"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20875,10 +20875,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Sweetness"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_GRASS, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20890,10 +20890,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Sandblast"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_GROUND, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20905,10 +20905,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Stun Shock"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_ELECTRIC, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20920,10 +20920,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Centiferno"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_FIRE, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20935,10 +20935,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Smite"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20951,10 +20951,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Snooze"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20966,10 +20966,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Finale"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_FAIRY, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20981,10 +20981,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Steelsurge"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_STEEL, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -20996,10 +20996,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Depletion"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_DRAGON, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -21011,10 +21011,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max One Blow"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_DARK, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, @@ -21026,10 +21026,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Rapid Flow"), .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, - .power = 10, - .accuracy = 0, .type = TYPE_WATER, .category = DAMAGE_CATEGORY_PHYSICAL, + .power = 10, + .accuracy = 0, .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, From b447add4c3220a96fff0022eb9de37a0674610c9 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Mon, 12 Feb 2024 22:27:58 +0900 Subject: [PATCH 09/55] Minor fixes to RNG and additional effect count --- include/pokemon.h | 2 +- src/battle_script_commands.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/pokemon.h b/include/pokemon.h index 2e305d446e..7d78f4dbe9 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -525,7 +525,7 @@ struct MoveInfo }; #define EFFECTS_ARR(...) (const struct AdditionalEffect[]) {__VA_ARGS__} -#define ADDITIONAL_EFFECTS(...) ((ARRAY_COUNT(EFFECTS_ARR( __VA_ARGS__ )) % 0xF) << 28) + (uintptr_t)(EFFECTS_ARR( __VA_ARGS__ )) +#define ADDITIONAL_EFFECTS(...) ((min(ARRAY_COUNT(EFFECTS_ARR( __VA_ARGS__ )), 15)) << 28) + (uintptr_t)(EFFECTS_ARR( __VA_ARGS__ )) // Retrieve a move's additional effects and the count thereof #define GET_ADDITIONAL_EFFECTS_AND_COUNT(move, _count, _effects) u32 _count = GET_ADDITIONAL_EFFECTS_COUNT(move); const struct AdditionalEffect *_effects = GET_ADDITIONAL_EFFECTS(move) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 179516d6ab..90117df685 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3865,7 +3865,7 @@ static void Cmd_setadditionaleffects(void) percentChance = CalcSecondaryEffectChance(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker), &additionalEffects[i]); // Activate effect if it's primary (chance == 0) or if RNGesus says so - if ((percentChance == 0) || RandomPercentage(RNG_SECONDARY_EFFECT + i, percentChance)) + if ((percentChance == 0) || RandomPercentage(RNG_SECONDARY_EFFECT + (i % 3), percentChance)) { gBattleScripting.moveEffect = additionalEffects[i].moveEffect | (MOVE_EFFECT_AFFECTS_USER * (additionalEffects[i].self)); From 3537a37e1227c741be37c267c9a2724851cb1630 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Mon, 12 Feb 2024 22:31:26 +0900 Subject: [PATCH 10/55] Re-added missing linebreaks --- src/data/moves_info.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/data/moves_info.h b/src/data/moves_info.h index f09c4ece3f..d338d4605d 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -15,11 +15,13 @@ #else #define HANDLE_EXPANDED_MOVE_NAME(_name, ...) COMPOUND_STRING(_name) #endif + #if B_BINDING_TURNS >= GEN_5 #define BINDING_TURNS "4 or 5" #else #define BINDING_TURNS "2 to 5" #endif + /* First arg is the charge turn string id, second arg depends on effect EFFECT_SEMI_INVULNERABLE/EFFECT_SKY_DROP: semi-invulnerable STATUS3 to apply to battler EFFECT_TWO_TURNS_ATTACK/EFFECT_SOLAR_BEAM: weather in which to skip charge turn */ From 1ac99347420028281abf3e9349f4ab1677520385 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Tue, 13 Feb 2024 12:19:27 +0900 Subject: [PATCH 11/55] Reverted `forcePressure` flag move --- include/battle.h | 3 +-- include/pokemon.h | 1 + src/battle_script_commands.c | 2 +- src/data/battle_move_effects.h | 5 ----- src/data/moves_info.h | 8 +++++++- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/include/battle.h b/include/battle.h index 50f6a9834b..b1e3811929 100644 --- a/include/battle.h +++ b/include/battle.h @@ -57,8 +57,7 @@ struct __attribute__((packed, aligned(2))) BattleMoveEffect u16 twoTurnEffect:1; u16 semiInvulnerableEffect:1; u16 usesProtectCounter:1; - u16 forcePressure:1; - u16 padding:8; + u16 padding:9; }; #define GET_MOVE_EFFECT(move) gBattleMoveEffects[gMovesInfo[move].effect] diff --git a/include/pokemon.h b/include/pokemon.h index 7d78f4dbe9..86041d103a 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -495,6 +495,7 @@ struct MoveInfo u32 ignoreTypeIfFlyingAndUngrounded:1; u32 thawsUser:1; u32 ignoresSubstitute:1; + u32 forcePressure:1; u32 cantUseTwice:1; // Ban flags diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 90117df685..f4060fc83b 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1839,7 +1839,7 @@ static void Cmd_ppreduce(void) if (moveTarget == MOVE_TARGET_BOTH || moveTarget == MOVE_TARGET_FOES_AND_ALLY || moveTarget == MOVE_TARGET_ALL_BATTLERS - || GET_MOVE_EFFECT(gCurrentMove).forcePressure) + || gMovesInfo[gCurrentMove].forcePressure) { for (i = 0; i < gBattlersCount; i++) { diff --git a/src/data/battle_move_effects.h b/src/data/battle_move_effects.h index 73f9218ab3..f5933098b7 100644 --- a/src/data/battle_move_effects.h +++ b/src/data/battle_move_effects.h @@ -577,7 +577,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = { .battleScript = BattleScript_EffectSpikes, .battleTvScore = 4, - .forcePressure = TRUE, }, [EFFECT_FORESIGHT] = @@ -1030,7 +1029,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .battleScript = BattleScript_EffectImprison, .battleTvScore = 6, .encourageEncore = TRUE, - .forcePressure = TRUE, }, [EFFECT_REFRESH] = @@ -1051,7 +1049,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = { .battleScript = BattleScript_EffectSnatch, .battleTvScore = 1, - .forcePressure = TRUE, }, [EFFECT_LOW_KICK] = @@ -1326,7 +1323,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = { .battleScript = BattleScript_EffectToxicSpikes, .battleTvScore = 0, // TODO: Assign points - .forcePressure = TRUE, }, [EFFECT_GASTRO_ACID] = @@ -1340,7 +1336,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .battleScript = BattleScript_EffectStealthRock, .battleTvScore = 0, // TODO: Assign points .encourageEncore = TRUE, - .forcePressure = TRUE, }, [EFFECT_TELEKINESIS] = diff --git a/src/data/moves_info.h b/src/data/moves_info.h index d338d4605d..2db536438b 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -4674,6 +4674,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .ignoresProtect = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .forcePressure = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, @@ -6959,6 +6960,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .ignoresProtect = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .ignoresSubstitute = TRUE, + .forcePressure = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -7030,6 +7032,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, .priority = 4, .ignoresSubstitute = TRUE, + .forcePressure = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, @@ -9397,6 +9400,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .ignoresProtect = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .forcePressure = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, @@ -10717,6 +10721,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .ignoresProtect = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .forcePressure = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -18410,7 +18415,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "If the user's Terastallized,\n" "it hits with its Tera-type."), - .effect = EFFECT_PLACEHOLDER, // EFFECT_TERA_BLAST, // .forcePressure = TRUE, + .effect = EFFECT_PLACEHOLDER, // EFFECT_TERA_BLAST, .type = TYPE_NORMAL, .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, @@ -18418,6 +18423,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .pp = 10, .priority = 0, + .forcePressure = TRUE, .metronomeBanned = TRUE, // Only since it isn't implemented yet }, From 750eb40a75871c510bf423ae64cbaf4f745ecaa3 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Wed, 21 Feb 2024 23:55:38 +0100 Subject: [PATCH 12/55] Fixes Tangling Hair, Rocky Helmet interaction (#4219) --- data/battle_scripts_1.s | 1 + test/battle/ability/mirror_armor.c | 17 ++++++++ test/battle/ability/tangling_hair.c | 68 +++++++++++++++++++++++++++++ test/battle/move_effect/rage_fist.c | 1 - 4 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 test/battle/ability/tangling_hair.c diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index ac9e88bea8..730a9f56f1 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -9350,6 +9350,7 @@ BattleScript_GooeyActivates:: call BattleScript_AbilityPopUp swapattackerwithtarget @ for defiant, mirror armor seteffectsecondary + swapattackerwithtarget return BattleScript_AbilityStatusEffect:: diff --git a/test/battle/ability/mirror_armor.c b/test/battle/ability/mirror_armor.c index 2c4d8d9a27..6de3530a77 100644 --- a/test/battle/ability/mirror_armor.c +++ b/test/battle/ability/mirror_armor.c @@ -195,3 +195,20 @@ DOUBLE_BATTLE_TEST("Mirror Armor lowers Speed of the partner Pokemon after Court MESSAGE("Wobbuffet's Speed fell!"); } } + +SINGLE_BATTLE_TEST("Mirror Armor reflects Tangling Hair speed drop") +{ + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_DUGTRIO) { Ability(ABILITY_TANGLING_HAIR); } + OPPONENT(SPECIES_CORVIKNIGHT) { Ability(ABILITY_MIRROR_ARMOR); } + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ABILITY_POPUP(player, ABILITY_TANGLING_HAIR); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ABILITY_POPUP(opponent, ABILITY_MIRROR_ARMOR); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } +} diff --git a/test/battle/ability/tangling_hair.c b/test/battle/ability/tangling_hair.c new file mode 100644 index 0000000000..5e204bc42c --- /dev/null +++ b/test/battle/ability/tangling_hair.c @@ -0,0 +1,68 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_TACKLE].effect == EFFECT_HIT); + ASSUME(gBattleMoves[MOVE_TACKLE].power > 0); + ASSUME(gBattleMoves[MOVE_TACKLE].makesContact == TRUE); +} + + +SINGLE_BATTLE_TEST("Tangling Hair drops opposing mon's speed if ability user got hit by a contact move") +{ + u32 move; + + PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SWIFT; } + + GIVEN { + ASSUME(gBattleMoves[MOVE_SWIFT].makesContact == FALSE); + PLAYER(SPECIES_DUGTRIO) { Ability(ABILITY_TANGLING_HAIR); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, opponent); + if (move == MOVE_TACKLE) { + ABILITY_POPUP(player, ABILITY_TANGLING_HAIR); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wynaut's Speed fell!"); + } + } +} + +SINGLE_BATTLE_TEST("Tangling Hair does not cause Rocky Helmet miss activation") +{ + GIVEN { + ASSUME(gItems[ITEM_ROCKY_HELMET].holdEffect == HOLD_EFFECT_ROCKY_HELMET); + PLAYER(SPECIES_DUGTRIO) { Ability(ABILITY_TANGLING_HAIR); Item(ITEM_ROCKY_HELMET); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ABILITY_POPUP(player, ABILITY_TANGLING_HAIR); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wynaut's Speed fell!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Foe Wynaut was hurt by Dugtrio's Rocky Helmet!"); + } +} + +SINGLE_BATTLE_TEST("Tangling Hair Speed stat drop triggers defiant") +{ + GIVEN { + PLAYER(SPECIES_DUGTRIO) { Ability(ABILITY_TANGLING_HAIR); } + OPPONENT(SPECIES_PAWNIARD) { Ability(ABILITY_DEFIANT); } + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ABILITY_POPUP(player, ABILITY_TANGLING_HAIR); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Pawniard's Speed fell!"); + ABILITY_POPUP(opponent, ABILITY_DEFIANT); + MESSAGE("Foe Pawniard's Attack sharply rose!"); + } +} diff --git a/test/battle/move_effect/rage_fist.c b/test/battle/move_effect/rage_fist.c index 7a09461a4f..1d5feaad41 100644 --- a/test/battle/move_effect/rage_fist.c +++ b/test/battle/move_effect/rage_fist.c @@ -274,7 +274,6 @@ SINGLE_BATTLE_TEST("Rage Fist number of hits is copied by Transform") { s16 timesGotHit[2]; - // KNOWN_FAILING; // After Transform , wrong move is used by transformed mon GIVEN { PLAYER(SPECIES_REGIROCK); OPPONENT(SPECIES_REGIROCK) { Moves(MOVE_RAGE_FIST, MOVE_CELEBRATE); } From 7592ec59732f255c742cfdd6d3e9cf209600c03e Mon Sep 17 00:00:00 2001 From: Nephrite Date: Sun, 25 Feb 2024 17:42:43 +0900 Subject: [PATCH 13/55] Revert moves_info.h reorder --- src/data/moves_info.h | 6848 +++++++++++++++++++++-------------------- 1 file changed, 3425 insertions(+), 3423 deletions(-) diff --git a/src/data/moves_info.h b/src/data/moves_info.h index 2db536438b..b295222b5b 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -122,15 +122,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("-"), .description = COMPOUND_STRING(""), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 0, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .mirrorMoveBanned = TRUE, + .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, + .mirrorMoveBanned = TRUE, .sketchBanned = TRUE, }, @@ -141,13 +141,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Pounds the foe with\n" "forelegs or tail."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 35, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS == GEN_4, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, @@ -163,14 +163,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A chopping attack with a\n" "high critical-hit ratio."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 50, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 25, - .priority = 0, .criticalHitStage = 1, + .pp = 25, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -185,13 +185,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Repeatedly slaps the foe\n" "2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 15, + .type = TYPE_NORMAL, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -206,13 +206,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Repeatedly punches the foe\n" "2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 18, + .type = TYPE_NORMAL, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, @@ -228,13 +228,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A strong punch thrown with\n" "incredible power."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_NORMAL, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, @@ -250,13 +250,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Throws coins at the foe.\n" "Money is recovered after."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PAYDAY, }), @@ -273,13 +273,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A fiery punch that may burn\n" "the foe."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 75, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -303,13 +303,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "freeze the foe."), #endif .effect = EFFECT_HIT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 75, + .type = TYPE_ICE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -329,13 +329,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An electrified punch that\n" "may paralyze the foe."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 75, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -355,13 +355,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Scratches the foe with\n" "sharp claws."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 35, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -376,13 +376,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Grips the foe with large and\n" "powerful pincers."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 55, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 30, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -397,13 +397,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A powerful pincer attack\n" "that may cause fainting."), .effect = EFFECT_OHKO, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_NORMAL, .accuracy = 30, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -418,17 +418,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A 2-turn move that strikes\n" "the foe on the 2nd turn."), .effect = EFFECT_TWO_TURNS_ATTACK, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_BOTH, - .pp = 10, - .priority = 0, .criticalHitStage = 1, - .windMove = B_EXTRAPOLATED_MOVE_FLAGS, + .pp = 10, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .windMove = B_EXTRAPOLATED_MOVE_FLAGS, .argument = TWO_TURN_ARG(STRINGID_PKMNWHIPPEDWHIRLWIND), .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, @@ -443,16 +443,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A fighting dance that\n" "sharply raises Attack."), .effect = EFFECT_ATTACK_UP_2, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 30, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .snatchAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .danceMove = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_SWORDS_DANCE, @@ -466,13 +466,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Cuts the foe with sharp\n" "scythes, claws, etc."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 50, + .type = TYPE_NORMAL, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 30, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, @@ -488,16 +488,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes the foe with a gust\n" "of wind whipped up by wings."), .effect = EFFECT_HIT, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 40, + .type = TYPE_FLYING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .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), - .windMove = TRUE, .damagesAirborneDoubleDamage = TRUE, + .windMove = TRUE, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -511,13 +511,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes the foe with wings\n" "spread wide."), .effect = EFFECT_HIT, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_FLYING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 35, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, @@ -532,18 +532,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Blows away the foe with\n" "wind and ends the battle."), .effect = EFFECT_ROAR, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 0 : 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = -6, - .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, - .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .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, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, @@ -559,18 +559,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Flies up on the first turn,\n" "then strikes the next turn."), .effect = EFFECT_SEMI_INVULNERABLE, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 90 : 70, + .type = TYPE_FLYING, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .gravityBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_PKMNFLEWHIGH, COMPRESS_BITS(STATUS3_ON_AIR)), .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -585,13 +585,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Binds and squeezes the foe\n" "for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 15, + .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 75, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -610,13 +610,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slams the foe with a long\n" "tail, vine, etc."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_NORMAL, .accuracy = 75, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, @@ -631,12 +631,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Strikes the foe with\n" "slender, whiplike vines."), - .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, - .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 45 : 35, - .accuracy = 100, - .target = MOVE_TARGET_SELECTED, #if B_UPDATED_MOVE_DATA >= GEN_6 .pp = 25, #elif B_UPDATED_MOVE_DATA >= GEN_4 @@ -644,7 +638,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .pp = 10, #endif + .effect = EFFECT_HIT, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 45 : 35, + .type = TYPE_GRASS, + .accuracy = 100, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, @@ -659,13 +659,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stomps the enemy with a big\n" "foot. May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 65, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .minimizeDoubleDamage = TRUE, .skyBattleBanned = TRUE, @@ -686,15 +686,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A double-kicking attack\n" "that strikes the foe twice."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 30, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 30, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .strikeCount = 2, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .strikeCount = 2, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -708,13 +708,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An extremely powerful kick\n" "with intense force."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_NORMAL, .accuracy = 75, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, @@ -728,9 +728,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "A strong jumping kick. May\n" "miss and hurt the kicker."), - .effect = EFFECT_RECOIL_IF_MISS, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 100, #elif B_UPDATED_MOVE_DATA >= GEN_4 @@ -738,10 +735,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .power = 70, #endif + .effect = EFFECT_RECOIL_IF_MISS, + .type = TYPE_FIGHTING, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 25, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .gravityBanned = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, @@ -757,13 +757,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A fast kick delivered from\n" "a rapid spin."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_FIGHTING, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -783,14 +783,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Reduces the foe's accuracy\n" "by hurling sand in its face."), .effect = EFFECT_ACCURACY_DOWN, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GROUND, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -805,13 +805,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A ramming attack that may\n" "cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -830,13 +830,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Jabs the foe with sharp\n" "horns."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 65, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 25, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, @@ -851,13 +851,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Jabs the foe 2 to 5 times\n" "with sharp horns, etc."), .effect = EFFECT_MULTI_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 15, + .type = TYPE_NORMAL, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_COOL, @@ -872,13 +872,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A one-hit KO attack that\n" "uses a horn like a drill."), .effect = EFFECT_OHKO, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_NORMAL, .accuracy = 30, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -892,9 +892,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Charges the foe with a full-\n" "body tackle."), - .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, #if B_UPDATED_MOVE_DATA >= GEN_7 .power = 40, #elif B_UPDATED_MOVE_DATA >= GEN_5 @@ -902,10 +899,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .power = 35, #endif + .effect = EFFECT_HIT, + .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 95, - .target = MOVE_TARGET_SELECTED, .pp = 35, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -920,13 +920,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A full-body slam that may\n" "cause paralysis."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 85, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_6, .skyBattleBanned = TRUE, @@ -947,13 +947,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Wraps and squeezes the foe\n" BINDING_TURNS" times with vines, etc."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 15, + .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 85, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_WRAP, @@ -971,14 +971,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A reckless charge attack\n" "that also hurts the user."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_NORMAL, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, - .pp = 20, - .priority = 0, .recoil = 25, + .pp = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -993,13 +993,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A rampage of 2 to 3 turns\n" "that confuses the user."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 120 : 90, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_RANDOM, .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 20, + .target = MOVE_TARGET_RANDOM, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .instructBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -1019,14 +1019,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A life-risking tackle that\n" "also hurts the user."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 15, - .priority = 0, .recoil = 33, + .pp = 15, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -1041,14 +1041,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Wags the tail to lower the\n" "foe's Defense."), .effect = EFFECT_DEFENSE_DOWN, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 30, - .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -1063,13 +1063,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A toxic attack with barbs,\n" "etc., that may poison."), .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 15, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 35, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 30, @@ -1087,15 +1087,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stingers on the forelegs\n" "jab the foe twice."), .effect = EFFECT_HIT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 25, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .strikeCount = 2, + .category = DAMAGE_CATEGORY_PHYSICAL, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), + .strikeCount = 2, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 20, @@ -1113,13 +1113,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sharp pins are fired to\n" "strike 2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 25 : 14, + .type = TYPE_BUG, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 95 : 85, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -1133,14 +1133,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Frightens the foe with a\n" "leer to lower Defense."), .effect = EFFECT_DEFENSE_DOWN, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 30, - .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_COOL, @@ -1155,13 +1155,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Bites with vicious fangs.\n" "May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 25, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -1181,14 +1181,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Growls cutely to reduce the\n" "foe's Attack."), .effect = EFFECT_ATTACK_DOWN, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 40, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .magicCoatAffected = TRUE, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, @@ -1205,18 +1205,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the foe flee to end\n" "the battle."), .effect = EFFECT_ROAR, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 0 : 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = -6, + .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, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .copycatBanned = TRUE, .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, @@ -1232,17 +1232,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A soothing song lulls the\n" "foe into a deep slumber."), .effect = EFFECT_SLEEP, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 55, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_SING, @@ -1256,17 +1256,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Emits bizarre sound waves\n" "that may confuse the foe."), .effect = EFFECT_CONFUSE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 55, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -1280,13 +1280,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Launches shock waves that\n" "always inflict 20 HP damage."), .effect = EFFECT_FIXED_DAMAGE_ARG, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 1, + .type = TYPE_NORMAL, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .argument = 20, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, @@ -1300,10 +1300,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Psychically disables one of\n" "the foe's moves."), - .effect = EFFECT_DISABLE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, - .power = 0, #if B_UPDATED_MOVE_DATA >= GEN_5 .accuracy = 100, #elif B_UPDATED_MOVE_DATA == GEN_4 @@ -1311,12 +1307,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .accuracy = 55, #endif - .target = MOVE_TARGET_SELECTED, + .effect = EFFECT_DISABLE, + .power = 0, + .type = TYPE_NORMAL, .pp = 20, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresSubstitute = TRUE, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -1334,14 +1334,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May lower Defense."), #endif .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 40, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 30, + .target = MOVE_TARGET_BOTH, .priority = 0, - .additionalEffects = ADDITIONAL_EFFECTS({ + .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, }), @@ -1358,13 +1358,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A weak fire attack that may\n" "inflict a burn."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 40, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 25, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 10, @@ -1382,13 +1382,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A powerful fire attack that\n" "may inflict a burn."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 10, @@ -1406,17 +1406,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates a mist that stops\n" "reduction of abilities."), .effect = EFFECT_MIST, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ICE, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 30, - .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RECOVER_HP }, .ignoresProtect = TRUE, - .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -1430,13 +1430,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Squirts water to attack\n" "the foe."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 40, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 25, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -1450,13 +1450,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Blasts water at high power\n" "to strike the foe."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, + .type = TYPE_WATER, .accuracy = 80, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -1470,13 +1470,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates a huge wave, then\n" "crashes it down on the foe."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, + .type = TYPE_WATER, .accuracy = 100, - .target = B_UPDATED_MOVE_DATA >= GEN_4 ? MOVE_TARGET_FOES_AND_ALLY : MOVE_TARGET_BOTH, .pp = 15, + .target = B_UPDATED_MOVE_DATA >= GEN_4 ? MOVE_TARGET_FOES_AND_ALLY : MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .damagesUnderwater = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, @@ -1496,13 +1496,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "beam that may freeze it."), #endif .effect = EFFECT_HIT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, + .type = TYPE_ICE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ // The following effect is also relevant in battle_pike.c // If you cherry-pick this to use something other than the config, make sure to update it there too @@ -1526,13 +1526,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "storm that may freeze it."), #endif .effect = B_BLIZZARD_HAIL >= GEN_4 ? EFFECT_BLIZZARD : EFFECT_HIT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, + .type = TYPE_ICE, .accuracy = 70, - .target = MOVE_TARGET_BOTH, .pp = 5, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, @@ -1551,13 +1551,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires a peculiar ray that\n" "may confuse the foe."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 65, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, .chance = 10, @@ -1575,13 +1575,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Forcefully sprays bubbles\n" "that may lower Speed."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 65, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 10, @@ -1599,13 +1599,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires a rainbow-colored\n" "beam that may lower Attack."), .effect = EFFECT_HIT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 65, + .type = TYPE_ICE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, .chance = 10, @@ -1621,13 +1621,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Hyper Beam"), .description = sHyperBeamDescription, .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 150, + .type = TYPE_NORMAL, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, @@ -1646,13 +1646,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks the foe with a\n" "jabbing beak, etc."), .effect = EFFECT_HIT, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 35, + .type = TYPE_FLYING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 35, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, @@ -1667,13 +1667,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A corkscrewing attack with\n" "the beak acting as a drill."), .effect = EFFECT_HIT, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_FLYING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, @@ -1688,14 +1688,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A reckless body slam that\n" "also hurts the user."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_FIGHTING, .accuracy = 80, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 25, - .priority = 0, .recoil = 25, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_COOL, @@ -1710,13 +1710,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A kick that inflicts more\n" "damage on heavier foes."), .effect = EFFECT_LOW_KICK, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -1731,13 +1731,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Retaliates any physical hit\n" "with double the power."), .effect = EFFECT_COUNTER, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_DEPENDS, .pp = 20, + .target = MOVE_TARGET_DEPENDS, .priority = -5, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .meFirstBanned = TRUE, @@ -1757,13 +1757,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts damage identical\n" "to the user's level."), .effect = EFFECT_LEVEL_DAMAGE, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, @@ -1779,13 +1779,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Builds enormous power,\n" "then slams the foe."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -1800,13 +1800,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that absorbs\n" "half the damage inflicted."), .effect = EFFECT_ABSORB, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 20, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_4 ? 25 : 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .healingMove = B_HEAL_BLOCKING >= GEN_6, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, @@ -1820,13 +1820,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Mega Drain"), .description = sMegaDrainDescription, .effect = EFFECT_ABSORB, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 40, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_4 ? 15 : 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .healingMove = B_HEAL_BLOCKING >= GEN_6, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, @@ -1842,14 +1842,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Plants a seed on the foe to\n" "steal HP on every turn."), .effect = EFFECT_LEECH_SEED, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -1864,17 +1864,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Forces the body to grow\n" "and heightens Sp. Atk."), .effect = B_GROWTH_STAT_RAISE >= GEN_5 ? EFFECT_GROWTH : EFFECT_SPECIAL_ATTACK_UP, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 40, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .ignoresProtect = TRUE, - .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_GROWTH, @@ -1888,14 +1888,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Cuts the enemy with leaves.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 55, + .type = TYPE_GRASS, .accuracy = 95, - .target = MOVE_TARGET_BOTH, - .pp = 25, - .priority = 0, .criticalHitStage = 1, + .pp = 25, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, @@ -1910,13 +1910,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Absorbs light in one turn,\n" "then attacks next turn."), .effect = EFFECT_SOLAR_BEAM, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 120, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_PKMNTOOKSUNLIGHT, B_WEATHER_SUN), @@ -1933,14 +1933,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Scatters a toxic powder\n" "that may poison the foe."), .effect = EFFECT_POISON, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_POISON, .accuracy = 75, - .target = MOVE_TARGET_SELECTED, .pp = 35, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .magicCoatAffected = TRUE, .powderMove = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, @@ -1956,14 +1956,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Scatters a powder that may\n" "paralyze the foe."), .effect = EFFECT_PARALYZE, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = 75, - .target = MOVE_TARGET_SELECTED, .pp = 30, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .magicCoatAffected = TRUE, .powderMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, @@ -1979,14 +1979,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Scatters a powder that may\n" "cause the foe to sleep."), .effect = EFFECT_SLEEP, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = 75, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .magicCoatAffected = TRUE, .powderMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, @@ -2001,9 +2001,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "A rampage of 2 to 3 turns\n" "that confuses the user."), - .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 120, #elif B_UPDATED_MOVE_DATA == GEN_4 @@ -2011,10 +2008,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .power = 70, #endif + .effect = EFFECT_HIT, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_RANDOM, .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 20, + .target = MOVE_TARGET_RANDOM, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .makesContact = TRUE, .danceMove = TRUE, .instructBanned = TRUE, @@ -2035,14 +2035,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Binds the foe with string\n" "to reduce its Speed."), .effect = B_UPDATED_MOVE_DATA >= GEN_6 ? EFFECT_SPEED_DOWN_2 : EFFECT_SPEED_DOWN, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_BUG, .accuracy = 95, - .target = MOVE_TARGET_BOTH, .pp = 40, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_SMART, @@ -2057,13 +2057,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Launches shock waves that\n" "always inflict 40 HP damage."), .effect = EFFECT_FIXED_DAMAGE_ARG, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 1, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_4) || (B_UPDATED_MOVE_FLAGS < GEN_3), .argument = 40, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, @@ -2079,13 +2079,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Traps the foe in a ring of\n" "fire for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 35 : 15, + .type = TYPE_FIRE, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 70, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_WRAP, @@ -2103,13 +2103,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An electrical attack that\n" "may paralyze the foe."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 40, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 30, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 10, @@ -2127,13 +2127,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A strong electrical attack\n" "that may paralyze the foe."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 10, @@ -2151,14 +2151,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A weak jolt of electricity\n" "that paralyzes the foe."), .effect = EFFECT_PARALYZE, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ELECTRIC, .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 90 : 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -2173,13 +2173,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A lightning attack that may\n" "cause paralysis."), .effect = EFFECT_THUNDER, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, + .type = TYPE_ELECTRIC, .accuracy = 70, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .damagesAirborne = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -2198,13 +2198,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Throws small rocks to\n" "strike the foe."), .effect = EFFECT_HIT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 50, + .type = TYPE_ROCK, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_ROCK_THROW, @@ -2218,13 +2218,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A powerful quake, but has\n" "no effect on flying foes."), .effect = EFFECT_EARTHQUAKE, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_GROUND, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 10, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .damagesUnderground = TRUE, .skyBattleBanned = TRUE, @@ -2241,13 +2241,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A one-hit KO move that\n" "drops the foe in a fissure."), .effect = EFFECT_OHKO, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_GROUND, .accuracy = 30, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .damagesUnderground = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, @@ -2263,17 +2263,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Digs underground the first\n" "turn and strikes next turn."), .effect = EFFECT_SEMI_INVULNERABLE, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 80 : 60, + .type = TYPE_GROUND, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, .skyBattleBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_PKMNDUGHOLE, COMPRESS_BITS(STATUS3_UNDERGROUND)), .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, @@ -2289,14 +2289,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Poisons the foe with an\n" "intensifying toxin."), .effect = EFFECT_TOXIC, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_POISON, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 85, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -2311,13 +2311,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A psychic attack that may\n" "cause confusion."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 50, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 25, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, .chance = 10, @@ -2335,13 +2335,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A powerful psychic attack\n" "that may lower Sp. Def."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 90, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, .chance = 10, @@ -2359,14 +2359,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A hypnotizing move that\n" "may induce sleep."), .effect = EFFECT_SLEEP, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 60, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -2381,17 +2381,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Meditates in a peaceful\n" "fashion to raise Attack."), .effect = EFFECT_ATTACK_UP, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 40, - .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .ignoresProtect = TRUE, - .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -2405,17 +2405,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Relaxes the body to sharply\n" "boost Speed."), .effect = EFFECT_SPEED_UP_2, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 30, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, - .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -2429,13 +2429,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An extremely fast attack\n" "that always strikes first."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 30, + .target = MOVE_TARGET_SELECTED, .priority = 1, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -2450,13 +2450,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises the user's Attack\n" "every time it is hit."), .effect = EFFECT_RAGE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 20, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_COOL, @@ -2471,14 +2471,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A psychic move for fleeing\n" "from battle instantly."), .effect = EFFECT_TELEPORT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .target = MOVE_TARGET_USER, .priority = -6, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RECOVER_HP }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, @@ -2494,13 +2494,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts damage identical\n" "to the user's level."), .effect = EFFECT_LEVEL_DAMAGE, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 1, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -2514,22 +2514,22 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Copies a move used by the\n" "foe during one battle."), .effect = EFFECT_MIMIC, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, .ignoresSubstitute = TRUE, .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_2, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, + .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -2543,17 +2543,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Emits a screech to sharply\n" "reduce the foe's Defense."), .effect = EFFECT_DEFENSE_DOWN_2, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 40, - .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -2567,17 +2567,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates illusory copies to\n" "raise evasiveness."), .effect = EFFECT_EVASION_UP, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 15, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, - .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_DOUBLE_TEAM, @@ -2590,12 +2590,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Recovers up to half the\n" "user's maximum HP."), - .effect = EFFECT_RESTORE_HP, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, - .power = 0, - .accuracy = 0, - .target = MOVE_TARGET_USER, #if B_UPDATED_MOVE_DATA >= GEN_9 .pp = 5, #elif B_UPDATED_MOVE_DATA >= GEN_4 @@ -2603,12 +2597,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .pp = 20, #endif - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .effect = EFFECT_RESTORE_HP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, - .snatchAffected = TRUE, - .healingMove = TRUE, .mirrorMoveBanned = TRUE, + .healingMove = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -2622,17 +2622,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stiffens the body's \n" "muscles to raise Defense."), .effect = EFFECT_DEFENSE_UP, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 30, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .ignoresProtect = TRUE, - .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_HARDEN, @@ -2646,17 +2646,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Minimizes the user's size\n" "to raise evasiveness."), .effect = EFFECT_MINIMIZE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 10 : 20, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, - .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -2670,14 +2670,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the foe's accuracy\n" "using smoke, ink, etc."), .effect = EFFECT_ACCURACY_DOWN, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, .contestCategory = CONTEST_CATEGORY_SMART, @@ -2692,14 +2692,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A sinister ray that\n" "confuses the foe."), .effect = EFFECT_CONFUSE, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, @@ -2714,17 +2714,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Withdraws the body into its\n" "hard shell to raise Defense."), .effect = EFFECT_DEFENSE_UP, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_WATER, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 40, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .ignoresProtect = TRUE, - .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -2738,17 +2738,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Curls up to conceal weak\n" "spots and raise Defense."), .effect = EFFECT_DEFENSE_CURL, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 40, - .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, .ignoresProtect = TRUE, - .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_DEFENSE_CURL, @@ -2762,17 +2762,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates a barrier that\n" "sharply raises Defense."), .effect = EFFECT_DEFENSE_UP_2, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 30, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, - .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -2786,17 +2786,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates a wall of light that\n" "lowers Sp. Atk damage."), .effect = EFFECT_LIGHT_SCREEN, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 30, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .ignoresProtect = TRUE, - .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -2810,14 +2810,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates a black haze that\n" "eliminates all stat changes."), .effect = EFFECT_HAZE, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ICE, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 30, - .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RECOVER_HP }, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -2834,17 +2834,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates a wall of light that\n" "weakens physical attacks."), .effect = EFFECT_REFLECT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .ignoresProtect = TRUE, - .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -2858,18 +2858,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Focuses power to raise the\n" "critical-hit ratio."), .effect = EFFECT_FOCUS_ENERGY, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 30, - .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, - .snatchAffected = TRUE, - .mirrorMoveBanned = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, .argument = STATUS2_FOCUS_ENERGY, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_FOCUS_ENERGY, @@ -2883,17 +2883,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Endures attack for 2\n" "turns to retaliate double."), .effect = EFFECT_BIDE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, - .target = MOVE_TARGET_USER, .pp = 10, + .target = MOVE_TARGET_USER, .priority = B_UPDATED_MOVE_DATA >= GEN_4 ? 1 : 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .mirrorMoveBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -2907,22 +2907,22 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Waggles a finger to use any\n" "Pokémon move at random."), .effect = EFFECT_METRONOME, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_DEPENDS, .pp = 10, + .target = MOVE_TARGET_DEPENDS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_3, .instructBanned = TRUE, .encoreBanned = TRUE, + .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -2936,21 +2936,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Counters the foe's attack\n" "with the same move."), .effect = EFFECT_MIRROR_MOVE, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FLYING, .accuracy = 0, - .target = MOVE_TARGET_DEPENDS, .pp = 20, - .zMove = { .effect = Z_EFFECT_ATK_UP_2 }, + .target = MOVE_TARGET_DEPENDS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_2 }, .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_3, .instructBanned = TRUE, .encoreBanned = TRUE, + .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -2964,13 +2964,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts severe damage but\n" "makes the user faint."), .effect = EFFECT_EXPLOSION, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 200, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 5, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .parentalBondBanned = TRUE, .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -2985,13 +2985,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An egg is forcibly hurled at\n" "the foe."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_NORMAL, .accuracy = 75, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -3006,13 +3006,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Licks with a long tongue to\n" "injure. May also paralyze."), .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 30 : 20, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 30, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -3031,13 +3031,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An exhaust-gas attack\n" "that may also poison."), .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 30 : 20, + .type = TYPE_POISON, .accuracy = 70, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 40, @@ -3055,13 +3055,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sludge is hurled to inflict\n" "damage. May also poison."), .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 65, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 30, @@ -3079,13 +3079,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Clubs the foe with a bone.\n" "May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 65, + .type = TYPE_GROUND, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 10, @@ -3103,13 +3103,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Incinerates everything it\n" "strikes. May cause a burn."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, + .type = TYPE_FIRE, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 10, @@ -3127,13 +3127,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Charges the foe with speed\n" "to climb waterfalls."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, #if B_UPDATED_MOVE_DATA >= GEN_4 .additionalEffects = ADDITIONAL_EFFECTS({ @@ -3154,13 +3154,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Traps and squeezes the\n" "foe for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 35, + .type = TYPE_WATER, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 75, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 15 : 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -3179,13 +3179,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sprays star-shaped rays\n" "that never miss."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 60, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_BOTH, .pp = 20, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -3199,13 +3199,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Tucks in the head, then\n" "attacks on the next turn."), .effect = EFFECT_TWO_TURNS_ATTACK, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 100, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 10 : 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -3228,13 +3228,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Launches sharp spikes that\n" "strike 2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 20, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -3248,13 +3248,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Constricts to inflict pain.\n" "May lower Speed."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 35, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, @@ -3273,17 +3273,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Forgets about something\n" "and sharply raises Sp. Def."), .effect = EFFECT_SPECIAL_DEFENSE_UP_2, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, - .snatchAffected = TRUE, .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -3297,14 +3297,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Distracts the foe.\n" "May lower accuracy."), .effect = EFFECT_ACCURACY_DOWN, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 80, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -3319,18 +3319,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Recovers up to half the\n" "user's maximum HP."), .effect = EFFECT_SOFTBOILED, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, - .snatchAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .healingMove = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, + .snatchAffected = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_SOFT_BOILED, @@ -3343,9 +3343,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "A jumping knee kick. If it\n" "misses, the user is hurt."), - .effect = EFFECT_RECOIL_IF_MISS, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 130, #elif B_UPDATED_MOVE_DATA == GEN_4 @@ -3353,10 +3350,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .power = 85, #endif + .effect = EFFECT_RECOIL_IF_MISS, + .type = TYPE_FIGHTING, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .gravityBanned = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, @@ -3371,10 +3371,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Intimidates and frightens\n" "the foe into paralysis."), - .effect = EFFECT_PARALYZE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, - .power = 0, #if B_UPDATED_MOVE_DATA >= GEN_6 .accuracy = 100, #elif B_UPDATED_MOVE_DATA == GEN_5 @@ -3382,10 +3378,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .accuracy = 75, #endif - .target = MOVE_TARGET_SELECTED, + .effect = EFFECT_PARALYZE, + .power = 0, + .type = TYPE_NORMAL, .pp = 30, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -3400,13 +3400,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Takes one half the damage\n" "inflicted on a sleeping foe."), .effect = EFFECT_DREAM_EATER, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 100, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .healingMove = B_HEAL_BLOCKING >= GEN_6, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -3420,10 +3420,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Envelops the foe in a toxic\n" "gas that may poison."), - .effect = EFFECT_POISON, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_STATUS, - .power = 0, #if B_UPDATED_MOVE_DATA >= GEN_6 .accuracy = 90, #elif B_UPDATED_MOVE_DATA >= GEN_5 @@ -3431,10 +3427,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .accuracy = 55, #endif - .target = B_UPDATED_MOVE_DATA >= GEN_5 ? MOVE_TARGET_BOTH : MOVE_TARGET_SELECTED, + .effect = EFFECT_POISON, + .power = 0, + .type = TYPE_POISON, .pp = 40, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = B_UPDATED_MOVE_DATA >= GEN_5 ? MOVE_TARGET_BOTH : MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -3449,13 +3449,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurls round objects at the\n" "foe 2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 15, + .type = TYPE_NORMAL, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -3470,13 +3470,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that steals half\n" "the damage inflicted."), .effect = EFFECT_ABSORB, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 80 : 20, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_7 ? 10 : 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .healingMove = B_HEAL_BLOCKING >= GEN_6, @@ -3493,14 +3493,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Demands a kiss with a scary\n" "face that induces sleep."), .effect = EFFECT_SLEEP, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 75, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -3515,13 +3515,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Searches out weak spots,\n" "then strikes the next turn."), .effect = EFFECT_TWO_TURNS_ATTACK, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 140, + .type = TYPE_FLYING, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -3545,22 +3545,22 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Alters the user's cells to\n" "become a copy of the foe."), .effect = EFFECT_TRANSFORM, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RECOVER_HP }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .copycatBanned = TRUE, - .assistBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, + .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -3574,13 +3574,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack using bubbles.\n" "May lower the foe's Speed."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 40 : 20, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 30, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 10, @@ -3598,13 +3598,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A rhythmic punch that may\n" "confuse the foe."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -3624,14 +3624,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Scatters a cloud of spores\n" "that always induce sleep."), .effect = EFFECT_SLEEP, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .magicCoatAffected = TRUE, .powderMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, @@ -3647,14 +3647,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Looses a powerful blast of\n" "light that cuts accuracy."), .effect = EFFECT_ACCURACY_DOWN, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 100 : 70, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -3669,13 +3669,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a psychic\n" "wave of varying intensity."), .effect = EFFECT_PSYWAVE, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 1, + .type = TYPE_PSYCHIC, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 80, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -3689,17 +3689,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "It's just a splash...\n" "Has no effect whatsoever."), .effect = EFFECT_DO_NOTHING, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 40, - .zMove = { .effect = Z_EFFECT_ATK_UP_3 }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_3 }, .ignoresProtect = TRUE, - .gravityBanned = TRUE, .mirrorMoveBanned = TRUE, + .gravityBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -3713,16 +3713,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Liquifies the user's body\n" "to sharply raise Defense."), .effect = EFFECT_DEFENSE_UP_2, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_POISON, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 40, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -3737,14 +3737,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hammers with a pincer. Has a\n" "high critical-hit ratio."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 90, + .type = TYPE_WATER, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 85, - .target = MOVE_TARGET_SELECTED, - .pp = 10, - .priority = 0, .criticalHitStage = 1, + .pp = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -3759,13 +3759,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts severe damage but\n" "makes the user faint."), .effect = EFFECT_EXPLOSION, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 250, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 5, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .parentalBondBanned = TRUE, .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -3780,13 +3780,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Rakes the foe with sharp\n" "claws, etc., 2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 18, + .type = TYPE_NORMAL, .accuracy = 80, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -3801,13 +3801,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Throws a bone boomerang\n" "that strikes twice."), .effect = EFFECT_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 50, + .type = TYPE_GROUND, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .strikeCount = 2, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -3822,18 +3822,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user sleeps for 2 turns,\n" "restoring HP and status."), .effect = EFFECT_REST, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .snatchAffected = TRUE, - .healingMove = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, + .healingMove = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_REST, @@ -3847,13 +3847,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Large boulders are hurled.\n" "May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 75, + .type = TYPE_ROCK, .accuracy = 90, - .target = MOVE_TARGET_BOTH, .pp = 10, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 30, @@ -3871,13 +3871,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with sharp fangs.\n" "May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_NORMAL, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -3897,16 +3897,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Reduces the polygon count\n" "and raises Attack."), .effect = EFFECT_ATTACK_UP, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 30, - .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -3921,16 +3921,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Changes the user's type\n" "into a known move's type."), .effect = EFFECT_CONVERSION, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 30, - .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -3945,13 +3945,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires three types of beams\n" "at the same time."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_TRI_ATTACK, .chance = 20, @@ -3969,13 +3969,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with sharp fangs\n" "and cuts half the foe's HP."), .effect = EFFECT_SUPER_FANG, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_NORMAL, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, @@ -3991,14 +3991,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slashes with claws, etc. Has\n" "a high critical-hit ratio."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 20, - .priority = 0, .criticalHitStage = 1, + .pp = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, @@ -4014,16 +4014,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates a decoy using 1/4\n" "of the user's maximum HP."), .effect = EFFECT_SUBSTITUTE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, @@ -4038,32 +4038,35 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Used only if all PP are gone.\n" "Also hurts the user a little."), - .effect = B_UPDATED_MOVE_DATA >= GEN_4 ? EFFECT_RECOIL_HP_25 : EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, - .power = 50, - .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, - .target = MOVE_TARGET_SELECTED, - .pp = 1, - .priority = 0, - .recoil = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 25, - .makesContact = TRUE, - .mirrorMoveBanned = B_UPDATED_MOVE_DATA >= GEN_4, - .meFirstBanned = TRUE, - .mimicBanned = TRUE, - .metronomeBanned = TRUE, - .copycatBanned = TRUE, - .assistBanned = TRUE, - .sleepTalkBanned = TRUE, - .instructBanned = TRUE, - .encoreBanned = TRUE, - .sketchBanned = TRUE, #if B_UPDATED_MOVE_DATA >= GEN_4 + .effect = EFFECT_RECOIL_HP_25, + .accuracy = 0, + .mirrorMoveBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECOIL_HP_25, .self = TRUE, }), + #else + .effect = EFFECT_HIT, + .accuracy = 100, + .recoil = 25, #endif + .power = 50, + .type = TYPE_NORMAL, + .pp = 1, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, + .makesContact = TRUE, + .meFirstBanned = TRUE, + .mimicBanned = TRUE, + .metronomeBanned = TRUE, + .sleepTalkBanned = TRUE, + .copycatBanned = TRUE, + .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .sketchBanned = TRUE, }, [MOVE_SKETCH] = @@ -4073,24 +4076,24 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Copies the foe's last move\n" "permanently."), .effect = EFFECT_SKETCH, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, - .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .instructBanned = TRUE, .encoreBanned = TRUE, + .assistBanned = TRUE, .sketchBanned = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -4105,15 +4108,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Kicks the foe 3 times in a\n" "row with rising intensity."), .effect = EFFECT_TRIPLE_KICK, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_FIGHTING, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .strikeCount = 3, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .strikeCount = 3, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -4127,13 +4130,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "While attacking, it may\n" "steal the foe's held item."), .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 40, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 25 : 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .meFirstBanned = TRUE, @@ -4156,14 +4159,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Ensnares the foe to stop it\n" "from fleeing or switching."), .effect = EFFECT_MEAN_LOOK, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_BUG, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .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), .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, @@ -4179,14 +4182,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Senses the foe's action to\n" "ensure the next move's hit."), .effect = EFFECT_LOCK_ON, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_MIND_READER, @@ -4200,14 +4203,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts 1/4 damage on a\n" "sleeping foe every turn."), .effect = EFFECT_NIGHTMARE, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GHOST, .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 100 : 0, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .ignoresProtect = B_UPDATED_MOVE_FLAGS <= GEN_3, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -4222,13 +4225,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A fiery charge attack that\n" "may inflict a burn."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 25, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .thawsUser = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -4248,15 +4251,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A loud attack that can be\n" "used only while asleep."), .effect = EFFECT_SNORE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 50 : 40, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .soundMove = TRUE, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .soundMove = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -4275,14 +4278,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A move that functions\n" "differently for GHOSTS."), .effect = EFFECT_CURSE, - .type = B_UPDATED_MOVE_TYPES >= GEN_5 ? TYPE_GHOST : TYPE_MYSTERY, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = B_UPDATED_MOVE_TYPES >= GEN_5 ? TYPE_GHOST : TYPE_MYSTERY, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_CURSE }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_CURSE }, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -4299,13 +4302,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts more damage when\n" "the user's HP is down."), .effect = EFFECT_FLAIL, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -4320,14 +4323,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the user resistant\n" "to the last attack's type."), .effect = EFFECT_CONVERSION_2, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 30, - .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RECOVER_HP }, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_5, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -4344,14 +4347,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Launches a vacuumed blast.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 100, + .type = TYPE_FLYING, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, - .pp = 5, - .priority = 0, .criticalHitStage = 1, + .pp = 5, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .windMove = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, @@ -4366,14 +4369,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Spores cling to the foe,\n" "sharply reducing Speed."), .effect = EFFECT_SPEED_DOWN_2, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 85, - .target = B_UPDATED_MOVE_DATA >= GEN_6 ? MOVE_TARGET_BOTH : MOVE_TARGET_SELECTED, .pp = 40, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = B_UPDATED_MOVE_DATA >= GEN_6 ? MOVE_TARGET_BOTH : MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .magicCoatAffected = TRUE, .powderMove = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, @@ -4389,13 +4392,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts more damage when\n" "the user's HP is down."), .effect = EFFECT_FLAIL, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_COOL, @@ -4410,14 +4413,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Spitefully cuts the PP\n" "of the foe's last move."), .effect = EFFECT_SPITE, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RECOVER_HP }, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, @@ -4433,13 +4436,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Blasts the foe with a snowy\n" "gust. May cause freezing."), .effect = EFFECT_HIT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 40, + .type = TYPE_ICE, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 25, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, .chance = 10, @@ -4457,14 +4460,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades attack, but may fail\n" "if used in succession."), .effect = EFFECT_PROTECT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 4 : 3, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .metronomeBanned = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, @@ -4481,13 +4484,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A punch is thrown at wicked\n" "speed to strike first."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 30, + .target = MOVE_TARGET_SELECTED, .priority = 1, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, @@ -4503,14 +4506,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Frightens with a scary face\n" "to sharply reduce Speed."), .effect = EFFECT_SPEED_DOWN_2, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -4523,13 +4526,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Feint Attack"), .description = sFeintDescription, .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_DARK, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = B_UPDATED_MOVE_DATA >= GEN_4, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_SMART, @@ -4544,14 +4547,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Demands a kiss with a cute\n" "look. May cause confusion."), .effect = EFFECT_CONFUSE, - .type = B_UPDATED_MOVE_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = B_UPDATED_MOVE_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_NORMAL, .accuracy = 75, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -4566,16 +4569,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Maximizes Attack while\n" "sacrificing HP."), .effect = EFFECT_BELLY_DRUM, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RECOVER_HP }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -4590,13 +4593,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sludge is hurled to inflict\n" "damage. May also poison."), .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 90, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, @@ -4615,13 +4618,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurls mud in the foe's face\n" "to reduce its accuracy."), .effect = EFFECT_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 20, + .type = TYPE_GROUND, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, .chance = 100, @@ -4639,13 +4642,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires a lump of ink to\n" "damage and cut accuracy."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 65, + .type = TYPE_WATER, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, @@ -4664,18 +4667,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sets spikes that hurt a \n" "foe switching in."), .effect = EFFECT_SPIKES, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GROUND, .accuracy = 0, - .target = MOVE_TARGET_OPPONENTS_FIELD, .pp = 20, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_OPPONENTS_FIELD, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .forcePressure = TRUE, - .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -4690,13 +4693,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful and sure to cause\n" "paralysis, but inaccurate."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 120 : 100, + .type = TYPE_ELECTRIC, .accuracy = 50, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -4715,14 +4718,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Negates the foe's efforts\n" "to heighten evasiveness."), .effect = EFFECT_FORESIGHT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 0 : 100, - .target = MOVE_TARGET_SELECTED, .pp = 40, - .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, @@ -4738,14 +4741,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "If the user faints, the foe\n" "is also made to faint."), .effect = EFFECT_DESTINY_BOND, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GHOST, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 5, - .zMove = { .effect = Z_EFFECT_FOLLOW_ME }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_FOLLOW_ME }, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -4765,18 +4768,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Any Pokémon hearing this\n" "song faints in 3 turns."), .effect = EFFECT_PERISH_SONG, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 5, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, - .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .mirrorMoveBanned = TRUE, + .soundMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -4790,13 +4793,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A chilling attack that\n" "lowers the foe's Speed."), .effect = EFFECT_HIT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 55, + .type = TYPE_ICE, .accuracy = 95, - .target = MOVE_TARGET_BOTH, .pp = 15, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, @@ -4815,14 +4818,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades attack, but may fail\n" "if used in succession."), .effect = EFFECT_PROTECT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FIGHTING, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 5, - .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, + .target = MOVE_TARGET_USER, .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 4 : 3, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -4841,13 +4844,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes the foe with a bone\n" "in hand 2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 25, + .type = TYPE_GROUND, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 80, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_BONE_RUSH, @@ -4861,14 +4864,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Locks on to the foe to\n" "ensure the next move hits."), .effect = EFFECT_LOCK_ON, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_LOCK_ON, @@ -4882,13 +4885,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A rampage of 2 to 3 turns\n" "that confuses the user."), .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 120 : 90, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_RANDOM, .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 15, + .target = MOVE_TARGET_RANDOM, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .instructBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -4908,17 +4911,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Causes a sandstorm that\n" "rages for several turns."), .effect = EFFECT_SANDSTORM, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ROCK, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .ignoresProtect = TRUE, - .windMove = TRUE, .mirrorMoveBanned = TRUE, + .windMove = TRUE, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_SANDSTORM, @@ -4932,13 +4935,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that steals half\n" "the damage inflicted."), .effect = EFFECT_ABSORB, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 75 : 60, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_4 ? 10 : 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .healingMove = B_HEAL_BLOCKING >= GEN_6, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, @@ -4954,14 +4957,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Endures any attack for\n" "1 turn, leaving at least 1HP."), .effect = EFFECT_ENDURE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 4 : 3, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -4980,14 +4983,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Charms the foe and sharply\n" "reduces its Attack."), .effect = EFFECT_ATTACK_DOWN_2, - .type = B_UPDATED_MOVE_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = B_UPDATED_MOVE_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -5002,13 +5005,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack lasting 5 turns\n" "with rising intensity."), .effect = EFFECT_ROLLOUT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 30, + .type = TYPE_ROCK, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .instructBanned = TRUE, .parentalBondBanned = TRUE, @@ -5023,13 +5026,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("False Swipe"), .description = sFalseSwipeDescription, .effect = EFFECT_FALSE_SWIPE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 40, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -5044,14 +5047,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Confuses the foe, but also\n" "sharply raises Attack."), .effect = EFFECT_SWAGGER, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 85 : 90, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -5066,17 +5069,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Recovers up to half the\n" "user's maximum HP."), .effect = EFFECT_SOFTBOILED, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, - .snatchAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .healingMove = TRUE, + .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -5091,13 +5094,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An electrified tackle that\n" "may paralyze the foe."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 65, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -5115,9 +5118,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "An attack that intensifies\n" "on each successive hit."), - .effect = EFFECT_FURY_CUTTER, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 40, #elif B_UPDATED_MOVE_DATA >= GEN_5 @@ -5125,10 +5125,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .power = 10, #endif + .effect = EFFECT_FURY_CUTTER, + .type = TYPE_BUG, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, @@ -5144,13 +5147,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes the foe with hard\n" "wings spread wide."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_STEEL, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 25, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_PLUS_1, @@ -5170,14 +5173,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fixes the foe with a mean\n" "look that prevents escape."), .effect = EFFECT_MEAN_LOOK, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 5, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .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), .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, @@ -5193,14 +5196,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the opposite gender\n" "less likely to attack."), .effect = EFFECT_ATTRACT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .magicCoatAffected = TRUE, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, @@ -5216,23 +5219,23 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Uses an available move\n" "randomly while asleep."), .effect = EFFECT_SLEEP_TALK, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_DEPENDS, .pp = 10, - .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, + .target = MOVE_TARGET_DEPENDS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, - .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .mimicBanned = TRUE, .encoreBanned = TRUE, + .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -5246,19 +5249,19 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Chimes soothingly to heal\n" "all status abnormalities."), .effect = EFFECT_HEAL_BELL, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .pp = 5, - .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RECOVER_HP }, .snatchAffected = TRUE, - .soundMove = B_UPDATED_MOVE_FLAGS != GEN_5, + .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, + .soundMove = B_UPDATED_MOVE_FLAGS != GEN_5, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_HEAL_BELL, @@ -5272,13 +5275,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that increases\n" "in power with friendship."), .effect = EFFECT_RETURN, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -5293,13 +5296,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A gift in the form of a\n" "bomb. May restore HP."), .effect = EFFECT_PRESENT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_NORMAL, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -5314,13 +5317,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that is stronger\n" "if the Trainer is disliked."), .effect = EFFECT_FRUSTRATION, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -5335,16 +5338,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A mystical force prevents\n" "all status problems."), .effect = EFFECT_SAFEGUARD, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 25, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -5359,14 +5362,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Adds the user and foe's HP,\n" "then shares them equally."), .effect = EFFECT_PAIN_SPLIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -5380,13 +5383,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A mystical fire attack that\n" "may inflict a burn."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_FIRE, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .thawsUser = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -5405,13 +5408,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A ground-shaking attack\n" "of random intensity."), .effect = EFFECT_MAGNITUDE, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_GROUND, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 30, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .damagesUnderground = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, @@ -5427,13 +5430,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful and sure to cause\n" "confusion, but inaccurate."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_FIGHTING, .accuracy = 50, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -5453,13 +5456,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A brutal ramming attack\n" "using out-thrust horns."), .effect = EFFECT_HIT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_BUG, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, @@ -5474,13 +5477,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes the foe with an\n" "incredible blast of breath."), .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 60, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -5499,14 +5502,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Switches out the user while\n" "keeping effects in play."), .effect = EFFECT_BATON_PASS, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 40, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, @@ -5522,17 +5525,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the foe repeat its\n" "last move over 2 to 6 turns."), .effect = EFFECT_ENCORE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, - .ignoresSubstitute = TRUE, .encoreBanned = TRUE, + .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -5546,13 +5549,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts bad damage if used\n" "on a foe switching out."), .effect = EFFECT_PURSUIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, @@ -5568,13 +5571,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Spins the body at high\n" "speed to strike the foe."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 50 : 20, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 40, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RAPIDSPIN, @@ -5601,14 +5604,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Allures the foe to reduce\n" "evasiveness."), .effect = B_UPDATED_MOVE_DATA >= GEN_6 ? EFFECT_EVASION_DOWN_2 : EFFECT_EVASION_DOWN, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 20, - .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -5623,13 +5626,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a rock-hard\n" "tail. May lower Defense."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_STEEL, .accuracy = 75, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, @@ -5648,13 +5651,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A claw attack that may\n" "raise the user's Attack."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 50, + .type = TYPE_STEEL, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 35, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_PLUS_1, @@ -5674,13 +5677,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the user's move last,\n" "but it never misses."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_FIGHTING, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = -1, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -5695,17 +5698,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Restores HP. The amount\n" "varies with the weather."), .effect = EFFECT_MORNING_SUN, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 5, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, - .snatchAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .healingMove = TRUE, + .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -5720,17 +5723,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Restores HP. The amount\n" "varies with the weather."), .effect = EFFECT_SYNTHESIS, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 5, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, - .snatchAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .healingMove = TRUE, + .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_SMART, @@ -5745,17 +5748,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Restores HP. The amount\n" "varies with the weather."), .effect = EFFECT_MOONLIGHT, - .type = B_UPDATED_MOVE_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = B_UPDATED_MOVE_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 5, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, - .snatchAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .healingMove = TRUE, + .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -5769,14 +5772,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "The effectiveness varies\n" "with the user."), + .power = B_HIDDEN_POWER_DMG >= GEN_6 ? 60 : 1, .effect = EFFECT_HIDDEN_POWER, .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, - .power = B_HIDDEN_POWER_DMG >= GEN_6 ? 60 : 1, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -5790,14 +5793,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A double-chopping attack.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_FIGHTING, .accuracy = 80, - .target = MOVE_TARGET_SELECTED, - .pp = 5, - .priority = 0, .criticalHitStage = 1, + .pp = 5, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, @@ -5812,15 +5815,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Whips up a vicious twister\n" "to tear at the foe."), .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 40, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 20, + .target = MOVE_TARGET_BOTH, .priority = 0, - .windMove = TRUE, + .category = DAMAGE_CATEGORY_SPECIAL, .damagesAirborneDoubleDamage = TRUE, + .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 20, @@ -5838,14 +5841,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts the power of Water-\n" "type moves for 5 turns."), .effect = EFFECT_RAIN_DANCE, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_WATER, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 5, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, @@ -5861,14 +5864,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts the power of Fire-\n" "type moves for 5 turns."), .effect = EFFECT_SUNNY_DAY, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FIRE, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 5, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, @@ -5888,16 +5891,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May lower Sp. Def."), #endif .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .bitingMove = TRUE, - .additionalEffects = ADDITIONAL_EFFECTS({ + .additionalEffects = ADDITIONAL_EFFECTS({ #if B_UPDATED_MOVE_DATA >= GEN_4 .moveEffect = MOVE_EFFECT_DEF_MINUS_1, #else @@ -5918,13 +5921,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Counters the foe's special\n" "attack at double the power."), .effect = EFFECT_MIRROR_COAT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 1, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_DEPENDS, .pp = 20, + .target = MOVE_TARGET_DEPENDS, .priority = -5, + .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .meFirstBanned = TRUE, .metronomeBanned = TRUE, @@ -5942,18 +5945,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Copies the foe's effect(s)\n" "and gives to the user."), .effect = EFFECT_PSYCH_UP, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RECOVER_HP }, .ignoresProtect = TRUE, - .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -5967,13 +5970,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An extremely fast and\n" "powerful attack."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 2 : 1, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -5988,13 +5991,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that may raise\n" "all stats."), .effect = EFFECT_HIT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 60, + .type = TYPE_ROCK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .makesContact = B_UPDATED_MOVE_DATA < GEN_4, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ALL_STATS_UP, @@ -6014,13 +6017,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurls a black blob that may\n" "lower the foe's Sp. Def."), .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, @@ -6038,9 +6041,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Heightens inner power to\n" "strike 2 turns later."), - .effect = EFFECT_FUTURE_SIGHT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 120, #elif B_UPDATED_MOVE_DATA >= GEN_5 @@ -6048,10 +6048,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else .power = 80, #endif + .effect = EFFECT_FUTURE_SIGHT, + .type = TYPE_PSYCHIC, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 90, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, @@ -6067,13 +6070,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A rock-crushing attack\n" "that may lower Defense."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 40 : 20, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, @@ -6092,13 +6095,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Traps and hurts the foe in\n" "a whirlpool for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 35 : 15, + .type = TYPE_WATER, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 70, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .damagesUnderwater = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_WRAP, @@ -6116,13 +6119,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Summons party Pokémon to\n" "join in the attack."), .effect = EFFECT_BEAT_UP, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 1 : 10, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -6135,15 +6138,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "A 1st-turn, 1st-strike move\n" "that causes flinching."), - .effect = EFFECT_FIRST_TURN_ONLY, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, - .power = 40, - .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 10, .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 3 : 1, .makesContact = B_UPDATED_MOVE_DATA >= GEN_4, + .effect = EFFECT_FIRST_TURN_ONLY, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .target = MOVE_TARGET_SELECTED, + .category = DAMAGE_CATEGORY_PHYSICAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 100, @@ -6165,15 +6168,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #endif "turns and prevents sleep."), .effect = EFFECT_UPROAR, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 50, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_RANDOM, .pp = 10, + .target = MOVE_TARGET_RANDOM, .priority = 0, - .soundMove = TRUE, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .soundMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -6193,16 +6196,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Charges up power for up to\n" "3 turns."), .effect = EFFECT_STOCKPILE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_4 ? 20 : 10, - .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RECOVER_HP }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -6217,13 +6220,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Releases stockpiled power\n" "(the more the better)."), .effect = EFFECT_SPIT_UP, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 1 : 100, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -6238,17 +6241,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Absorbs stockpiled power\n" "and restores HP."), .effect = EFFECT_SWALLOW, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, - .snatchAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .healingMove = TRUE, + .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -6263,13 +6266,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Exhales a hot breath on the\n" "foe. May inflict a burn."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 95 : 100, + .type = TYPE_FIRE, .accuracy = 90, - .target = MOVE_TARGET_BOTH, .pp = 10, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -6288,14 +6291,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Summons a hailstorm that\n" "strikes every turn."), .effect = EFFECT_HAIL, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ICE, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, @@ -6311,14 +6314,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Torments the foe and stops\n" "successive use of a move."), .effect = EFFECT_TORMENT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -6333,14 +6336,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Confuses the foe, but\n" "raises its Sp. Atk."), .effect = EFFECT_FLATTER, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -6355,14 +6358,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts a burn on the foe\n" "with intense fire."), .effect = EFFECT_WILL_O_WISP, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FIRE, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 85 : 75, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -6377,14 +6380,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user faints and lowers\n" "the foe's abilities."), .effect = EFFECT_MEMENTO, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_RESTORE_REPLACEMENT_HP }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESTORE_REPLACEMENT_HP }, .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -6398,13 +6401,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts Attack when burned,\n" "paralyzed, or poisoned."), .effect = EFFECT_FACADE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -6419,22 +6422,22 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A powerful loyalty attack.\n" "The user flinches if hit."), .effect = EFFECT_FOCUS_PUNCH, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 150, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = -3, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .punchingMove = TRUE, .mirrorMoveBanned = TRUE, + .punchingMove = TRUE, .meFirstBanned = TRUE, + .sleepTalkBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, - .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -6448,15 +6451,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful against paralyzed\n" "foes, but also heals them."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 70 : 60, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .makesContact = TRUE, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = STATUS1_PARALYSIS, + .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_REMOVE_STATUS, }), @@ -6473,14 +6476,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Draws attention to make\n" "foes attack only the user."), .effect = EFFECT_FOLLOW_ME, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = B_UPDATED_MOVE_DATA >= GEN_6 ? 2 : 3, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -6499,20 +6502,20 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The type of attack varies\n" "depending on the location."), .effect = EFFECT_NATURE_POWER, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 1, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_DEPENDS, .pp = 20, + .target = MOVE_TARGET_DEPENDS, .priority = 0, - .mimicBanned = TRUE, + .category = DAMAGE_CATEGORY_STATUS, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -6526,16 +6529,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Charges power to boost the\n" "electric move used next."), .effect = EFFECT_CHARGE, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -6550,16 +6553,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Taunts the foe into only\n" "using attack moves."), .effect = EFFECT_TAUNT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .ignoresSubstitute = TRUE, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_TAUNT, @@ -6573,14 +6576,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts the power of the\n" "recipient's moves."), .effect = EFFECT_HELPING_HAND, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = B_UPDATED_MOVE_DATA >= GEN_4 ? MOVE_TARGET_ALLY : MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = B_UPDATED_MOVE_DATA >= GEN_4 ? MOVE_TARGET_ALLY : MOVE_TARGET_USER, .priority = 5, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -6600,14 +6603,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Tricks the foe into trading\n" "held items."), .effect = EFFECT_TRICK, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, .metronomeBanned = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, @@ -6624,14 +6627,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Mimics the target and\n" "copies its special ability."), .effect = EFFECT_ROLE_PLAY, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -6648,17 +6651,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A wish that restores HP.\n" "It takes time to work."), .effect = EFFECT_WISH, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, - .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .healingMove = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -6673,22 +6676,22 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks randomly with one\n" "of the partner's moves."), .effect = EFFECT_ASSIST, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_DEPENDS, .pp = 20, + .target = MOVE_TARGET_DEPENDS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, - .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -6702,16 +6705,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lays roots that restore HP.\n" "The user can't switch out."), .effect = EFFECT_INGRAIN, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, @@ -6727,13 +6730,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts strength sharply,\n" "but lowers abilities."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_DEF_DOWN, @@ -6752,14 +6755,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Reflects special effects\n" "back to the attacker."), .effect = EFFECT_MAGIC_COAT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_DEPENDS, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, + .target = MOVE_TARGET_DEPENDS, .priority = 4, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, @@ -6775,16 +6778,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Recycles a used item for\n" "one more use."), .effect = EFFECT_RECYCLE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_SMART, @@ -6797,13 +6800,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Revenge"), .description = sRevengeDescription, .effect = EFFECT_REVENGE, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = -4, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -6818,13 +6821,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Destroys barriers such as\n" "REFLECT and causes damage."), .effect = EFFECT_BRICK_BREAK, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 75, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_COOL, @@ -6839,14 +6842,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lulls the foe into yawning,\n" "then sleeping next turn."), .effect = EFFECT_YAWN, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -6861,13 +6864,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Knocks down the foe's held\n" "item to prevent its use."), .effect = EFFECT_KNOCK_OFF, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 65 : 20, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_KNOCK_OFF, @@ -6885,13 +6888,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Gains power if the user's HP\n" "is lower than the foe's HP."), .effect = EFFECT_ENDEAVOR, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .parentalBondBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, @@ -6907,13 +6910,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The higher the user's HP,\n" "the more damage caused."), .effect = EFFECT_ERUPTION, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 150, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 5, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -6927,14 +6930,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user swaps special\n" "abilities with the target."), .effect = EFFECT_SKILL_SWAP, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_SMART, @@ -6949,19 +6952,19 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Prevents foes from using\n" "moves known by the user."), .effect = EFFECT_IMPRISON, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, - .forcePressure = TRUE, .mirrorMoveBanned = TRUE, + .forcePressure = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -6975,16 +6978,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Heals poisoning, paralysis,\n" "or a burn."), .effect = EFFECT_REFRESH, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RECOVER_HP }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -6999,14 +7002,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "If the user faints, deletes\n" "all PP of foe's last move."), .effect = EFFECT_GRUDGE, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_USER, .pp = 5, - .zMove = { .effect = Z_EFFECT_FOLLOW_ME }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_FOLLOW_ME }, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -7023,14 +7026,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Steals the effects of the\n" "move the target uses next."), .effect = EFFECT_SNATCH, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_DEPENDS, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, + .target = MOVE_TARGET_DEPENDS, .priority = 4, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, .ignoresSubstitute = TRUE, .forcePressure = TRUE, .metronomeBanned = TRUE, @@ -7049,13 +7052,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack with effects\n" "that vary by location."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SECRET_POWER, .chance = 30, @@ -7073,17 +7076,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Dives underwater the first\n" "turn and strikes next turn."), .effect = EFFECT_SEMI_INVULNERABLE, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 80 : 60, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, .skyBattleBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_PKMNHIDUNDERWATER, COMPRESS_BITS(STATUS3_UNDERWATER)), .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, @@ -7099,13 +7102,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Straight-arm punches that\n" "strike the foe 2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 15, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -7120,16 +7123,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Alters the Pokémon's type\n" "depending on the location."), .effect = EFFECT_CAMOUFLAGE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, @@ -7144,16 +7147,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Flashes a light that sharply\n" "raises Sp. Atk."), .effect = B_UPDATED_MOVE_DATA >= GEN_5 ? EFFECT_SPECIAL_ATTACK_UP_3 : EFFECT_SPECIAL_ATTACK_UP_2, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_BUG, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -7168,13 +7171,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a burst of\n" "light. May lower Sp. Def."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = (B_UPDATED_MOVE_DATA >= GEN_9) ? 95 : 70, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, .chance = 50, @@ -7192,13 +7195,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a flurry of\n" "down. May lower Sp. Atk."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = (B_UPDATED_MOVE_DATA >= GEN_9) ? 95 : 70, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, @@ -7217,14 +7220,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Envelops the foe with down\n" "to sharply reduce Attack."), .effect = EFFECT_ATTACK_DOWN_2, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FLYING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .magicCoatAffected = TRUE, .danceMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, @@ -7240,14 +7243,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Confuses all Pokémon on\n" "the scene."), .effect = EFFECT_TEETER_DANCE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .danceMove = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_4, .contestEffect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, @@ -7263,14 +7266,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A kick with a high critical-\n" "hit ratio. May cause a burn."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 85, + .type = TYPE_FIRE, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, - .pp = 10, - .priority = 0, .criticalHitStage = 1, + .pp = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -7289,14 +7292,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Covers the user in mud to\n" "raise electrical resistance."), .effect = EFFECT_MUD_SPORT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GROUND, .accuracy = 100, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, @@ -7313,13 +7316,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A 5-turn attack that gains\n" "power on successive hits."), .effect = EFFECT_ROLLOUT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 30, + .type = TYPE_ICE, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ballisticMove = TRUE, .instructBanned = TRUE, @@ -7337,13 +7340,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with thorny arms.\n" "May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_4, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -7363,17 +7366,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slacks off and restores\n" "half the maximum HP."), .effect = EFFECT_RESTORE_HP, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, - .snatchAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .healingMove = TRUE, + .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -7388,13 +7391,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A loud attack that uses\n" "sound waves to injure."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 90, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 10, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, @@ -7410,13 +7413,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A sharp-fanged attack.\n" "May badly poison the foe."), .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 50, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -7436,13 +7439,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Tears at the foe with sharp\n" "claws. May lower Defense."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 75, + .type = TYPE_NORMAL, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, @@ -7461,13 +7464,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful, but leaves the\n" "user immobile the next turn."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 150, + .type = TYPE_FIRE, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, .self = TRUE, @@ -7485,13 +7488,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful, but leaves the\n" "user immobile the next turn."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 150, + .type = TYPE_WATER, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, .self = TRUE, @@ -7509,13 +7512,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires a meteor-like punch.\n" "May raise Attack."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 100, + .type = TYPE_STEEL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 85, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -7536,13 +7539,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that may shock\n" "the foe into flinching."), .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 30, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_4, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -7562,13 +7565,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The move's type and power\n" "change with the weather."), .effect = EFFECT_WEATHER_BALL, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 50, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, @@ -7583,16 +7586,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Heals all status problems\n" "with a soothing scent."), .effect = EFFECT_HEAL_BELL, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = 0, - .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .pp = 5, - .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RECOVER_HP }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_SMART, @@ -7607,14 +7610,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Feigns crying to sharply\n" "lower the foe's Sp. Def."), .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_SMART, @@ -7629,14 +7632,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hacks with razorlike wind.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 55, + .type = TYPE_FLYING, .accuracy = 95, - .target = MOVE_TARGET_BOTH, - .pp = 25, - .priority = 0, .criticalHitStage = 1, + .pp = 25, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .windMove = TRUE, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, @@ -7652,13 +7655,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Allows a full-power attack,\n" "but sharply lowers Sp. Atk."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 140, + .type = TYPE_FIRE, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .makesContact = B_UPDATED_MOVE_DATA < GEN_4, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_TWO_DOWN, @@ -7677,16 +7680,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Negates the foe's efforts\n" "to heighten evasiveness."), .effect = EFFECT_FORESIGHT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_4 ? 0 : 100, - .target = MOVE_TARGET_SELECTED, .pp = 40, - .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .ignoresSubstitute = TRUE, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -7700,13 +7703,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stops the foe from moving\n" "with rocks and cuts Speed."), .effect = EFFECT_HIT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 50, + .type = TYPE_ROCK, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 95 : 80, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 15 : 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 100, @@ -7724,13 +7727,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A powdery attack that may\n" "raise abilities."), .effect = EFFECT_HIT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 60, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .windMove = B_EXTRAPOLATED_MOVE_FLAGS, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ALL_STATS_UP, @@ -7750,17 +7753,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Emits a horrible screech\n" "that sharply lowers Sp. Def."), .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_STEEL, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 40, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_METAL_SOUND, @@ -7774,17 +7777,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lulls the foe into sleep\n" "with a pleasant melody."), .effect = EFFECT_SLEEP, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = 55, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -7798,14 +7801,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the foe laugh to\n" "lower Attack and Defense."), .effect = EFFECT_TICKLE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -7820,16 +7823,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises Defense and Sp. Def\n" "with a mystic power."), .effect = EFFECT_COSMIC_POWER, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -7844,13 +7847,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Inflicts more damage if the\n" "user's HP is high."), .effect = EFFECT_ERUPTION, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 150, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 5, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -7864,13 +7867,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A strange beam attack that\n" "may confuse the foe."), .effect = EFFECT_HIT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 75, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, .chance = 10, @@ -7888,13 +7891,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An unavoidable punch that\n" "is thrown from shadows."), .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_GHOST, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, @@ -7910,13 +7913,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a peculiar\n" "power. May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 30, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_4, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -7935,13 +7938,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An uppercut thrown as if\n" "leaping into the sky."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 85, + .type = TYPE_FIGHTING, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .damagesAirborne = TRUE, @@ -7958,13 +7961,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Traps and hurts the foe in\n" "quicksand for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 35 : 15, + .type = TYPE_GROUND, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 85 : 70, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_WRAP, }), @@ -7981,13 +7984,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A chilling attack that\n" "causes fainting if it hits."), .effect = EFFECT_OHKO, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 1, + .type = TYPE_ICE, .accuracy = 30, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -8001,13 +8004,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with muddy water.\n" "May lower accuracy."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, + .type = TYPE_WATER, .accuracy = 85, - .target = MOVE_TARGET_BOTH, .pp = 10, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, @@ -8026,13 +8029,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Shoots 2 to 5 seeds in a row\n" "to strike the foe."), .effect = EFFECT_MULTI_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 25 : 10, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 30, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -8047,13 +8050,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An extremely speedy and\n" "unavoidable attack."), .effect = EFFECT_HIT, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_FLYING, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, @@ -8069,13 +8072,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks the foe by firing\n" "2 to 5 icicles in a row."), .effect = EFFECT_MULTI_HIT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 25 : 10, + .type = TYPE_ICE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 30, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -8089,16 +8092,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hardens the body's surface\n" "to sharply raise Defense."), .effect = EFFECT_DEFENSE_UP_2, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_STEEL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 15, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -8113,14 +8116,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Blocks the foe's way to\n" "prevent escape."), .effect = EFFECT_MEAN_LOOK, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 5, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .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), .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, @@ -8135,19 +8138,19 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Howls to raise the spirit\n" "and boosts Attack."), + .power = 0, .effect = B_UPDATED_MOVE_DATA >= GEN_8 ? EFFECT_ATTACK_UP_USER_ALLY : EFFECT_ATTACK_UP, .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, - .power = 0, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 40, - .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .snatchAffected = TRUE, - .soundMove = B_UPDATED_MOVE_FLAGS >= GEN_8, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, + .soundMove = B_UPDATED_MOVE_FLAGS >= GEN_8, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -8161,13 +8164,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slashes the foe with sharp\n" "claws."), .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, @@ -8182,13 +8185,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful, but leaves the\n" "user immobile the next turn."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 150, + .type = TYPE_GRASS, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, @@ -8207,16 +8210,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Bulks up the body to boost\n" "both Attack and Defense."), .effect = EFFECT_BULK_UP, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FIGHTING, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -8231,18 +8234,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Bounces up, then down the\n" "next turn. May paralyze."), .effect = EFFECT_SEMI_INVULNERABLE, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 85, + .type = TYPE_FLYING, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .gravityBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_PKMNSPRANGUP, COMPRESS_BITS(STATUS3_ON_AIR)), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -8261,13 +8264,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurls mud at the foe and\n" "reduces Speed."), .effect = EFFECT_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 55, + .type = TYPE_GROUND, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 100, @@ -8285,14 +8288,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Has a high critical-hit\n" "ratio. May also poison."), .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 50, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 25, - .priority = 0, .criticalHitStage = 1, + .pp = 25, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, @@ -8311,13 +8314,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Cutely begs to obtain an\n" "item held by the foe."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 60 : 40, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 25 : 40, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = B_UPDATED_MOVE_DATA >= GEN_4, .meFirstBanned = TRUE, .metronomeBanned = TRUE, @@ -8339,14 +8342,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A life-risking tackle that\n" "slightly hurts the user."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 15, - .priority = 0, .recoil = 33, + .pp = 15, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, #if B_UPDATED_MOVE_DATA >= GEN_4 .additionalEffects = ADDITIONAL_EFFECTS({ @@ -8367,13 +8370,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a strange leaf\n" "that cannot be evaded."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 60, + .type = TYPE_GRASS, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -8387,14 +8390,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user becomes soaked to\n" "raise resistance to fire."), .effect = EFFECT_WATER_SPORT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, @@ -8411,16 +8414,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises Sp. Atk and Sp. Def\n" "by focusing the mind."), .effect = EFFECT_CALM_MIND, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -8435,14 +8438,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slashes with a sharp leaf.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_4 ? 90 : 70, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 15, - .priority = 0, .criticalHitStage = 1, + .pp = 15, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, @@ -8458,17 +8461,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A mystical dance that ups\n" "Attack and Speed."), .effect = EFFECT_DRAGON_DANCE, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DRAGON, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, - .snatchAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .danceMove = TRUE, + .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -8483,13 +8486,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurls boulders at the foe\n" "2 to 5 times in a row."), .effect = EFFECT_MULTI_HIT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 25, + .type = TYPE_ROCK, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 80, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .ballisticMove = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -8504,13 +8507,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A fast and unavoidable\n" "electric attack."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 60, + .type = TYPE_ELECTRIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -8524,13 +8527,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with ultrasonic\n" "waves. May confuse the foe."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 60, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .pulseMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, @@ -8549,13 +8552,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Summons strong sunlight to\n" "attack 2 turns later."), .effect = EFFECT_FUTURE_SIGHT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 140 : 120, + .type = TYPE_STEEL, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 100 : 85, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, @@ -8571,13 +8574,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Allows a full-power attack,\n" "but sharply lowers Sp. Atk."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 140, + .type = TYPE_PSYCHIC, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_TWO_DOWN, .self = TRUE, @@ -8595,17 +8598,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Restores the user's HP by\n" "half of its max HP."), .effect = EFFECT_ROOST, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FLYING, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, - .snatchAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .healingMove = TRUE, + .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, @@ -8620,14 +8623,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Gravity is intensified\n" "negating levitation."), .effect = EFFECT_GRAVITY, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 5, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, @@ -8644,16 +8647,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Negate evasiveness and\n" "Dark-type's immunities."), .effect = EFFECT_MIRACLE_EYE, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 40, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .ignoresSubstitute = TRUE, + .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -8667,15 +8670,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful against sleeping\n" "foes, but also heals them."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 70 : 60, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .makesContact = TRUE, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = STATUS1_SLEEP, + .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_REMOVE_STATUS, }), @@ -8692,13 +8695,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A swinging fist attack\n" "that also lowers Speed."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_FIGHTING, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -8718,13 +8721,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A high-speed spin that does\n" "more damage to faster foes."), .effect = EFFECT_GYRO_BALL, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_STEEL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, @@ -8738,16 +8741,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Healing Wish"), .description = sHealingWishDescription, .effect = EFFECT_HEALING_WISH, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, - .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .category = DAMAGE_CATEGORY_STATUS, .healingMove = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -8762,13 +8765,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Does double damage to foes\n" "with half HP."), .effect = EFFECT_BRINE, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 65, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -8782,13 +8785,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The effectiveness varies\n" "with the held Berry."), .effect = EFFECT_NATURAL_GIFT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -8802,13 +8805,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that hits foes\n" "using moves like Protect."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 30 : 50, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 2, + .category = DAMAGE_CATEGORY_PHYSICAL, .ignoresProtect = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_6, .metronomeBanned = TRUE, @@ -8828,13 +8831,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Pluck"), .description = sPluckDescription, .effect = EFFECT_HIT, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_FLYING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BUG_BITE, @@ -8852,17 +8855,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Whips up a turbulent breeze\n" "that raises Speed."), .effect = EFFECT_TAILWIND, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FLYING, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 15 : 30, - .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, .snatchAffected = TRUE, .windMove = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_SMART, @@ -8877,17 +8880,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user sharply raises\n" "one of its stats."), .effect = EFFECT_ACUPRESSURE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .pp = 30, - .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, + .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, .ignoresProtect = TRUE, - .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, .mirrorMoveBanned = TRUE, + .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -8901,13 +8904,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Retaliates any hit with\n" "greater power."), .effect = EFFECT_METAL_BURST, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_STEEL, .accuracy = 100, - .target = MOVE_TARGET_DEPENDS, .pp = 10, + .target = MOVE_TARGET_DEPENDS, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .meFirstBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -8920,13 +8923,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("U-turn"), .description = sUTurnDescription, .effect = EFFECT_HIT_ESCAPE, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -8939,13 +8942,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Close Combat"), .description = sCloseCombatDescription, .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_SPDEF_DOWN, @@ -8964,13 +8967,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that gains power\n" "if the user moves last."), .effect = EFFECT_PAYBACK, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 50, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -8985,13 +8988,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that gains power\n" "if the foe has been hurt."), .effect = EFFECT_ASSURANCE, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 50, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -9006,14 +9009,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Prevents the foe from\n" "using any items."), .effect = EFFECT_EMBARGO, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -9028,13 +9031,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The effectiveness varies\n" "with the held item."), .effect = EFFECT_FLING, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .parentalBondBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -9049,14 +9052,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Transfers status problems\n" "to the foe."), .effect = EFFECT_PSYCHO_SHIFT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPATK_UP_2 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_2 }, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -9070,13 +9073,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The less PP the move has\n" "the more damage it does."), .effect = EFFECT_TRUMP_CARD, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 1, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -9091,14 +9094,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Prevents the foe from\n" "recovering any HP."), .effect = EFFECT_HEAL_BLOCK, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPATK_UP_2 }, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_2 }, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -9111,13 +9114,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Wring Out"), .description = sWringOutDescription, .effect = EFFECT_WRING_OUT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 1, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_SMART, @@ -9132,16 +9135,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user swaps its Attack\n" "and Defense stats."), .effect = EFFECT_POWER_TRICK, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -9156,14 +9159,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stomach acid suppresses\n" "the foe's ability."), .effect = EFFECT_GASTRO_ACID, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -9178,16 +9181,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Prevents the foe from\n" "landing critical hits."), .effect = EFFECT_LUCKY_CHANT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 30, - .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -9202,24 +9205,24 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Executes the foe's attack\n" "with greater power."), .effect = EFFECT_ME_FIRST, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, .ignoresSubstitute = TRUE, + .metronomeBanned = TRUE, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, - .mimicBanned = TRUE, - .metronomeBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -9233,23 +9236,23 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user mimics the last\n" "move used by a foe."), .effect = EFFECT_COPYCAT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_DEPENDS, .pp = 20, - .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, + .target = MOVE_TARGET_DEPENDS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, - .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -9263,14 +9266,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swaps changes to Attack\n" "and Sp. Atk with the foe."), .effect = EFFECT_POWER_SWAP, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -9285,14 +9288,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swaps changes to Defense\n" "and Sp. Def with the foe."), .effect = EFFECT_GUARD_SWAP, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -9307,13 +9310,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Does more damage if the\n" "foe has powered up."), .effect = EFFECT_PUNISHMENT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_SMART, @@ -9328,13 +9331,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Can only be used if every\n" "other move has been used."), .effect = EFFECT_LAST_RESORT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 140 : 130, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -9349,14 +9352,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Plants a seed on the foe\n" "giving it Insomnia."), .effect = EFFECT_WORRY_SEED, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -9369,13 +9372,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Sucker Punch"), .description = sSuckerPunchDescription, .effect = EFFECT_SUCKER_PUNCH, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 70 : 80, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 1, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_SMART, @@ -9390,18 +9393,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sets spikes that poison a\n" "foe switching in."), .effect = EFFECT_TOXIC_SPIKES, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_POISON, .accuracy = 0, - .target = MOVE_TARGET_OPPONENTS_FIELD, .pp = 20, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_OPPONENTS_FIELD, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .forcePressure = TRUE, - .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -9416,14 +9419,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swaps any stat changes\n" "with the foe."), .effect = EFFECT_HEART_SWAP, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_BOOST_CRITS }, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_COOL, @@ -9438,16 +9441,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Forms a veil of water\n" "that restores HP."), .effect = EFFECT_AQUA_RING, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_WATER, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -9462,18 +9465,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user levitates with\n" "electromagnetism."), .effect = EFFECT_MAGNET_RISE, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ELECTRIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, - .gravityBanned = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, + .gravityBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -9487,14 +9490,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A charge that may burn the\n" "foe. Also hurts the user."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 15, - .priority = 0, .recoil = 33, + .pp = 15, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .thawsUser = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -9514,13 +9517,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A shock wave attack that\n" "may paralyze the foe."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -9539,13 +9542,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with an aura blast\n" "that cannot be evaded."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 90, + .type = TYPE_FIGHTING, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .pulseMove = TRUE, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, @@ -9561,16 +9564,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Polishes the body to\n" "sharply raise Speed."), .effect = EFFECT_SPEED_UP_2, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ROCK, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -9585,13 +9588,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A stabbing attack that\n" "may poison the foe."), .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, @@ -9610,13 +9613,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a horrible\n" "aura. May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .pulseMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -9635,14 +9638,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits as soon as possible.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 15, - .priority = 0, .criticalHitStage = 1, + .pp = 15, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, @@ -9658,13 +9661,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user swings its tail\n" "like a wave to attack."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_WATER, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -9679,13 +9682,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A barrage of hard seeds\n" "is fired at the foe."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, @@ -9700,13 +9703,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a blade of\n" "air. May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 75, + .type = TYPE_FLYING, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 15 : 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .slicingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -9725,13 +9728,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slashes the foe with crossed\n" "scythes, claws, etc."), .effect = EFFECT_HIT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, @@ -9747,13 +9750,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A damaging sound wave that\n" "may lower Sp. Def."), .effect = EFFECT_HIT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 90, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -9773,13 +9776,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Generates a shock wave to\n" "damage the foe."), .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 85 : 90, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .pulseMove = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -9794,13 +9797,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Tackles the foe with menace.\n" "May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_DRAGON, .accuracy = 75, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_6, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -9820,13 +9823,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with rays of light\n" "that sparkle like diamonds."), .effect = EFFECT_HIT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 70, + .type = TYPE_ROCK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -9838,13 +9841,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Drain Punch"), .description = sMegaDrainDescription, .effect = EFFECT_ABSORB, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 75 : 60, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_5 ? 10 : 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .healingMove = B_HEAL_BLOCKING >= GEN_6, @@ -9861,13 +9864,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Whirls its fists to send\n" "a wave that strikes first."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 40, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 30, + .target = MOVE_TARGET_SELECTED, .priority = 1, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -9881,13 +9884,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks at full power.\n" "May lower Sp. Def."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 120, + .type = TYPE_FIGHTING, .accuracy = 70, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, @@ -9906,13 +9909,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Draws power from nature to\n" "attack. May lower Sp. Def."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 80, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, @@ -9931,14 +9934,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A low altitude charge that\n" "also hurts the user."), .effect = EFFECT_HIT, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_FLYING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 15, - .priority = 0, .recoil = 33, + .pp = 15, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -9953,13 +9956,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the ground erupt with\n" "power. May lower Sp. Def."), .effect = EFFECT_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 90, + .type = TYPE_GROUND, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, @@ -9978,14 +9981,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swaps items with the foe\n" "faster than the eye can see."), .effect = EFFECT_TRICK, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, .metronomeBanned = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, @@ -10000,13 +10003,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Giga Impact"), .description = sHyperBeamDescription, .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 150, + .type = TYPE_NORMAL, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, @@ -10025,16 +10028,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Thinks bad thoughts to\n" "sharply boost Sp. Atk."), .effect = EFFECT_SPECIAL_ATTACK_UP_2, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DARK, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -10049,13 +10052,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Punches as fast as a bul-\n" "let. It always hits first."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_STEEL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 30, + .target = MOVE_TARGET_SELECTED, .priority = 1, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, @@ -10069,13 +10072,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Avalanche"), .description = sRevengeDescription, .effect = EFFECT_REVENGE, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_ICE, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 10, + .target = MOVE_TARGET_BOTH, .priority = -4, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -10090,13 +10093,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurls a chunk of ice that\n" "always strike first."), .effect = EFFECT_HIT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_ICE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 30, + .target = MOVE_TARGET_SELECTED, .priority = 1, + .category = DAMAGE_CATEGORY_PHYSICAL, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -10110,14 +10113,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes with a shadow claw.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 15, - .priority = 0, .criticalHitStage = 1, + .pp = 15, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -10132,13 +10135,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May cause flinching or\n" "leave the foe paralyzed."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 65, + .type = TYPE_ELECTRIC, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -10162,13 +10165,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May cause flinching or\n" "leave the foe frozen."), .effect = EFFECT_HIT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 65, + .type = TYPE_ICE, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -10192,13 +10195,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May cause flinching or\n" "leave the foe with a burn."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 65, + .type = TYPE_FIRE, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -10222,13 +10225,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Extends the user's shadow\n" "to strike first."), .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 30, + .target = MOVE_TARGET_SELECTED, .priority = 1, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_SMART, @@ -10243,13 +10246,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Throws a blob of mud to\n" "damage and cut accuracy."), .effect = EFFECT_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 65, + .type = TYPE_GROUND, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, @@ -10268,14 +10271,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Tears with psychic blades.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 20, - .priority = 0, .criticalHitStage = 1, + .pp = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, @@ -10290,13 +10293,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with a strong head-\n" "butt. May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_PSYCHIC, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -10315,13 +10318,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Emits a flash of energy to\n" "damage and cut accuracy."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 65, + .type = TYPE_STEEL, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, .chance = 30, @@ -10339,13 +10342,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Releases a blast of light\n" "that may lower Sp. Def."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_STEEL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, .chance = 10, @@ -10363,13 +10366,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A charging attack that may\n" "confuse the foe."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_NORMAL, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, @@ -10388,14 +10391,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Removes obstacles and\n" "lowers evasion."), .effect = EFFECT_DEFOG, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FLYING, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, //.ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, @@ -10411,14 +10414,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slower Pokémon get to move\n" "first for 5 turns."), .effect = EFFECT_TRICK_ROOM, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 5, - .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = -7, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, .ignoresProtect = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -10433,13 +10436,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Casts comets onto the foe.\n" "Harshly lowers the Sp. Atk."), .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 140, + .type = TYPE_DRAGON, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_TWO_DOWN, .self = TRUE, @@ -10457,13 +10460,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Zaps the foes with electri-\n" "city. May paralyze them."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 15, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 30, @@ -10479,13 +10482,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Lava Plume"), .description = sLavaPlumeDescription, .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 15, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 30, @@ -10503,13 +10506,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Whips up a storm of leaves.\n" "Harshly lowers the Sp. Atk."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 140, + .type = TYPE_GRASS, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_TWO_DOWN, .self = TRUE, @@ -10527,13 +10530,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Violently lashes the foe\n" "with vines or tentacles."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_GRASS, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -10546,13 +10549,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Rock Wrecker"), .description = sHyperBeamDescription, .effect = EFFECT_HIT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 150, + .type = TYPE_ROCK, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, @@ -10571,14 +10574,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A slash that may poison a\n" "foe and do critical damage."), .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 20, - .priority = 0, .criticalHitStage = 1, + .pp = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -10598,13 +10601,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Shoots filthy garbage at\n" "the foe. May also poison."), .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_POISON, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 70, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 30, @@ -10622,13 +10625,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slams the foe with a hard\n" "head. May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_STEEL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -10647,13 +10650,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Launches a magnet that\n" "strikes without fail."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_STEEL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_COOL, @@ -10668,14 +10671,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stabs the foe with stones.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_ROCK, .accuracy = 80, - .target = MOVE_TARGET_SELECTED, - .pp = 5, - .priority = 0, .criticalHitStage = 1, + .pp = 5, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -10689,14 +10692,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the opposite gender\n" "sharply reduce its Sp. Atk."), .effect = EFFECT_CAPTIVATE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -10711,18 +10714,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sets floating stones that\n" "hurt a foe switching in."), .effect = EFFECT_STEALTH_ROCK, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ROCK, .accuracy = 0, - .target = MOVE_TARGET_OPPONENTS_FIELD, .pp = 20, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_OPPONENTS_FIELD, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, - .forcePressure = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, + .forcePressure = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -10736,13 +10739,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A snare attack that does\n" "more damage to heavier foes."), .effect = EFFECT_LOW_KICK, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 1, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .makesContact = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, @@ -10758,22 +10761,22 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a sound wave\n" "that causes confusion."), .effect = EFFECT_HIT, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 65 : 60, + .type = TYPE_FLYING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .soundMove = TRUE, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .soundMove = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_6, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, #if B_UPDATED_MOVE_DATA >= GEN_6 @@ -10797,13 +10800,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The type varies with the\n" "kind of Plate held."), .effect = EFFECT_CHANGE_TYPE_ON_ITEM, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 100, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .argument = HOLD_EFFECT_PLATE, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, @@ -10816,13 +10819,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Bug Bite"), .description = sPluckDescription, .effect = EFFECT_HIT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BUG_BITE, @@ -10840,13 +10843,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires a beam of electricity.\n" "May raise Sp. Atk."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 50, + .type = TYPE_ELECTRIC, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_PLUS_1, .self = TRUE, @@ -10865,14 +10868,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slams the body into a foe.\n" "The user gets hurt too."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 15, - .priority = 0, .recoil = 33, + .pp = 15, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -10887,13 +10890,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes first by dashing\n" "at the foe at a high speed."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 1, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -10908,14 +10911,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Underlings pummel the foe.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 15, - .priority = 0, .criticalHitStage = 1, + .pp = 15, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_ATTACK_ORDER, @@ -10929,16 +10932,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises Defense and Sp. Def\n" "with a living shield."), .effect = EFFECT_COSMIC_POWER, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_BUG, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -10953,17 +10956,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user's underlings show\n" "up to heal half its max HP."), .effect = EFFECT_RESTORE_HP, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_BUG, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, - .snatchAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .healingMove = TRUE, + .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, @@ -10978,14 +10981,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A life-risking headbutt that\n" "seriously hurts the user."), .effect = EFFECT_HIT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 150, + .type = TYPE_ROCK, .accuracy = 80, - .target = MOVE_TARGET_SELECTED, - .pp = 5, - .priority = 0, .recoil = 50, + .pp = 5, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -11000,15 +11003,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slams the foe with a tail\n" "etc. Strikes twice."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 35, + .type = TYPE_NORMAL, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .strikeCount = 2, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .strikeCount = 2, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -11022,13 +11025,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful, but leaves the\n" "user immobile the next turn."), .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 150, + .type = TYPE_DRAGON, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, .self = TRUE, @@ -11046,14 +11049,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Tears the foe, and space.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 100, + .type = TYPE_DRAGON, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, - .pp = 5, - .priority = 0, .criticalHitStage = 1, + .pp = 5, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -11065,18 +11068,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Lunar Dance"), .description = sHealingWishDescription, .effect = EFFECT_HEALING_WISH, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, - .danceMove = TRUE, - .healingMove = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, + .healingMove = TRUE, + .danceMove = TRUE, .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -11088,13 +11091,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Crush Grip"), .description = sWringOutDescription, .effect = EFFECT_WRING_OUT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -11109,13 +11112,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Traps the foe in a vortex\n" "of fire for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 100 : 120, + .type = TYPE_FIRE, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 75 : 70, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_WRAP, }), @@ -11132,14 +11135,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Drags the foe into total\n" "darkness, inducing Sleep."), .effect = EFFECT_DARK_VOID, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DARK, .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 50 : 80, - .target = MOVE_TARGET_BOTH, .pp = 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .magicCoatAffected = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, @@ -11155,13 +11158,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Generates a shock wave that\n" "sharply reduces Sp. Def."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 120, + .type = TYPE_GRASS, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_2, .chance = 40, @@ -11179,13 +11182,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A repulsive attack that may\n" "raise all stats."), .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 60, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .windMove = B_EXTRAPOLATED_MOVE_FLAGS, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ALL_STATS_UP, @@ -11203,19 +11206,19 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Shadow Force"), .description = sShadowForceDescription, .effect = EFFECT_SEMI_INVULNERABLE, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ignoresProtect = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_VANISHEDINSTANTLY, COMPRESS_BITS(STATUS3_PHANTOM_FORCE)), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FEINT, @@ -11233,16 +11236,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sharpens its claws to raise\n" "Attack and Accuracy."), .effect = EFFECT_ATTACK_ACCURACY_UP, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DARK, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 15, - .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -11257,19 +11260,19 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades wide-ranging attacks\n" "for one turn."), .effect = EFFECT_PROTECT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ROCK, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 3, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .argument = TRUE, // Protects the whole side. + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, - .argument = TRUE, // Protects the whole side. .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -11283,14 +11286,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Averages changes to Defense\n" "and Sp. Def with the foe."), .effect = EFFECT_GUARD_SPLIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -11305,14 +11308,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Averages changes to Attack\n" "and Sp. Atk with the foe."), .effect = EFFECT_POWER_SPLIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_SMART, @@ -11327,14 +11330,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Defense and Sp. Def stats\n" "are swapped for 5 turns."), .effect = EFFECT_WONDER_ROOM, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = B_UPDATED_MOVE_DATA >= GEN_6 ? 0 : -7, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .ignoresProtect = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -11347,13 +11350,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Psyshock"), .description = sPsyshockDescription, .effect = EFFECT_PSYSHOCK, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -11367,13 +11370,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Does double damage if the\n" "foe is poisoned."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 65, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .argument = STATUS1_PSN_ANY, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -11388,16 +11391,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sheds additional weight to\n" "sharply boost Speed."), .effect = EFFECT_AUTOTOMIZE, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_STEEL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 15, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_SMART, @@ -11412,16 +11415,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Scatters powder to make\n" "foes attack only the user."), .effect = EFFECT_FOLLOW_ME, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_BUG, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = B_UPDATED_MOVE_DATA >= GEN_6 ? 2 : 3, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .powderMove = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, @@ -11439,14 +11442,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the foe float. It is\n" "easier to hit for 3 turns."), .effect = EFFECT_TELEKINESIS, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .magicCoatAffected = TRUE, .gravityBanned = TRUE, .contestEffect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, @@ -11462,14 +11465,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hold items lose their\n" "effects for 5 turns."), .effect = EFFECT_MAGIC_ROOM, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = B_UPDATED_MOVE_DATA >= GEN_6 ? 0 : -7, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .ignoresProtect = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -11484,13 +11487,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Throws a rock to knock the\n" "foe down to the ground."), .effect = EFFECT_HIT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 50, + .type = TYPE_ROCK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .damagesAirborne = TRUE, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -11507,15 +11510,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Storm Throw"), .description = sStormThrowDescription, .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 40, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .alwaysCriticalHit = TRUE, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .alwaysCriticalHit = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -11529,13 +11532,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A bursting flame that does\n" "damage to all foes."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 70, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLAME_BURST, .self = TRUE, @@ -11553,13 +11556,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swamps the foe with a wave\n" "of sludge. May also poison."), .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 95, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 10, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 10, @@ -11577,17 +11580,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Dances to raise Sp. Atk\n" "Sp. Def and Speed."), .effect = EFFECT_QUIVER_DANCE, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_BUG, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, - .snatchAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .danceMove = TRUE, + .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -11600,13 +11603,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Heavy Slam"), .description = sHeavySlamDescription, .effect = EFFECT_HEAT_CRASH, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_STEEL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_7, .skyBattleBanned = TRUE, @@ -11623,13 +11626,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An odd shock wave that only\n" "damages same-type foes."), .effect = EFFECT_SYNCHRONOISE, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 120 : 70, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 10 : 15, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -11643,13 +11646,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurls an orb that does more\n" "damage to slower foes."), .effect = EFFECT_ELECTRO_BALL, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 1, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_COOL, @@ -11664,14 +11667,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sprays water at the foe\n" "making it Water-type."), .effect = EFFECT_SOAK, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -11686,13 +11689,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks in a cloak of\n" "flames. Raises Speed."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 50, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_PLUS_1, @@ -11712,16 +11715,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Coils up to raise Attack\n" "Defense and Accuracy."), .effect = EFFECT_COIL, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_POISON, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -11736,13 +11739,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks the foe's legs\n" "lowering its Speed."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 65 : 60, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, @@ -11761,13 +11764,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sprays a hide-melting acid.\n" "Sharply reduces Sp. Def."), .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 40, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_2, @@ -11786,13 +11789,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The higher the foe's Attack\n" "the more damage caused."), .effect = EFFECT_FOUL_PLAY, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 95, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_COOL, @@ -11807,14 +11810,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A beam that changes the\n" "foe's ability to Simple."), .effect = EFFECT_SIMPLE_BEAM, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -11829,14 +11832,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the foe mimic the\n" "user, gaining its ability."), .effect = EFFECT_ENTRAINMENT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -11851,14 +11854,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Helps out the foe, letting\n" "it move next."), .effect = EFFECT_AFTER_YOU, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -11876,15 +11879,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A song that inflicts damage.\n" "Others can join in too."), .effect = EFFECT_ROUND, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 60, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .soundMove = TRUE, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .soundMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ROUND, }), @@ -11901,15 +11904,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Does more damage every turn\n" "it is used."), .effect = EFFECT_ECHOED_VOICE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 40, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .soundMove = TRUE, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .soundMove = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -11921,13 +11924,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Chip Away"), .description = sChipAwayDescription, .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ignoresTargetDefenseEvasionStages = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, @@ -11943,13 +11946,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with white haze that\n" "eliminates all stat changes."), .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 50, + .type = TYPE_POISON, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CLEAR_SMOG, }), @@ -11966,13 +11969,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The higher the user's stats\n" "the more damage caused."), .effect = EFFECT_STORED_POWER, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 20, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -11986,19 +11989,19 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades priority attacks\n" "for one turn."), .effect = EFFECT_PROTECT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FIGHTING, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 15, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 3, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .argument = TRUE, // Protects the whole side. + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, - .argument = TRUE, // Protects the whole side. .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -12012,14 +12015,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user switches places\n" "with its partner."), .effect = EFFECT_ALLY_SWITCH, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, + .target = MOVE_TARGET_USER, .priority = B_UPDATED_MOVE_DATA >= GEN_7 ? 2 : 1, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, @@ -12035,13 +12038,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Shoots boiling water at the\n" "foe. May inflict a burn."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .thawsUser = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -12060,16 +12063,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises offensive stats, but\n" "lowers defensive stats."), .effect = EFFECT_SHELL_SMASH, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 15, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -12084,18 +12087,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Recovers up to half the\n" "target's maximum HP."), .effect = EFFECT_HEAL_PULSE, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .magicCoatAffected = TRUE, - .pulseMove = TRUE, - .healingMove = TRUE, .mirrorMoveBanned = TRUE, + .healingMove = TRUE, + .pulseMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -12109,13 +12112,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Does double damage if the\n" "foe has a status problem."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 65 : 50, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .argument = STATUS1_ANY, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -12130,18 +12133,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Takes the foe into the sky\n" "then drops it the next turn."), .effect = EFFECT_SKY_DROP, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_FLYING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .gravityBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_PKMNTOOKTARGETHIGH, COMPRESS_BITS(STATUS3_ON_AIR)), .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -12156,16 +12159,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Rotates its gears to raise\n" "Attack and Speed."), .effect = EFFECT_SHIFT_GEAR, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_STEEL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -12178,13 +12181,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Circle Throw"), .description = sCircleThrowDescription, .effect = EFFECT_HIT_SWITCH_TARGET, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_FIGHTING, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = -6, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, @@ -12201,13 +12204,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Burns up Berries and Gems\n" "preventing their use."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 30, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 15, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_INCINERATE, }), @@ -12224,14 +12227,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Suppresses the foe, making\n" "it move last."), .effect = EFFECT_QUASH, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -12246,13 +12249,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Does double damage if the\n" "user has no item."), .effect = EFFECT_ACROBATICS, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 55, + .type = TYPE_FLYING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, @@ -12267,14 +12270,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user reflects the foe's\n" "type, copying it."), .effect = EFFECT_REFLECT_TYPE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, @@ -12290,13 +12293,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that does more\n" "damage if an ally fainted."), .effect = EFFECT_RETALIATE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -12311,13 +12314,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user faints to damage\n" "the foe equal to its HP."), .effect = EFFECT_FINAL_GAMBIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 1, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = TRUE, .parentalBondBanned = TRUE, .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, @@ -12333,14 +12336,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user gives its held\n" "item to the foe."), .effect = EFFECT_BESTOW, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, @@ -12359,13 +12362,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Powerful and sure to inflict\n" "a burn, but inaccurate."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 100, + .type = TYPE_FIRE, .accuracy = 50, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 100, @@ -12383,13 +12386,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a column of\n" "water. May make a rainbow."), .effect = EFFECT_PLEDGE, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 50, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -12404,13 +12407,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a column of\n" "fire. May burn the grass."), .effect = EFFECT_PLEDGE, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 50, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -12425,13 +12428,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a column of\n" "grass. May create a swamp."), .effect = EFFECT_PLEDGE, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 80 : 50, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, @@ -12444,13 +12447,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Volt Switch"), .description = sUTurnDescription, .effect = EFFECT_HIT_ESCAPE, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 70, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -12464,13 +12467,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Resisting, the user attacks\n" "the foe. Lowers Sp. Atk."), .effect = EFFECT_HIT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 50 : 30, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 20, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, .chance = 100, @@ -12488,13 +12491,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stomps down on the ground.\n" "Lowers Speed."), .effect = EFFECT_BULLDOZE, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_GROUND, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 20, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, @@ -12511,13 +12514,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Frost Breath"), .description = sStormThrowDescription, .effect = EFFECT_HIT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 60 : 40, + .type = TYPE_ICE, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .alwaysCriticalHit = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -12530,13 +12533,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Dragon Tail"), .description = sCircleThrowDescription, .effect = EFFECT_HIT_SWITCH_TARGET, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_DRAGON, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = -6, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, @@ -12553,16 +12556,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user is roused.\n" "Ups Attack and Sp. Atk."), .effect = EFFECT_ATTACK_SPATK_UP, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 30, - .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -12577,13 +12580,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Snares the foe with an\n" "electric net. Lowers Speed."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 55, + .type = TYPE_ELECTRIC, .accuracy = 95, - .target = MOVE_TARGET_BOTH, .pp = 15, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 100, @@ -12601,14 +12604,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An electrical tackle that\n" "also hurts the user."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 15, - .priority = 0, .recoil = 25, + .pp = 15, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_COOL, @@ -12623,14 +12626,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Spins its body like a drill.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_GROUND, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, - .pp = 10, - .priority = 0, .criticalHitStage = 1, + .pp = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -12645,15 +12648,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with brutal hits\n" "that strike twice."), .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_DRAGON, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .strikeCount = 2, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .strikeCount = 2, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -12667,13 +12670,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A sudden blow after a cute\n" "act. May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 25, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -12690,13 +12693,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Horn Leech"), .description = sMegaDrainDescription, .effect = EFFECT_ABSORB, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 75, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .healingMove = B_HEAL_BLOCKING >= GEN_6, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, @@ -12710,16 +12713,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Sacred Sword"), .description = sChipAwayDescription, .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 15 : 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .slicingMove = TRUE, .ignoresTargetDefenseEvasionStages = TRUE, + .slicingMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -12733,13 +12736,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Tears at the foe with sharp\n" "shells. May lower Defense."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 75, + .type = TYPE_WATER, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -12757,13 +12760,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Heat Crash"), .description = sHeavySlamDescription, .effect = EFFECT_HEAT_CRASH, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, @@ -12779,13 +12782,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Circles the foe with leaves\n" "to damage and cut accuracy."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 65, + .type = TYPE_GRASS, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, //.windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, @@ -12804,13 +12807,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Crushes the foe with its\n" "body. May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 65, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .minimizeDoubleDamage = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -12830,16 +12833,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Wraps its body in cotton.\n" "Drastically raises Defense."), .effect = EFFECT_DEFENSE_UP_3, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, @@ -12854,13 +12857,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Looses a pitch-black shock\n" "wave. May lower accuracy."), .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 85, + .type = TYPE_DARK, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, .chance = 40, @@ -12876,13 +12879,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Psystrike"), .description = sPsyshockDescription, .effect = EFFECT_PSYSHOCK, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 100, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -12896,13 +12899,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes the foe with its\n" "tail 2 to 5 times."), .effect = EFFECT_MULTI_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 25, + .type = TYPE_NORMAL, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -12917,13 +12920,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Traps the foe in a fierce\n" "wind. May cause confusion."), .effect = EFFECT_THUNDER, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, + .type = TYPE_FLYING, .accuracy = 70, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .windMove = TRUE, .damagesAirborne = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -12943,14 +12946,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A charge using guard hair.\n" "It hurts the user a little."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 15, - .priority = 0, .recoil = 25, + .pp = 15, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -12965,15 +12968,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Throws two steel gears\n" "that strike twice."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 50, + .type = TYPE_STEEL, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .strikeCount = 2, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .strikeCount = 2, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -12985,13 +12988,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Searing Shot"), .description = sLavaPlumeDescription, .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 100, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 5, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ballisticMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -13010,15 +13013,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The type varies with the\n" "kind of Drive held."), .effect = EFFECT_CHANGE_TYPE_ON_ITEM, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 120 : 85, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .metronomeBanned = TRUE, + .category = DAMAGE_CATEGORY_SPECIAL, .argument = HOLD_EFFECT_DRIVE, + .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -13032,17 +13035,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with an ancient\n" "song. May induce sleep."), .effect = EFFECT_RELIC_SONG, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 75, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 10, + .target = MOVE_TARGET_BOTH, .priority = 0, - .soundMove = TRUE, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, - .metronomeBanned = TRUE, + .category = DAMAGE_CATEGORY_SPECIAL, .argument = STATUS1_SLEEP, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .soundMove = TRUE, + .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SLEEP, .chance = 10, @@ -13060,13 +13063,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Cuts with a long horn that\n" "does physical damage."), .effect = EFFECT_PSYSHOCK, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 85, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .slicingMove = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, @@ -13082,13 +13085,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Blows very cold air at the\n" "foe. It lowers their Speed."), .effect = EFFECT_HIT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 65, + .type = TYPE_ICE, .accuracy = 95, - .target = MOVE_TARGET_BOTH, .pp = 10, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 100, @@ -13106,13 +13109,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes with a great amount\n" "of lightning. May paralyze."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 130, + .type = TYPE_ELECTRIC, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -13131,13 +13134,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Engulfs the foe in a blue\n" "flame. May inflict a burn."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 130, + .type = TYPE_FIRE, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 20, @@ -13155,13 +13158,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Dances cloaked in flames.\n" "May raise Sp. Atk."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .danceMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_PLUS_1, @@ -13181,13 +13184,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A powerful 2-turn move that\n" "may paralyze the foe."), .effect = EFFECT_TWO_TURNS_ATTACK, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 140, + .type = TYPE_ICE, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -13209,13 +13212,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A powerful 2-turn move that\n" "may inflict a burn."), .effect = EFFECT_TWO_TURNS_ATTACK, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 140, + .type = TYPE_ICE, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -13237,15 +13240,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Yells and rants at the foe\n" "lowering its Sp. Atk."), .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 55, + .type = TYPE_DARK, .accuracy = 95, - .target = MOVE_TARGET_BOTH, .pp = 15, + .target = MOVE_TARGET_BOTH, .priority = 0, - .soundMove = TRUE, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .soundMove = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, @@ -13264,13 +13267,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Drops large icicles on the\n" "foe. May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 85, + .type = TYPE_ICE, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 30, @@ -13288,13 +13291,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Very powerful, but lowers\n" "Defense, Sp. Def and Speed."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 180, + .type = TYPE_FIRE, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -13314,13 +13317,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Summons a fireball. Works\n" "well with a thunderbolt."), .effect = EFFECT_FUSION_COMBO, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 100, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .thawsUser = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -13335,13 +13338,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Summons a thunderbolt.\n" "Works well with a fireball."), .effect = EFFECT_FUSION_COMBO, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -13355,18 +13358,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "This attack does Fighting\n" "and Flying-type damage."), .effect = EFFECT_TWO_TYPED_MOVE, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 100 : 80, + .type = TYPE_FIGHTING, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, + .argument = TYPE_FLYING, .makesContact = TRUE, .minimizeDoubleDamage = TRUE, .gravityBanned = TRUE, .skyBattleBanned = TRUE, - .argument = TYPE_FLYING, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -13380,22 +13383,22 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades damaging moves\n" "for one turn."), .effect = EFFECT_MAT_BLOCK, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FIGHTING, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 15, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .argument = TRUE, // Protects the whole side. + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, .skyBattleBanned = TRUE, - .argument = TRUE, // Protects the whole side. .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -13409,21 +13412,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lets out a loud belch.\n" "Must eat a Berry to use it."), .effect = EFFECT_BELCH, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 120, + .type = TYPE_POISON, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, - .mimicBanned = TRUE, .metronomeBanned = TRUE, + .mimicBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -13437,14 +13440,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Ups the Attack and Sp. Atk\n" "of Grass-type Pokémon."), .effect = EFFECT_ROTOTILLER, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GROUND, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, - .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, @@ -13461,17 +13464,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Weaves a sticky net that\n" "slows foes switching in."), .effect = EFFECT_STICKY_WEB, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_BUG, .accuracy = 0, - .target = MOVE_TARGET_OPPONENTS_FIELD, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_OPPONENTS_FIELD, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .ignoresProtect = TRUE, - .magicCoatAffected = TRUE, .mirrorMoveBanned = TRUE, + .magicCoatAffected = TRUE, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -13486,13 +13489,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "If it knocks out a foe\n" "the Attack stat is raised."), .effect = EFFECT_FELL_STINGER, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 50 : 30, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 25, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -13505,19 +13508,19 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("PhantomForce", "Phantom Force"), .description = sShadowForceDescription, .effect = EFFECT_SEMI_INVULNERABLE, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .makesContact = TRUE, + .category = DAMAGE_CATEGORY_PHYSICAL, .ignoresProtect = TRUE, + .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_VANISHEDINSTANTLY, COMPRESS_BITS(STATUS3_PHANTOM_FORCE)), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FEINT, @@ -13535,16 +13538,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Goes trick-or-treating\n" "making the foe Ghost-type."), .effect = EFFECT_THIRD_TYPE, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .magicCoatAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, .argument = TYPE_GHOST, + .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -13558,17 +13561,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Intimidates the foe, to cut\n" "Attack and Sp. Atk."), .effect = EFFECT_NOBLE_ROAR, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 30, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -13582,14 +13585,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Electrifies Normal-type\n" "moves with charged atoms."), .effect = EFFECT_ION_DELUGE, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ELECTRIC, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 25, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 1, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, @@ -13605,13 +13608,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Damages adjacent Pokémon and\n" "heals up by half of it."), .effect = EFFECT_ABSORB, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 65 : 50, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 20, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .healingMove = B_HEAL_BLOCKING >= GEN_6, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -13626,16 +13629,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Puts a curse on the foe\n" "making the foe Grass-type."), .effect = EFFECT_THIRD_TYPE, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .magicCoatAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, .argument = TYPE_GRASS, + .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -13649,13 +13652,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stirs up a violent storm\n" "of petals to attack."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 15, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .windMove = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -13670,13 +13673,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Super effective on Water-\n" "types. May cause freezing."), .effect = EFFECT_FREEZE_DRY, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 70, + .type = TYPE_ICE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, .chance = 10, @@ -13694,15 +13697,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lets out a charming cry\n" "that cannot be evaded."), .effect = EFFECT_HIT, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 40, + .type = TYPE_FAIRY, .accuracy = 0, - .target = MOVE_TARGET_BOTH, .pp = 15, + .target = MOVE_TARGET_BOTH, .priority = 0, - .soundMove = TRUE, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .soundMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -13716,17 +13719,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the foe's Attack and\n" "Sp. Atk, then switches out."), .effect = EFFECT_PARTING_SHOT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_RESTORE_REPLACEMENT_HP }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESTORE_REPLACEMENT_HP }, .magicCoatAffected = TRUE, - .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .soundMove = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -13740,14 +13743,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swaps all stat changes that\n" "affect the target."), .effect = EFFECT_TOPSY_TURVY, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DARK, .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 0 : 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -13760,16 +13763,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("DrainingKiss", "Draining Kiss"), .description = sDrainingKissDescription, .effect = EFFECT_ABSORB, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 50, + .type = TYPE_FAIRY, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, + .argument = 75, // restores 75% HP instead of 50% HP .makesContact = TRUE, .healingMove = B_HEAL_BLOCKING >= GEN_6, - .argument = 75, // restores 75% HP instead of 50% HP .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -13783,18 +13786,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades status moves for\n" "one turn."), .effect = EFFECT_PROTECT, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FAIRY, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 3, + .category = DAMAGE_CATEGORY_STATUS, + .argument = TRUE, // Protects the whole side. + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, - .argument = TRUE, // Protects the whole side. .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -13808,14 +13811,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises the Defense of\n" "Grass-type Pokémon."), .effect = EFFECT_FLOWER_SHIELD, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FAIRY, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, @@ -13831,14 +13834,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The ground turns to grass\n" "for 5 turns. Restores HP."), .effect = EFFECT_GRASSY_TERRAIN, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, @@ -13855,14 +13858,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Covers the ground with mist\n" "for 5 turns. Blocks status."), .effect = EFFECT_MISTY_TERRAIN, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FAIRY, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, @@ -13879,14 +13882,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Electrifies the foe, making\n" "its next move Electric-type."), .effect = EFFECT_ELECTRIFY, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ELECTRIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -13900,13 +13903,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Plays rough with the foe.\n" "May lower Attack."), .effect = EFFECT_HIT, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_FAIRY, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, @@ -13925,13 +13928,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stirs up a fairy wind to\n" "strike the foe."), .effect = EFFECT_HIT, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 40, + .type = TYPE_FAIRY, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 30, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .windMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -13946,13 +13949,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with the power of\n" "the moon. May lower Sp. Atk."), .effect = EFFECT_HIT, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 95, + .type = TYPE_FAIRY, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, .chance = 30, @@ -13970,15 +13973,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks everything with a\n" "destructive sound wave."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 140, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 10, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .soundMove = TRUE, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .soundMove = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -13992,14 +13995,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Locks down the battlefield\n" "preventing escape next turn."), .effect = EFFECT_FAIRY_LOCK, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FAIRY, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, @@ -14015,20 +14018,20 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades damage, and sharply\n" "reduces Attack if struck."), .effect = EFFECT_PROTECT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_STEEL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 4, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -14042,17 +14045,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Befriend the foe, lowering\n" "its Attack without fail."), .effect = EFFECT_ATTACK_DOWN, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .ignoresProtect = TRUE, - .magicCoatAffected = TRUE, .ignoresSubstitute = TRUE, + .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -14066,18 +14069,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Shares a secret with the\n" "foe, lowering Sp. Atk."), .effect = EFFECT_SPECIAL_ATTACK_DOWN, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .ignoresProtect = TRUE, .magicCoatAffected = TRUE, - .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .soundMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -14090,13 +14093,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Whips up a storm of\n" "diamonds. May up Defense."), - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_ROCK, .accuracy = 95, - .target = MOVE_TARGET_BOTH, .pp = 5, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = B_UPDATED_MOVE_DATA >= GEN_7 ? MOVE_EFFECT_DEF_PLUS_2: MOVE_EFFECT_DEF_PLUS_1, @@ -14115,13 +14118,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Immerses the foe in heated\n" "steam. May inflict a burn."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 110, + .type = TYPE_WATER, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .thawsUser = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -14139,13 +14142,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("HyprspceHole", "Hyprspace Hole"), .description = sHyperspaceHoleDescription, .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, @@ -14165,13 +14168,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Throws 2 to 5 stars that\n" "are sure to strike first."), .effect = EFFECT_MULTI_HIT, - .type = TYPE_WATER, - .category = B_UPDATED_MOVE_DATA >= GEN_7 ? DAMAGE_CATEGORY_SPECIAL : DAMAGE_CATEGORY_PHYSICAL, .power = 15, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 1, + .category = B_UPDATED_MOVE_DATA >= GEN_7 ? DAMAGE_CATEGORY_SPECIAL : DAMAGE_CATEGORY_PHYSICAL, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -14185,13 +14188,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Breathes a special, hot\n" "fire. Lowers Sp. Atk."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_7 ? 75 : 65, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, .chance = 100, @@ -14209,14 +14212,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades attack, and damages\n" "the foe if struck."), .effect = EFFECT_PROTECT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 4, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -14235,14 +14238,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises the Sp. Def of a\n" "partner Pokémon."), .effect = EFFECT_AROMATIC_MIST, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FAIRY, .accuracy = 0, - .target = MOVE_TARGET_ALLY, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, + .target = MOVE_TARGET_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -14259,14 +14262,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Exposes the foe to a pulse\n" "that sharply cuts Sp. Atk."), .effect = EFFECT_SPECIAL_ATTACK_DOWN_2, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, @@ -14281,14 +14284,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the Attack, Sp. Atk\n" "and Speed of a poisoned foe."), .effect = EFFECT_VENOM_DRENCH, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 20, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -14303,16 +14306,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Damages the foe if it uses\n" "a Fire-type move."), .effect = EFFECT_POWDER, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, + .target = MOVE_TARGET_SELECTED, .priority = 1, - .magicCoatAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, .powderMove = TRUE, + .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -14326,14 +14329,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises Sp. Atk, Sp. Def and\n" "Speed on the 2nd turn."), .effect = EFFECT_GEOMANCY, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FAIRY, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .skyBattleBanned = TRUE, @@ -14351,16 +14354,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts the defenses of\n" "those with Plus or Minus."), .effect = EFFECT_MAGNETIC_FLUX, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ELECTRIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, @@ -14376,14 +14379,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Doubles the amount of\n" "Prize Money received."), .effect = EFFECT_DO_NOTHING, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 30, - .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, @@ -14399,14 +14402,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Electrifies the ground for\n" "5 turns. Prevents sleep."), .effect = EFFECT_ELECTRIC_TERRAIN, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ELECTRIC, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .skyBattleBanned = TRUE, @@ -14423,13 +14426,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Damages foes by emitting\n" "a bright flash."), .effect = EFFECT_HIT, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_FAIRY, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 10, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -14443,22 +14446,22 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Congratulates you on your\n" "special day."), .effect = EFFECT_DO_NOTHING, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 40, - .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, - .mimicBanned = TRUE, .metronomeBanned = TRUE, + .mimicBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -14472,22 +14475,22 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user and ally hold hands\n" "making them happy."), .effect = EFFECT_DO_NOTHING, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_ALLY, .pp = 40, - .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .target = MOVE_TARGET_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, - .mimicBanned = TRUE, .metronomeBanned = TRUE, + .mimicBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -14501,14 +14504,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the foe's Attack\n" "before it can move."), .effect = EFFECT_ATTACK_DOWN, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FAIRY, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 30, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 1, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -14523,13 +14526,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Rubs its cheecks against\n" "the foe, paralyzing it."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 20, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -14546,13 +14549,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Hold Back"), .description = sFalseSwipeDescription, .effect = EFFECT_FALSE_SWIPE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 40, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -14567,13 +14570,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The foe is infested and\n" "attacked for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 20, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_WRAP, @@ -14591,13 +14594,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A hard punch that raises\n" "the user's Attack."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -14616,15 +14619,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("OblivionWing", "Oblivion Wing"), .description = sDrainingKissDescription, .effect = EFFECT_ABSORB, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_FLYING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .healingMove = B_HEAL_BLOCKING >= GEN_6, + .category = DAMAGE_CATEGORY_SPECIAL, .argument = 75, // restores 75% HP instead of 50% HP + .healingMove = B_HEAL_BLOCKING >= GEN_6, .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -14638,13 +14641,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Can hit Flying foes, then\n" "knocks them to the ground."), .effect = EFFECT_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_GROUND, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 10, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .damagesAirborne = TRUE, .ignoreTypeIfFlyingAndUngrounded = TRUE, .metronomeBanned = TRUE, @@ -14665,13 +14668,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Those hit by the wave can\n" "no longer escape."), .effect = EFFECT_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_GROUND, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 10, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, .skyBattleBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -14690,13 +14693,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Gathers the energy of the\n" "land to attack every foe."), .effect = EFFECT_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_GROUND, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 10, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -14711,14 +14714,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires a great beam of light\n" "that also hurts the user."), .effect = EFFECT_HIT, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 140, + .type = TYPE_FAIRY, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, - .pp = 5, - .priority = 0, .recoil = 50, + .pp = 5, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, }, @@ -14729,13 +14732,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Beams of glowing blue light\n" "blast both foes."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 110, + .type = TYPE_WATER, .accuracy = 85, - .target = MOVE_TARGET_BOTH, .pp = 10, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .pulseMove = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, @@ -14751,13 +14754,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fearsome blades of stone\n" "attack both foes."), .effect = EFFECT_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_GROUND, .accuracy = 85, - .target = MOVE_TARGET_BOTH, .pp = 10, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -14770,13 +14773,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("DragonAscent", "Dragon Ascent"), .description = sCloseCombatDescription, .effect = EFFECT_HIT, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_FLYING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -14794,13 +14797,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("HyprspceFury", "Hyperspace Fury"), .description = sHyperspaceHoleDescription, .effect = EFFECT_HYPERSPACE_FURY, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_DARK, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, @@ -14823,17 +14826,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Restores the user's HP.\n" "More HP in a sandstorm."), .effect = EFFECT_SHORE_UP, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GROUND, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 5 : 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, - .snatchAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .healingMove = TRUE, + .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -14848,13 +14851,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits hard and first.\n" "Only works first turn."), .effect = EFFECT_FIRST_TURN_ONLY, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 2, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_COOL, @@ -14869,14 +14872,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Protects user and poisons\n" "foes on contact."), .effect = EFFECT_PROTECT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_POISON, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 4, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -14895,13 +14898,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "After being hit, foes can\n" "no longer escape."), .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PREVENT_ESCAPE, .chance = 100, @@ -14919,13 +14922,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swings the arms to strike\n" "It ignores stat changes."), .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 85, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ignoresTargetDefenseEvasionStages = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, @@ -14941,16 +14944,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sings with bubbles. Cures\n" "burns on contact."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 90, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 10, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .soundMove = TRUE, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .category = DAMAGE_CATEGORY_SPECIAL, .argument = STATUS1_BURN, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .soundMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_REMOVE_STATUS, .chance = 100, @@ -14968,13 +14971,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swings the fist to strike.\n" "Lowers the user's Speed."), .effect = EFFECT_HIT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_ICE, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -14994,18 +14997,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Restores an ally's HP.\n" "Heals more on grass."), .effect = EFFECT_HEAL_PULSE, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FAIRY, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .magicCoatAffected = TRUE, - .healingMove = TRUE, - .mirrorMoveBanned = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .argument = MOVE_EFFECT_FLORAL_HEALING, + .mirrorMoveBanned = TRUE, + .healingMove = TRUE, + .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -15019,13 +15022,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slams hard into the foe with\n" "its entire body."), .effect = EFFECT_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 95, + .type = TYPE_GROUND, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -15040,14 +15043,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Saps the foe's Attack to\n" "heal HP, then drops Attack."), .effect = EFFECT_STRENGTH_SAP, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .magicCoatAffected = TRUE, .healingMove = B_HEAL_BLOCKING >= GEN_6, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, @@ -15063,13 +15066,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Charges first turn, then\n" "chops with a blade of light."), .effect = EFFECT_SOLAR_BEAM, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 125, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, .sleepTalkBanned = TRUE, @@ -15088,13 +15091,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a flurry of\n" "small leaves."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 40, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -15108,14 +15111,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes the foe attack the\n" "spotlighted Pokémon."), .effect = EFFECT_FOLLOW_ME, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 3, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .magicCoatAffected = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -15134,14 +15137,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a thread that\n" "poisons and drops Speed."), .effect = EFFECT_TOXIC_THREAD, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -15156,16 +15159,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Guarantees the next move\n" "will be a critical hit."), .effect = EFFECT_LASER_FOCUS, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 30, - .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -15180,16 +15183,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts the attacks of\n" "those with Plus or Minus."), .effect = EFFECT_GEAR_UP, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_STEEL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, @@ -15205,13 +15208,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Chops the throat to disable\n" "sound moves for a while."), .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_THROAT_CHOP, @@ -15230,13 +15233,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Explodes on foes, but\n" "restores ally's HP."), .effect = EFFECT_HIT_ENEMY_HEAL_ALLY, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 90, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ballisticMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -15251,13 +15254,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strangles the foe with a\n" "chain. The foe can't escape."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_STEEL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PREVENT_ESCAPE, @@ -15276,14 +15279,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The ground turns weird for\n" "5 turns. Blocks priority."), .effect = EFFECT_PSYCHIC_TERRAIN, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, @@ -15299,13 +15302,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lunges at the foe to lower\n" "its Attack stat."), .effect = EFFECT_HIT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, @@ -15324,13 +15327,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Whips the foe with fire\n" "lowering its Defense."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, @@ -15349,13 +15352,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "It hits harder the more\n" "stat boosts the user has."), .effect = EFFECT_STORED_POWER, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 20, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -15370,13 +15373,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Burns out the user fully\n" "removing the Fire type."), .effect = EFFECT_FAIL_IF_NOT_ARG_TYPE, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 130, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .thawsUser = TRUE, .argument = TYPE_FIRE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -15396,14 +15399,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swaps user's Speed with\n" "the target's."), .effect = EFFECT_SPEED_SWAP, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_SMART, @@ -15418,13 +15421,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with an accurate\n" "horn that never misses."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_STEEL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_SMART, @@ -15439,17 +15442,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Cures the foe's status\n" "to restore HP."), .effect = EFFECT_PURIFY, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_POISON, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .magicCoatAffected = TRUE, - .healingMove = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_ALL_STATS_UP_1 }, .mirrorMoveBanned = TRUE, + .healingMove = TRUE, + .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -15463,13 +15466,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Dances with mystical power.\n" "Matches user's first type."), .effect = EFFECT_REVELATION_DANCE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 90, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .danceMove = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -15484,14 +15487,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with a ray that\n" "nullifies the foe's ability."), .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 100, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .zMove = { .powerOverride = 140 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, + .zMove = { .powerOverride = 140 }, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CORE_ENFORCER, }), @@ -15508,13 +15511,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An intense kick from the\n" "tropics. Lowers Attack."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, @@ -15533,14 +15536,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Orders the target to use\n" "its last move again."), .effect = EFFECT_INSTRUCT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 15, - .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPATK_UP_1 }, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -15558,21 +15561,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Heats up beak to attack.\n" "Burns foe on contact."), .effect = EFFECT_BEAK_BLAST, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_FLYING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = -3, - .ballisticMove = TRUE, + .category = DAMAGE_CATEGORY_PHYSICAL, .mirrorMoveBanned = TRUE, + .ballisticMove = TRUE, .meFirstBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -15586,15 +15589,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Makes a big noise with\n" "its scales. Drops Defense."), .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 110, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 5, + .target = MOVE_TARGET_BOTH, .priority = 0, - .soundMove = TRUE, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .soundMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, .self = TRUE, @@ -15612,13 +15615,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swings its whole body\n" "like a hammer to damage."), .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, @@ -15633,13 +15636,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Violently swings around\n" "to hurt everyone nearby."), .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 20, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -15654,16 +15657,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Weakens all attacks, but\n" "only usable with hail."), .effect = EFFECT_AURORA_VEIL, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ICE, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -15678,20 +15681,20 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sets a shell trap that\n" "damages on contact."), .effect = EFFECT_SHELL_TRAP, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 150, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 5, + .target = MOVE_TARGET_BOTH, .priority = -3, + .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -15705,13 +15708,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A strong ray that harshly\n" "lowers Sp. Attack."), .effect = EFFECT_HIT, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 130, + .type = TYPE_FAIRY, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_TWO_DOWN, @@ -15730,13 +15733,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Chomps with psychic fangs.\n" "Destroys any barriers."), .effect = EFFECT_BRICK_BREAK, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 85, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .bitingMove = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, @@ -15752,13 +15755,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Stomps around angrily.\n" "Stronger after a failure."), .effect = EFFECT_STOMPING_TANTRUM, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 75, + .type = TYPE_GROUND, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, @@ -15774,13 +15777,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes with a haunted\n" "bone. Might drop Defense."), .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 85, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, .chance = 20, @@ -15798,13 +15801,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with a high-speed\n" "rock that always goes first."), .effect = EFFECT_HIT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_ROCK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 1, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -15819,13 +15822,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Slams the foe with water.\n" "Can lower Defense."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 85, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, @@ -15844,13 +15847,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A high power laser that\n" "forces recharge next turn."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 160, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, .self = TRUE, @@ -15868,15 +15871,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Steals the target's stat\n" "boosts, then attacks."), .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .makesContact = TRUE, + .category = DAMAGE_CATEGORY_PHYSICAL, .ignoresSubstitute = TRUE, + .makesContact = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPECTRAL_THIEF, @@ -15894,13 +15897,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A sun-fueled strike that\n" "ignores abilities."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_STEEL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ignoresTargetAbility = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_8, @@ -15917,13 +15920,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A moon-powered beam that\n" "ignores abilities."), .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 100, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresTargetAbility = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_8, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, @@ -15939,14 +15942,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user tears up, dropping\n" "Attack and Sp. Attack."), .effect = EFFECT_NOBLE_ROAR, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 20, - .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .ignoresProtect = TRUE, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, @@ -15962,13 +15965,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An electrified impact that\n" "can cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -15987,13 +15990,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Halves the foe's HP with\n" "the power of nature."), .effect = EFFECT_SUPER_FANG, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 1, + .type = TYPE_FAIRY, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_8, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -16008,15 +16011,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that changes\n" "with Memories."), .effect = EFFECT_CHANGE_TYPE_ON_ITEM, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 120 : 90, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .makesContact = TRUE, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = HOLD_EFFECT_MEMORY, + .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -16030,13 +16033,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "It explodes the user's head\n" "to damage everything around."), .effect = EFFECT_MIND_BLOWN, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 150, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 5, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -16051,13 +16054,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with electrical fists.\n" "Normal moves become Electric."), .effect = EFFECT_PLASMA_FISTS, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .metronomeBanned = TRUE, @@ -16074,13 +16077,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "User's highest attack stat\n" "determines its category."), .effect = EFFECT_PHOTON_GEYSER, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 100, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ignoresTargetAbility = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, @@ -16096,16 +16099,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Electric bursts always go\n" "first and land a critical hit."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 80 : 50, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 10 : 15, + .target = MOVE_TARGET_SELECTED, .priority = 2, - .alwaysCriticalHit = TRUE, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .alwaysCriticalHit = TRUE, .metronomeBanned = TRUE, #if B_UPDATED_MOVE_DATA >= GEN_8 .additionalEffects = ADDITIONAL_EFFECTS({ @@ -16122,13 +16125,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A huge electrified wave that\n" "may paralyze the foe."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 90, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 15, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -16144,16 +16147,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Floats in air and dives at\n" "angle. May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_FLYING, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .gravityBanned = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .gravityBanned = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -16168,13 +16171,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Pikachu's love increases its\n" "power. It never misses."), .effect = EFFECT_RETURN, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 1, + .type = TYPE_ELECTRIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, }, @@ -16190,17 +16193,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "half the damage inflicted."), #endif .effect = EFFECT_ABSORB, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 60 : 90, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 20 : 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .healingMove = B_HEAL_BLOCKING >= GEN_6, + .category = DAMAGE_CATEGORY_SPECIAL, + .argument = B_UPDATED_MOVE_DATA >= GEN_8 ? 100 : 50, // restores 100% HP instead of 50% HP .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, - .argument = B_UPDATED_MOVE_DATA >= GEN_8 ? 100 : 50, // restores 100% HP instead of 50% HP + .healingMove = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_BUZZY_BUZZ] = @@ -16210,13 +16213,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Shoots a jolt of electricity\n" "that always paralyzes."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 60 : 90, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 20 : 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -16232,16 +16235,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "User cloaked in fire charges.\n" "Leaves the foe with a burn."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 60 : 90, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 20 : 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .thawsUser = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .thawsUser = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -16256,13 +16259,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Telekinetic force that sets\n" "wall, lowering Sp. Atk damage."), .effect = EFFECT_GLITZY_GLOW, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 80 : 90, + .type = TYPE_PSYCHIC, .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 95 : 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, }, @@ -16274,13 +16277,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Acting badly, attacks. Sets\n" "wall, lowering Attack damage."), .effect = EFFECT_BADDY_BAD, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 80 : 90, + .type = TYPE_DARK, .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 95 : 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, }, @@ -16292,15 +16295,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Giant stalk scatters seeds\n" "that drain HP every turn."), .effect = EFFECT_SAPPY_SEED, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 100 : 90, + .type = TYPE_GRASS, .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 90 : 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 10 : 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .magicCoatAffected = TRUE, + .category = DAMAGE_CATEGORY_PHYSICAL, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .magicCoatAffected = TRUE, .metronomeBanned = TRUE, }, @@ -16311,13 +16314,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Crystal from cold haze hits.\n" "Eliminates all stat changes."), .effect = EFFECT_FREEZY_FROST, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 100 : 90, + .type = TYPE_ICE, .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 90 : 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 10 : 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, }, @@ -16329,13 +16332,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Wrap foe with whirlwind of\n" "scent. Heals party's status."), .effect = EFFECT_SPARKLY_SWIRL, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 120 : 90, + .type = TYPE_FAIRY, .accuracy = B_UPDATED_MOVE_DATA >= GEN_8 ? 85 : 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_8 ? 5 : 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, }, @@ -16347,13 +16350,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Eevee's love increases its\n" "power. It never misses."), .effect = EFFECT_RETURN, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, @@ -16366,16 +16369,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user spins and hits with\n" "its arms. May cause flinch."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_STEEL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .strikeCount = 2, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, + .strikeCount = 2, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -16395,21 +16398,21 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires a strong beam. Deals\n" "2x damage to Dynamaxed foes."), .effect = EFFECT_DYNAMAX_DOUBLE_DMG, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 100, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = TRUE, - .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .mimicBanned = TRUE, .encoreBanned = TRUE, + .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, .parentalBondBanned = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_SMART, @@ -16424,14 +16427,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user ignores effects\n" "that draw in moves."), .effect = EFFECT_SNIPE_SHOT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 15, - .priority = 0, .criticalHitStage = 1, + .pp = 15, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -16445,13 +16448,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Prevents the user and\n" "the target from escaping."), .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .bitingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -16470,15 +16473,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Consumes the user's Berry,\n" "then sharply raises Def."), .effect = EFFECT_STUFF_CHEEKS, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -16493,15 +16496,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises all of the user's\n" "stats but prevents escape."), .effect = EFFECT_NO_RETREAT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FIGHTING, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 5, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -16516,13 +16519,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the foe's Speed and\n" "makes it weak to Fire."), .effect = EFFECT_TAR_SHOT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ROCK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -16537,16 +16540,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Magic powder changes the\n" "target into a Psychic-type."), .effect = EFFECT_SOAK, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .argument = TYPE_PSYCHIC, .magicCoatAffected = TRUE, .powderMove = TRUE, - .argument = TYPE_PSYCHIC, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -16560,13 +16563,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user attacks twice. Two\n" "targets are hit once each."), .effect = EFFECT_HIT, // TODO: EFFECT_DRAGON_DARTS - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 50, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .strikeCount = 2, .parentalBondBanned = TRUE, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, @@ -16582,13 +16585,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "All Pokémon have teatime\n" "and eat their Berries."), .effect = EFFECT_TEATIME, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -16605,13 +16608,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Traps the foe to lower Def\n" "and Sp. Def fall each turn."), .effect = EFFECT_OCTOLOCK, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -16625,13 +16628,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Double power if the user\n" "moves before the target."), .effect = EFFECT_BOLT_BEAK, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 85, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -16646,13 +16649,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Double power if the user\n" "moves before the target."), .effect = EFFECT_BOLT_BEAK, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 85, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .bitingMove = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, @@ -16668,13 +16671,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user swaps effects on\n" "either side of the field."), .effect = EFFECT_COURT_CHANGE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, .ignoresProtect = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -16689,18 +16692,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user uses some of its\n" "HP to raise all its stats."), .effect = EFFECT_CLANGOROUS_SOUL, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_USER, .pp = 5, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .soundMove = TRUE, .danceMove = TRUE, - .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -16715,13 +16718,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Does more damage the\n" "higher the user's Def."), .effect = EFFECT_BODY_PRESS, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .metronomeBanned = TRUE, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, @@ -16738,13 +16741,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user sharply raises\n" "the target's Atk and Sp.Atk"), .effect = EFFECT_DECORATE, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FAIRY, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -16761,13 +16764,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Plays a drum to attack.\n" "The foe's Speed is lowered."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, @@ -16786,13 +16789,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Snares the target in a snap\n" "trap for four to five turns."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 35, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .metronomeBanned = TRUE, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, @@ -16812,15 +16815,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Launches a fiery ball at the\n" "target. It may cause a burn."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_FIRE, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .ballisticMove = TRUE, + .category = DAMAGE_CATEGORY_PHYSICAL, .thawsUser = TRUE, + .ballisticMove = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -16839,18 +16842,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes as a sword. Deals 2x\n" "damage to Dynamaxed foes."), .effect = EFFECT_DYNAMAX_DOUBLE_DMG, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_STEEL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, - .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .mimicBanned = TRUE, .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -16865,17 +16868,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks as a shield. Deals 2x\n" "damage to Dynamaxed foes."), .effect = EFFECT_DYNAMAX_DOUBLE_DMG, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_STEEL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .mimicBanned = TRUE, .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -16890,13 +16893,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Raises Speed to attack. The\n" "Type is based on its form."), .effect = EFFECT_AURA_WHEEL, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 110, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_PLUS_1, @@ -16916,13 +16919,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swings its tail to attack.\n" "Lowers the Atk of those hit."), .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 15, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -16942,13 +16945,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user pokes the target\n" "with a pointed branch."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 40, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, @@ -16964,13 +16967,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user twangs its guitar,\n" "causing strong vibrations."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 10, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .metronomeBanned = TRUE, @@ -16987,13 +16990,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with tart apple acid\n" "to lower the foe's Sp. Def."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_1, @@ -17012,13 +17015,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Drops an apple from above.\n" "Lowers the foe's Defense."), .effect = EFFECT_GRAV_APPLE, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, @@ -17037,13 +17040,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with spirit-breaking\n" "force. Lowers Sp. Atk."), .effect = EFFECT_HIT, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 75, + .type = TYPE_FAIRY, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -17063,13 +17066,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Emits a strange steam to\n" "potentially confuse the foe."), .effect = EFFECT_HIT, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 90, + .type = TYPE_FAIRY, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, @@ -17088,18 +17091,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Scatters water to restore\n" "the HP of itself and allies."), .effect = EFFECT_JUNGLE_HEALING, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_WATER, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, .snatchAffected = TRUE, - .healingMove = TRUE, + .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, + .healingMove = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -17114,13 +17117,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Protects itself, harshly\n" "lowering Def on contact."), .effect = EFFECT_PROTECT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_USER, .pp = 10, + .target = MOVE_TARGET_USER, .priority = 4, + .category = DAMAGE_CATEGORY_STATUS, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -17138,13 +17141,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Bows to stab the foe\n" "with hair. It never misses."), .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_DARK, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, @@ -17160,13 +17163,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with a thick leek.\n" "The user must then rest."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 150, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, .instructBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -17186,13 +17189,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Eternatus' strongest move.\n" "The user rests next turn."), .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 160, + .type = TYPE_DRAGON, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RECHARGE, @@ -17211,13 +17214,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Fires a beam of steel from\n" "its body. It hurts the user."), .effect = EFFECT_MAX_HP_50_RECOIL, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 140, + .type = TYPE_STEEL, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -17232,13 +17235,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Power goes up and damages\n" "all foes on Psychic Terrain."), .effect = EFFECT_EXPANDING_FORCE, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -17252,16 +17255,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Destroys terrain. Fails if\n" "ground isn't terrain."), .effect = EFFECT_HIT_SET_REMOVE_TERRAIN, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 130, + .type = TYPE_STEEL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .skyBattleBanned = TRUE, .argument = ARG_TRY_REMOVE_TERRAIN_FAIL, // Remove a field terrain if there is one and hit, otherwise fail. + .skyBattleBanned = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -17275,13 +17278,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Shoots scales 2 to 5 times.\n" "Ups Speed, lowers defense."), .effect = EFFECT_MULTI_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 25, + .type = TYPE_DRAGON, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MOVE_EFFECT_SCALE_SHOT, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -17296,13 +17299,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A 2-turn move that raises\n" "Sp. Attack before attacking."), .effect = EFFECT_TWO_TURNS_ATTACK, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 120, + .type = TYPE_ROCK, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .instructBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_METEORBEAMCHARGING), .additionalEffects = ADDITIONAL_EFFECTS({ @@ -17323,13 +17326,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Deals better of physical and\n" "special damage. May poison."), .effect = EFFECT_SHELL_SIDE_ARM, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 90, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, .chance = 20, @@ -17347,13 +17350,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hit everything and faint.\n" "Powers up on Misty Terrain."), .effect = EFFECT_EXPLOSION, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 100, + .type = TYPE_FAIRY, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 5, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, @@ -17367,13 +17370,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Gliding on ground, hits. Goes\n" "first on Grassy Terrain."), .effect = EFFECT_GRASSY_GLIDE, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 55 : 70, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, @@ -17389,13 +17392,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "This move's power doubles\n" "when on Electric Terrain."), .effect = EFFECT_RISING_VOLTAGE, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 70, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -17409,13 +17412,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Type and power changes\n" "depending on the terrain."), .effect = EFFECT_TERRAIN_PULSE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 50, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .pulseMove = TRUE, .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -17430,13 +17433,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "User skitters behind foe to\n" "attack. Lowers foe's Sp. Atk."), .effect = EFFECT_HIT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_BUG, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, @@ -17455,13 +17458,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Foes that have stats upped\n" "during the turn get burned."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 70, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 5, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .onlyIfTargetRaisedStats = TRUE, @@ -17480,13 +17483,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "If stats lowered during this\n" "turn, power is doubled."), .effect = EFFECT_LASH_OUT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 75, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_COOL, @@ -17501,13 +17504,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Control foe's item to attack.\n" "Fails if foe has no item."), .effect = EFFECT_POLTERGEIST, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 110, + .type = TYPE_GHOST, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -17521,13 +17524,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Highly acidic gas melts items\n" "held by surrounding Pokémon."), .effect = EFFECT_CORROSIVE_GAS, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_FOES_AND_ALLY, .pp = 40, + .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_COOL, @@ -17542,13 +17545,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Properly coaches allies to\n" "up their Attack and Defense."), .effect = EFFECT_COACHING, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FIGHTING, .accuracy = 0, - .target = MOVE_TARGET_ALLY, .pp = 10, + .target = MOVE_TARGET_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, @@ -17565,13 +17568,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks and rushes back to\n" "switch with a party Pokémon."), .effect = EFFECT_HIT_ESCAPE, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_COOL, @@ -17586,15 +17589,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A 3-kick attack that gets\n" "more powerful with each hit."), .effect = EFFECT_TRIPLE_KICK, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 20, + .type = TYPE_ICE, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .strikeCount = 3, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .strikeCount = 3, .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, @@ -17608,15 +17611,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "User slams the target with\n" "wings and hits twice in a row."), .effect = EFFECT_HIT, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_FLYING, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .strikeCount = 2, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .strikeCount = 2, .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -17630,13 +17633,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Throws scorching sand at\n" "the target. May leave a burn."), .effect = EFFECT_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 70, + .type = TYPE_GROUND, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .thawsUser = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -17655,17 +17658,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Heals HP and status of\n" "itself and allies in battle."), .effect = EFFECT_JUNGLE_HEALING, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, .ignoresProtect = TRUE, - .healingMove = TRUE, .ignoresSubstitute = TRUE, .mirrorMoveBanned = TRUE, + .healingMove = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_SMART, @@ -17680,15 +17683,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Mastering the Dark style,\n" "strikes with a critical hit."), .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 75 : 80, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .alwaysCriticalHit = TRUE, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .alwaysCriticalHit = TRUE, .punchingMove = TRUE, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, @@ -17704,17 +17707,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Mastering the Water style,\n" "strikes with 3 critical hits."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 25, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .strikeCount = 3, - .alwaysCriticalHit = TRUE, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .alwaysCriticalHit = TRUE, .punchingMove = TRUE, + .strikeCount = 3, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -17729,13 +17732,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Traps the foe in a cage of\n" "electricity for "BINDING_TURNS" turns."), .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_ELECTRIC, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_WRAP, @@ -17753,13 +17756,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The higher the user's HP\n" "the more damage caused."), .effect = EFFECT_ERUPTION, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 150, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 5, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_COOL, @@ -17777,14 +17780,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else "the eyes. May freeze the foe."), #endif + .power = 90, .effect = EFFECT_HIT, .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, - .power = 90, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, @@ -17803,13 +17806,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack fueled by your\n" "wrath. May cause flinching."), .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 90, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 10, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -17828,13 +17831,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Uses a lightning-like kick\n" "to hit. Lowers foe's Defense."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -17854,13 +17857,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes by hurling a blizzard-\n" "cloaked icicle lance at foes."), .effect = EFFECT_HIT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 130, + .type = TYPE_ICE, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 5, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -17875,13 +17878,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Strikes by sending a frightful\n" "amount of ghosts at foes."), .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 120, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 5, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_SMART, @@ -17896,13 +17899,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Attacks with psychic power.\n" "Foe's last move has 3 PP cut."), .effect = EFFECT_EERIE_SPELL, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, @@ -17918,13 +17921,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical hit chance. May\n" "paralyze, poison or drowse."), .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 80 : 60, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DIRE_CLAW, @@ -17939,13 +17942,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits a foe with psychic\n" "energy. May raise Defense."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_PSYCHIC, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_PLUS_1, @@ -17961,15 +17964,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user swaps its Attack\n" "and Defense stats."), .effect = EFFECT_POWER_TRICK, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -17981,13 +17984,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical hit ratio. Sets\n" "Splinters that hurt the foe."), .effect = EFFECT_HIT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 65, + .type = TYPE_ROCK, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -18003,13 +18006,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Wraps a foe in fierce winds.\n" "Varies with the user's form."), .effect = EFFECT_HIT, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, + .type = TYPE_FAIRY, .accuracy = 80, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .windMove = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -18025,13 +18028,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A mysterious power strikes,\n" "raising the user's Sp. Atk."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 70, + .type = TYPE_PSYCHIC, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_PLUS_1, .self = TRUE, @@ -18046,13 +18049,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A rampage of 2 to 3 turns\n" "that confuses the user."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 90, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_RANDOM, .pp = 10, + .target = MOVE_TARGET_RANDOM, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_THRASH, @@ -18067,14 +18070,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A slam shrouded in water.\n" "It also hurts the user."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 75, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 10, - .priority = 0, .recoil = 33, + .pp = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, @@ -18086,13 +18089,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A user-hurting blast of\n" "amassed chlorophyll."), .effect = EFFECT_MAX_HP_50_RECOIL, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 150 : 120, + .type = TYPE_GRASS, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, }, [MOVE_MOUNTAIN_GALE] = @@ -18102,13 +18105,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Giant chunks of ice damage\n" "the foe. It may flinch."), .effect = EFFECT_HIT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_ICE, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 30, @@ -18122,16 +18125,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Dances to raise Attack,\n" "Defense and Speed."), .effect = EFFECT_VICTORY_DANCE, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FIGHTING, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 20, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, - .snatchAffected = TRUE, + .category = DAMAGE_CATEGORY_STATUS, .danceMove = TRUE, + .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, }, @@ -18142,13 +18145,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with a full-body tackle.\n" "Lowers the users's defenses."), .effect = EFFECT_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 100, + .type = TYPE_GROUND, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -18164,13 +18167,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Can poison on impact. Powers\n" "up against poisoned foes."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = STATUS1_PSN_ANY, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, @@ -18185,14 +18188,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical hit ratio.\n" "Ups the user's Speed."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 80 : 75, + .type = TYPE_PSYCHIC, .accuracy = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 90, - .target = MOVE_TARGET_SELECTED, - .pp = 10, - .priority = 0, .criticalHitStage = 1, + .pp = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_PLUS_1, .self = TRUE, @@ -18207,13 +18210,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A spine-chilling resentment.\n" "May lower the foe's Attack."), .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 75 : 60, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, .chance = 100, @@ -18227,15 +18230,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user hardens their skin,\n" "sharply raising its Defense."), .effect = EFFECT_DEFENSE_UP_2, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_STEEL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, }, @@ -18246,14 +18249,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical hit ratio.\n" "May lower Defense or flinch."), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 90 : 50, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 15, - .priority = 0, .criticalHitStage = 1, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_MINUS_1, .chance = 50, @@ -18271,13 +18274,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurts a foe harder if it has\n" "an ailment. May leave a burn."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 60, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .argument = STATUS1_ANY, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -18292,13 +18295,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "High critical hit ratio. Sets\n" "Splinters that hurt the foe."), .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 65, + .type = TYPE_DARK, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -18314,13 +18317,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with brutal, cold winds.\n" "May lower the foe's Speed."), .effect = EFFECT_RAIN_ALWAYS_HIT, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, + .type = TYPE_FLYING, .accuracy = 80, - .target = MOVE_TARGET_BOTH, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 5, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, @@ -18335,13 +18338,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with a brutal tempest.\n" "May inflict paralysis."), .effect = EFFECT_RAIN_ALWAYS_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, + .type = TYPE_ELECTRIC, .accuracy = 80, - .target = MOVE_TARGET_BOTH, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 5, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -18356,13 +18359,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with brutally hot sand.\n" "May inflict a burn."), .effect = EFFECT_RAIN_ALWAYS_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_SPECIAL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, + .type = TYPE_GROUND, .accuracy = 80, - .target = MOVE_TARGET_BOTH, .pp = B_UPDATED_MOVE_DATA >= GEN_9 ? 10 : 5, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -18377,17 +18380,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user heals and cures\n" "itself and its ally."), .effect = EFFECT_JUNGLE_HEALING, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, .snatchAffected = TRUE, - .healingMove = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, + .healingMove = TRUE, }, [MOVE_TAKE_HEART] = @@ -18397,15 +18400,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user lifts its spirits to\n" "heal and strengthen itself."), .effect = EFFECT_TAKE_HEART, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, }, @@ -18416,15 +18419,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "If the user's Terastallized,\n" "it hits with its Tera-type."), .effect = EFFECT_PLACEHOLDER, // EFFECT_TERA_BLAST, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .forcePressure = TRUE, - .metronomeBanned = TRUE, // Only since it isn't implemented yet }, [MOVE_SILK_TRAP] = @@ -18434,13 +18436,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Protects itself, lowering\n" "Speed on contact."), .effect = EFFECT_PROTECT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_BUG, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, + .target = MOVE_TARGET_USER, .priority = 4, + .category = DAMAGE_CATEGORY_STATUS, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -18453,13 +18455,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "May miss and hurt the kicker.\n" "May cause confusion."), .effect = EFFECT_RECOIL_IF_MISS, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_FIGHTING, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, @@ -18474,13 +18476,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "This move deals more damage\n" "for each defeated ally."), .effect = EFFECT_LAST_RESPECTS, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 50, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, // Only since it isn't implemented yet }, @@ -18491,13 +18493,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A mind-affecting light\n" "harshly lowers Sp. Def."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_2, .chance = 100, @@ -18511,13 +18513,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Boosts a user's stats\n" "depending on Tatsugiri."), .effect = EFFECT_PLACEHOLDER, // EFFECT_ORDER_UP - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -18529,13 +18531,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A punch is thrown at blinding\n" "speed to strike first."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 60, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 1, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .metronomeBanned = TRUE, @@ -18548,13 +18550,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sharply ups target's Attack,\n" "harshly lowers its Defense."), .effect = EFFECT_PLACEHOLDER, // EFFECT_SPICY_EXTRACT - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_GRASS, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, .magicCoatAffected = TRUE, .metronomeBanned = TRUE, }, @@ -18566,13 +18568,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Furiously strains its legs.\n" "Harshly lowers user's Speed."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_STEEL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -18588,17 +18590,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user's fellows hit one\n" "to ten times in a row."), .effect = EFFECT_POPULATION_BOMB, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 20, + .type = TYPE_NORMAL, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .strikeCount = 10, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, .metronomeBanned = TRUE, + .strikeCount = 10, }, [MOVE_ICE_SPINNER] = @@ -18608,16 +18610,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Ice-covered feet hit a foe\n" "and destroy the terrain."), .effect = EFFECT_HIT_SET_REMOVE_TERRAIN, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_ICE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, .argument = ARG_TRY_REMOVE_TERRAIN_HIT, // Remove the active field terrain if there is one. + .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_GLAIVE_RUSH] = @@ -18627,13 +18629,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Foe attacks next turn can't\n" "miss and do double damage."), .effect = EFFECT_GLAIVE_RUSH, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, }, @@ -18644,17 +18646,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Revives a fainted party {PKMN}\n" "and restores half of its HP."), .effect = EFFECT_REVIVAL_BLESSING, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 1, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, .ignoresProtect = TRUE, - .healingMove = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .healingMove = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), }, @@ -18665,13 +18667,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hurts foe every turn. Double\n" "damage to Steel and Water."), .effect = EFFECT_SALT_CURE, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 40, + .type = TYPE_ROCK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, }, @@ -18682,15 +18684,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits target with splashes\n" "of water 3 times in a row."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 30, + .type = TYPE_WATER, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .strikeCount = 3, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .strikeCount = 3, }, [MOVE_MORTAL_SPIN] = @@ -18700,13 +18702,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Erases trap moves and Leech\n" "Seed. Poisons adjecent foes."), .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 30, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 15, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_RAPIDSPIN, @@ -18725,13 +18727,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Changes user's and ally's\n" "Ability into the target's."), .effect = EFFECT_DOODLE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -18744,16 +18746,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Sharply boosts offenses and\n" "Speed by using its own HP."), .effect = EFFECT_FILLET_AWAY, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_RECOVER_HP }, + .target = MOVE_TARGET_USER, .priority = 0, - .ignoresProtect = TRUE, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RECOVER_HP }, .snatchAffected = TRUE, + .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -18765,13 +18767,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "User slashes the foe after\n" "kowtowing. It never misses."), .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 85, + .type = TYPE_DARK, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, }, @@ -18783,13 +18785,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Rigged bouquet. Always gets\n" "a critical hit, never missing."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_GRASS, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .alwaysCriticalHit = TRUE, }, @@ -18800,13 +18802,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Flames scorch the target.\n" "Boosts the user's Sp. Atk."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -18823,13 +18825,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Hits with light, fluid dance\n" "steps. Ups the user's Speed."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .danceMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -18846,13 +18848,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Tackle that breaks barriers.\n" "User's form determines type."), .effect = EFFECT_RAGING_BULL, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .metronomeBanned = TRUE, }, @@ -18864,13 +18866,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the user's Sp. Atk.\n" "Money is recovered after."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 120, + .type = TYPE_STEEL, .accuracy = 100, - .target = MOVE_TARGET_BOTH, .pp = 5, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PAYDAY, @@ -18888,13 +18890,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Summons a ruinous disaster\n" "and cuts half the foe's HP."), .effect = EFFECT_SUPER_FANG, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 1, + .type = TYPE_DARK, .accuracy = 90, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, }, @@ -18905,13 +18907,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Prehistoric explosion that's\n" "stronger if supereffective."), .effect = EFFECT_COLLISION_COURSE, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .metronomeBanned = TRUE, }, @@ -18923,13 +18925,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Futuristic electricity. It's\n" "stronger if supereffective."), .effect = EFFECT_COLLISION_COURSE, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 100, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .makesContact = TRUE, .metronomeBanned = TRUE, }, @@ -18941,14 +18943,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Creates a Substitute for\n" "itself before switching out."), .effect = EFFECT_SHED_TAIL, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -18961,14 +18963,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Bad joke summons snowstorm.\n" "The user also switches out."), .effect = EFFECT_CHILLY_RECEPTION, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ICE, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -18981,13 +18983,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "User tidies up hazards and\n" "raises its Attack and Speed."), .effect = EFFECT_PLACEHOLDER, // EFFECT_TIDY_UP - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -19000,14 +19002,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Summons a snowstorm that\n" "lasts for five turns."), .effect = EFFECT_SNOWSCAPE, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_ICE, .accuracy = 0, - .target = MOVE_TARGET_ALL_BATTLERS, .pp = 10, - .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -19020,13 +19022,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user pounces on the foe,\n" "lowering its Speed."), .effect = EFFECT_HIT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 50, + .type = TYPE_BUG, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -19042,13 +19044,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The user attacks suddenly,\n" "raising its Speed."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 50, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -19065,13 +19067,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A shower with ice-cold water\n" "lowers the target's Attack."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 50, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 20, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ATK_MINUS_1, @@ -19086,13 +19088,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A spinning pointed part\n" "bypasses a foe's Protect."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ignoresProtect = TRUE, .metronomeBanned = TRUE, @@ -19105,13 +19107,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Mystical eye-beams that hit\n" "the target twice in a row."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 40, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .strikeCount = 2, .metronomeBanned = TRUE, }, @@ -19123,13 +19125,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "The more the user has been\n" "hit, the stronger the move."), .effect = EFFECT_RAGE_FIST, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 50, + .type = TYPE_GHOST, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, .metronomeBanned = TRUE, @@ -19142,13 +19144,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A strong attack but lowers\n" "the defensive stats."), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 120, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_DEF_SPDEF_DOWN, @@ -19163,13 +19165,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An attack that absorbs\n" "half the damage inflicted."), .effect = EFFECT_ABSORB, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 90, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, .healingMove = TRUE, @@ -19182,13 +19184,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Discharges all electricity,\n" "losing the Electric type."), .effect = EFFECT_FAIL_IF_NOT_ARG_TYPE, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 120, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .metronomeBanned = TRUE, .argument = TYPE_ELECTRIC, @@ -19205,13 +19207,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Swings a huge hammer. Can't\n" "be used twice in a row."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 160, + .type = TYPE_STEEL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .cantUseTwice = TRUE, }, @@ -19222,13 +19224,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Retaliates strongly against\n" "who last hurt the user."), .effect = EFFECT_METAL_BURST, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_DEPENDS, .pp = 10, + .target = MOVE_TARGET_DEPENDS, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .meFirstBanned = TRUE, .metronomeBanned = TRUE, @@ -19241,14 +19243,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Pressurized water cut with a\n" "high critical-hit ratio."), .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 70, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, - .pp = 20, - .priority = 0, .criticalHitStage = 1, + .pp = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .slicingMove = TRUE, }, @@ -19257,22 +19259,22 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("BlazngTorque", "Blazing Torque"), .description = COMPOUND_STRING("---"), .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, + .assistBanned = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -19285,22 +19287,22 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("WickedTorque", "Wicked Torque"), .description = COMPOUND_STRING("---"), .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_DARK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, + .assistBanned = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SLEEP, @@ -19313,22 +19315,22 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("NoxiusTorque", "Noxious Torque"), .description = COMPOUND_STRING("---"), .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, + .assistBanned = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_POISON, @@ -19341,22 +19343,22 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("CombatTorque", "Combat Torque"), .description = COMPOUND_STRING("---"), .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, + .assistBanned = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -19369,22 +19371,22 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("MagiclTorque", "Magical Torque"), .description = COMPOUND_STRING("---"), .effect = EFFECT_HIT, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_FAIRY, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .assistBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .encoreBanned = TRUE, + .assistBanned = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, @@ -19399,13 +19401,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "This move's power increases\n" "when on Electric Terrain."), .effect = EFFECT_PSYBLADE, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 80, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, }, @@ -19417,13 +19419,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "This move's power increases\n" "under harsh sunlight."), .effect = EFFECT_HYDRO_STEAM, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_WATER, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .thawsUser = TRUE, }, @@ -19434,13 +19436,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Unleashes the blood moon.\n" "Can't be used twice in a row."), .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 140, + .type = TYPE_NORMAL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .cantUseTwice = TRUE, }, @@ -19451,16 +19453,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Absorbs half the damage\n" "inflicted. May cause a burn."), .effect = EFFECT_ABSORB, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_GRASS, .accuracy = 90, - .target = MOVE_TARGET_BOTH, .pp = 15, + .target = MOVE_TARGET_BOTH, .priority = 0, - .healingMove = B_EXTRAPOLATED_MOVE_FLAGS, + .category = DAMAGE_CATEGORY_SPECIAL, .thawsUser = TRUE, .metronomeBanned = TRUE, + .healingMove = B_EXTRAPOLATED_MOVE_FLAGS, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 20, @@ -19474,13 +19476,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Lowers the foe's speed\n" "each turn for 3 turns."), .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 60, + .type = TYPE_GRASS, .accuracy = 85, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .ballisticMove = TRUE, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -19496,14 +19498,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Type changes with held mask.\n" "High critical-hit ratio."), .effect = EFFECT_IVY_CUDGEL, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_GRASS, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, - .priority = 0, .criticalHitStage = 1, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, }, @@ -19514,13 +19516,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Absorbs electricity in one turn,\n" "then attacks next turn."), .effect = EFFECT_TWO_TURNS_ATTACK, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 130, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .argument = TWO_TURN_ARG(STRINGID_ELECTROSHOTCHARGING, B_WEATHER_RAIN), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_PLUS_1, @@ -19536,16 +19538,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Damages all opponents if user is\n" "Stellar form Terapagos."), .effect = EFFECT_PLACEHOLDER, //EFFECT_TERA_STARSTORM - .type = TYPE_NORMAL, // Stellar type if used by Terapagos-Stellar - .category = DAMAGE_CATEGORY_SPECIAL, .power = 120, + .type = TYPE_NORMAL, // Stellar type if used by Terapagos-Stellar .accuracy = 100, - .target = MOVE_TARGET_SELECTED, // MOVE_TARGET_BOTH if used by Terapagos-Stellar .pp = 5, + .target = MOVE_TARGET_SELECTED, // MOVE_TARGET_BOTH if used by Terapagos-Stellar .priority = 0, - .mimicBanned = TRUE, - .copycatBanned = TRUE, + .category = DAMAGE_CATEGORY_SPECIAL, .assistBanned = TRUE, + .copycatBanned = TRUE, + .mimicBanned = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), }, @@ -19556,13 +19558,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Shoots a beam of light. Sometimes\n" "twice as strong."), .effect = EFFECT_FICKLE_BEAM, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_DRAGON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, }, [MOVE_BURNING_BULWARK] = @@ -19572,14 +19574,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Evades attack, and burns\n" "the foe if struck."), .effect = EFFECT_PROTECT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_FIRE, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, - .zMove = { .effect = Z_EFFECT_RESET_STATS }, + .target = MOVE_TARGET_USER, .priority = 4, + .category = DAMAGE_CATEGORY_STATUS, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -19592,13 +19594,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Thunderclap"), .description = sSuckerPunchDescription, .effect = EFFECT_SUCKER_PUNCH, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 70, + .type = TYPE_ELECTRIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 1, + .category = DAMAGE_CATEGORY_SPECIAL, }, [MOVE_MIGHTY_CLEAVE] = @@ -19606,13 +19608,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = HANDLE_EXPANDED_MOVE_NAME("MightyCleave", "Mighty Cleave"), .description = sFeintDescription, .effect = EFFECT_HIT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 95, + .type = TYPE_ROCK, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .ignoresProtect = TRUE, .slicingMove = TRUE, @@ -19625,13 +19627,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Launches particle blades at\n" "the target. Strikes twice."), .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 50, + .type = TYPE_STEEL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .strikeCount = 2, .slicingMove = TRUE, }, @@ -19641,13 +19643,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Hard Press"), .description = sWringOutDescription, .effect = EFFECT_WRING_OUT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_STEEL, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, }, @@ -19658,13 +19660,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Increases allies' critical hit\n" "ratio, especially if Dragons."), .effect = EFFECT_DRAGON_CHEER, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_DRAGON, .accuracy = 0, - .target = MOVE_TARGET_ALLY, .pp = 15, + .target = MOVE_TARGET_ALLY, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, .ignoresSubstitute = TRUE, }, @@ -19675,13 +19677,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Confuses the target if their\n" "stats were boosted this turn."), .effect = EFFECT_HIT, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 80, + .type = TYPE_FAIRY, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .soundMove = TRUE, .ignoresSubstitute = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -19698,13 +19700,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A desperation attack. Power\n" "doubles if last move failed."), .effect = EFFECT_STOMPING_TANTRUM, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 75, + .type = TYPE_FIRE, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, }, @@ -19715,13 +19717,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "An electrified slam. If it\n" "misses, the user is hurt."), .effect = EFFECT_RECOIL_IF_MISS, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 100, + .type = TYPE_ELECTRIC, .accuracy = 95, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, }, @@ -19732,13 +19734,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "Unpleasant sound waves that\n" "damage and prevent healing."), .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 75, + .type = TYPE_PSYCHIC, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .soundMove = TRUE, .ignoresSubstitute = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -19749,18 +19751,18 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = [MOVE_UPPER_HAND] = { + .effect = EFFECT_UPPER_HAND, .name = COMPOUND_STRING("Upper Hand"), .description = COMPOUND_STRING( "Makes the target flinch if\n" "readying a priority move."), - .effect = EFFECT_UPPER_HAND, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 65, + .type = TYPE_FIGHTING, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 15, + .target = MOVE_TARGET_SELECTED, .priority = 3, + .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, @@ -19775,13 +19777,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = "A corrosive chain attack\n" "that may badly poison."), .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 100, + .type = TYPE_POISON, .accuracy = 100, - .target = MOVE_TARGET_SELECTED, .pp = 5, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_TOXIC, .chance = 50, @@ -19794,65 +19796,65 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Breakneck Blitz"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, //determined from move type .power = 1, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, //determined from move type }, [MOVE_ALL_OUT_PUMMELING] = { .name = COMPOUND_STRING("All Out Pummeling"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_FIGHTING, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_SUPERSONIC_SKYSTRIKE] = { .name = COMPOUND_STRING("Supersonic Skystrike"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_FLYING, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_ACID_DOWNPOUR] = { .name = COMPOUND_STRING("Acid Downpour"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_POISON, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_TECTONIC_RAGE] = { .name = COMPOUND_STRING("Tectonic Rage"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_GROUND, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_CONTINENTAL_CRUSH] = @@ -19860,209 +19862,209 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Continental Crush"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_ROCK, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_SAVAGE_SPIN_OUT] = { .name = COMPOUND_STRING("Savage Spin Out"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_BUG, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_NEVER_ENDING_NIGHTMARE] = { .name = COMPOUND_STRING("Never Ending Nightmare"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_GHOST, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_CORKSCREW_CRASH] = { .name = COMPOUND_STRING("Corkscrew Crash"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_STEEL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_INFERNO_OVERDRIVE] = { .name = COMPOUND_STRING("Inferno Overdrive"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_FIRE, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_HYDRO_VORTEX] = { .name = COMPOUND_STRING("Hydro Vortex"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_WATER, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_BLOOM_DOOM] = { .name = COMPOUND_STRING("Bloom Doom"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_GRASS, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_GIGAVOLT_HAVOC] = { .name = COMPOUND_STRING("Gigavolt Havoc"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_ELECTRIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_SHATTERED_PSYCHE] = { .name = COMPOUND_STRING("Shattered Psyche"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_SUBZERO_SLAMMER] = { .name = COMPOUND_STRING("Subzero Slammer"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_ICE, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_DEVASTATING_DRAKE] = { .name = COMPOUND_STRING("Devastating Drake"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_DRAGON, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_BLACK_HOLE_ECLIPSE] = { .name = COMPOUND_STRING("Black Hole Eclipse"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_DARK, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_TWINKLE_TACKLE] = { .name = COMPOUND_STRING("Twinkle Tackle"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_FAIRY, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_CATASTROPIKA] = { .name = COMPOUND_STRING("Catastropika"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 210, + .type = TYPE_ELECTRIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_10000000_VOLT_THUNDERBOLT] = { .name = COMPOUND_STRING("10000000 Volt Thunderbolt"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 195, + .type = TYPE_ELECTRIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, - .pp = 1, - .priority = 0, .criticalHitStage = 2, + .pp = 1, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, }, [MOVE_STOKED_SPARKSURFER] = { .name = COMPOUND_STRING("Stoked Sparksurfer"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 175, + .type = TYPE_ELECTRIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 100, @@ -20073,39 +20075,39 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Extreme Evoboost"), .description = sNullDescription, .effect = EFFECT_EXTREME_EVOBOOST, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 1, + .target = MOVE_TARGET_USER, .priority = 0, + .category = DAMAGE_CATEGORY_STATUS, }, [MOVE_PULVERIZING_PANCAKE] = { .name = COMPOUND_STRING("Pulverizing Pancake"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 210, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_GENESIS_SUPERNOVA] = { .name = COMPOUND_STRING("Genesis Supernova"), .description = sNullDescription, .effect = EFFECT_HIT_SET_REMOVE_TERRAIN, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 185, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .argument = ARG_SET_PSYCHIC_TERRAIN, // Set Psychic Terrain. If there's a different field terrain active, overwrite it. }, [MOVE_SINISTER_ARROW_RAID] = @@ -20113,52 +20115,52 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Sinister Arrow Raid"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 180, + .type = TYPE_GHOST, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_MALICIOUS_MOONSAULT] = { .name = COMPOUND_STRING("Malicious Moonsault"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 180, + .type = TYPE_DARK, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_OCEANIC_OPERETTA] = { .name = COMPOUND_STRING("Oceaning Operetta"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 195, + .type = TYPE_WATER, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, }, [MOVE_SPLINTERED_STORMSHARDS] = { .name = COMPOUND_STRING("Splintered Stormshards"), .description = sNullDescription, .effect = EFFECT_HIT_SET_REMOVE_TERRAIN, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 190, + .type = TYPE_ROCK, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = ARG_TRY_REMOVE_TERRAIN_HIT, // Remove the active field terrain if there is one. }, [MOVE_LETS_SNUGGLE_FOREVER] = @@ -20166,26 +20168,26 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Let's Snuggle Forever"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 190, + .type = TYPE_FAIRY, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_CLANGOROUS_SOULBLAZE] = { .name = COMPOUND_STRING("Clangorous Soulblaze"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 185, + .type = TYPE_DRAGON, .accuracy = 0, - .target = MOVE_TARGET_BOTH, .pp = 1, + .target = MOVE_TARGET_BOTH, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, .soundMove = TRUE, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -20199,65 +20201,65 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Guardian Of Alola"), .description = sNullDescription, .effect = EFFECT_SUPER_FANG, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 1, + .type = TYPE_FAIRY, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, }, [MOVE_SEARING_SUNRAZE_SMASH] = { .name = COMPOUND_STRING("Searing Sunraze Smash"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 200, + .type = TYPE_STEEL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_MENACING_MOONRAZE_MAELSTROM] = { .name = COMPOUND_STRING("Menacing Moonraze Maelstrom"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 200, + .type = TYPE_GHOST, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, }, [MOVE_LIGHT_THAT_BURNS_THE_SKY] = { .name = COMPOUND_STRING("Light That Burns The Sky"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_SPECIAL, .power = 200, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_SPECIAL, }, [MOVE_SOUL_STEALING_7_STAR_STRIKE] = { .name = COMPOUND_STRING("Soul Stealing 7 Star Strike"), .description = sNullDescription, .effect = EFFECT_HIT, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 195, + .type = TYPE_GHOST, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 1, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, }, [MOVE_MAX_GUARD] = @@ -20265,13 +20267,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Guard"), .description = sNullDescription, .effect = EFFECT_PROTECT, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_STATUS, .power = 0, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_USER, .pp = 10, + .target = MOVE_TARGET_USER, .priority = 4, + .category = DAMAGE_CATEGORY_STATUS, }, [MOVE_MAX_FLARE] = @@ -20279,13 +20281,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Flare"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_FIRE, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_SUN, }, @@ -20294,13 +20296,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Flutterby"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_BUG, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_LOWER_SP_ATK, }, @@ -20309,13 +20311,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Lightning"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_ELECTRIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_ELECTRIC_TERRAIN, }, @@ -20324,13 +20326,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Strike"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_LOWER_SPEED, }, @@ -20339,13 +20341,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Knuckle"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_FIGHTING, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_ATTACK, }, @@ -20354,13 +20356,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Phantasm"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_GHOST, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_LOWER_DEFENSE, }, @@ -20369,13 +20371,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Hailstorm"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_ICE, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_HAIL, }, @@ -20384,13 +20386,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Ooze"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_POISON, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_SP_ATK, }, @@ -20399,13 +20401,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Geyser"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_WATER, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_RAIN, }, @@ -20414,13 +20416,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Airstream"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_FLYING, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_SPEED, }, @@ -20429,13 +20431,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Starfall"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_FAIRY, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_MISTY_TERRAIN, }, @@ -20444,13 +20446,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Wyrmwind"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_DRAGON, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_LOWER_ATTACK, }, @@ -20459,13 +20461,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Mindstorm"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_PSYCHIC_TERRAIN, }, @@ -20474,13 +20476,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Rockfall"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_ROCK, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_SANDSTORM, }, @@ -20489,15 +20491,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Quake"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_GROUND, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_SP_DEF, + .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_MAX_DARKNESS] = @@ -20505,13 +20507,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Darkness"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 1, + .type = TYPE_DARK, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_LOWER_SP_DEF, }, @@ -20520,13 +20522,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Overgrowth"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_GRASS, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_GRASSY_TERRAIN, }, @@ -20535,13 +20537,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Max Steelspike"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_STEEL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_DEFENSE, }, @@ -20550,13 +20552,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Vine Lash"), .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_GRASS, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_VINE_LASH, }, @@ -20565,13 +20567,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Wildfire"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_FIRE, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_WILDFIRE, }, @@ -20580,13 +20582,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Canonade"), .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_WATER, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_CANNONADE, }, @@ -20595,13 +20597,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Befuddle"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_BUG, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_BUG, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_EFFECT_SPORE_FOES, }, @@ -20610,13 +20612,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Volt Crash"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_ELECTRIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_PARALYZE_FOES, }, @@ -20625,13 +20627,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Gold Rush"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_CONFUSE_FOES_PAY_DAY, }, @@ -20640,13 +20642,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Chi Strike"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_FIGHTING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_FIGHTING, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_CRIT_PLUS, }, @@ -20655,13 +20657,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Terror"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_GHOST, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_GHOST, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_MEAN_LOOK, }, @@ -20670,13 +20672,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Foam Burst"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_WATER, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_LOWER_SPEED_2_FOES, }, @@ -20685,13 +20687,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Resonance"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_ICE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_ICE, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_AURORA_VEIL, }, @@ -20700,13 +20702,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Cuddle"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_INFATUATE_FOES, }, @@ -20715,13 +20717,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Replenish"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_NORMAL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_NORMAL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_RECYCLE_BERRIES, }, @@ -20730,13 +20732,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Malodor"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_POISON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_POISON, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_POISON_FOES, }, @@ -20745,13 +20747,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Meltdown"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_STEEL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_TORMENT_FOES, }, @@ -20760,15 +20762,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Drum Solo"), .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_GRASS, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .ignoresTargetAbility = TRUE, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO + .ignoresTargetAbility = TRUE, }, [MOVE_G_MAX_FIREBALL] = @@ -20776,15 +20778,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Fireball"), .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_FIRE, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .ignoresTargetAbility = TRUE, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO + .ignoresTargetAbility = TRUE, }, [MOVE_G_MAX_HYDROSNIPE] = @@ -20792,15 +20794,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Hydrosnipe"), .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_WATER, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, - .ignoresTargetAbility = TRUE, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO + .ignoresTargetAbility = TRUE, }, [MOVE_G_MAX_WIND_RAGE] = @@ -20808,13 +20810,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Wind Rage"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_FLYING, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_FLYING, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_DEFOG, }, @@ -20823,13 +20825,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Gravitas"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_PSYCHIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_PSYCHIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_GRAVITY, }, @@ -20838,13 +20840,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Stonesurge"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_WATER, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_STEALTH_ROCK, }, @@ -20853,13 +20855,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Volcalith"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_ROCK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_ROCK, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_VOLCALITH, }, @@ -20868,13 +20870,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Tartness"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_GRASS, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_LOWER_EVASIVENESS_FOES, }, @@ -20883,13 +20885,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Sweetness"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_GRASS, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_GRASS, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_AROMATHERAPY, }, @@ -20898,13 +20900,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Sandblast"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_GROUND, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_GROUND, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_SANDBLAST_FOES, }, @@ -20913,13 +20915,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Stun Shock"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_ELECTRIC, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_ELECTRIC, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_POISON_PARALYZE_FOES, }, @@ -20928,13 +20930,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Centiferno"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_FIRE, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_FIRE, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_FIRE_SPIN_FOES, }, @@ -20943,13 +20945,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Smite"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_FAIRY, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_CONFUSE_FOES, }, @@ -20959,13 +20961,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Snooze"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_DARK, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_YAWN_FOE, }, @@ -20974,13 +20976,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Finale"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_FAIRY, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_FAIRY, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_HEAL_TEAM, }, @@ -20989,13 +20991,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Steelsurge"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_STEEL, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_STEEL, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_STEELSURGE, }, @@ -21004,13 +21006,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Depletion"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_DRAGON, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_DRAGON, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_SPITE, }, @@ -21019,13 +21021,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max One Blow"), .description = sNullDescription, .effect = EFFECT_MAX_MOVE, - .type = TYPE_DARK, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_DARK, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_BYPASS_PROTECT, //EFFECT TODO }, @@ -21034,13 +21036,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("G-Max Rapid Flow"), .description = sNullDescription, //ANIM TODO .effect = EFFECT_MAX_MOVE, - .type = TYPE_WATER, - .category = DAMAGE_CATEGORY_PHYSICAL, .power = 10, + .type = TYPE_WATER, .accuracy = 0, - .target = MOVE_TARGET_SELECTED, .pp = 10, + .target = MOVE_TARGET_SELECTED, .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_BYPASS_PROTECT, //EFFECT TODO }, From b55b1eaa5d06ad93c273ee07963a4ce74db5a0db Mon Sep 17 00:00:00 2001 From: Nephrite Date: Sun, 25 Feb 2024 17:54:04 +0900 Subject: [PATCH 14/55] Added word comment --- include/pokemon.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/pokemon.h b/include/pokemon.h index 86041d103a..d3eca335a9 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -483,7 +483,7 @@ struct MoveInfo u32 powderMove:1; u32 danceMove:1; u32 windMove:1; - u32 slicingMove:1; + u32 slicingMove:1; // end of word u32 healingMove:1; u32 minimizeDoubleDamage:1; u32 ignoresTargetAbility:1; From 8671da436ba705d31d75c0c85e2d630ebe00053f Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Sun, 25 Feb 2024 06:13:26 -0300 Subject: [PATCH 15/55] Add LGPE+ Premier Ball Bonus config (#4191) * Add LGPE+ Premier Ball Bonus config * Capitalization * Premier Ball count in message + only give the amount of Premier Balls possible * Review changes * Updated B_TELEPORT_BEHAVIOR to match Premier Ball config * Update src/shop.c Co-authored-by: Bassoonian --------- Co-authored-by: Bassoonian --- data/battle_scripts_1.s | 2 +- include/config/battle.h | 2 +- include/config/item.h | 1 + include/item.h | 1 + include/strings.h | 1 + src/item.c | 52 ++++++++++++++--------------------------- src/shop.c | 28 ++++++++++++++++++---- src/strings.c | 1 + 8 files changed, 46 insertions(+), 42 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 537d92ba52..a72e6617a4 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -4612,7 +4612,7 @@ BattleScript_EffectFutureSight:: goto BattleScript_MoveEnd BattleScript_EffectTeleport:: -.if B_TELEPORT_BEHAVIOR >= GEN_7 +.if B_TELEPORT_BEHAVIOR >= GEN_8 jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_EffectBatonPass jumpifside BS_ATTACKER, B_SIDE_PLAYER, BattleScript_EffectBatonPass .else diff --git a/include/config/battle.h b/include/config/battle.h index 5ec007e686..58ff0e764c 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -103,7 +103,7 @@ // Draining abilities will not heal but will prevent damage. In Gen6+, Heal Block prevents the use of most HP-draining moves. #define B_ROOTED_GROUNDING GEN_LATEST // In Gen4+, Ingrain causes the affected Pokémon to become grounded. #define B_METRONOME_MOVES GEN_LATEST // This config will determine up to which generation will Metronome pull moves from. -#define B_TELEPORT_BEHAVIOR GEN_LATEST // In Gen7+, starting with Pokémon LGPE, Teleport allows the user to swap out with another party member. +#define B_TELEPORT_BEHAVIOR GEN_LATEST // In LGPE onwards (Gen8+ here), Teleport allows the user to swap out with another party member. #define B_BEAT_UP GEN_LATEST // In Gen5+, Beat Up uses a different formula to calculate its damage, and deals Dark-type damage. Prior to Gen 5, each hit also announces the party member's name. #define B_DARK_VOID_FAIL GEN_LATEST // In Gen7+, only Darkrai can use Dark Void. #define B_BURN_HIT_THAW GEN_LATEST // In Gen6+, damaging moves with a chance of burn will thaw the target, regardless if they're fire-type moves or not. diff --git a/include/config/item.h b/include/config/item.h index 36b2fe7d25..9b2f4156d8 100644 --- a/include/config/item.h +++ b/include/config/item.h @@ -17,6 +17,7 @@ #define I_PRICE GEN_LATEST // Some items have varied in value across generations. #define I_BERRY_PRICE GEN_7 // Since Berries have become unplantable (Gen8+), their price has gone up. #define I_POWER_ITEM_BOOST GEN_LATEST // In Gen7+, Power Items grant 8 EVs instead of 4 EVs. +#define I_PREMIER_BALL_BONUS GEN_LATEST // In LGPE onwards (Gen8+ here), you are given a Premier Ball for every 10 Poké Balls of any type and in the same purchase. Previously, it only applied to regular Poké Balls and only 1 could be obtained per purchase. // TM config #define I_REUSABLE_TMS FALSE // In Gen5-8, TMs are reusable. Setting this to TRUE will make all vanilla TMs reusable, though they can also be cherry-picked by setting their importance to 1. diff --git a/include/item.h b/include/item.h index e3a91d333e..53121d1127 100644 --- a/include/item.h +++ b/include/item.h @@ -43,6 +43,7 @@ bool8 IsBagPocketNonEmpty(u8 pocket); bool8 CheckBagHasItem(u16 itemId, u16 count); bool8 HasAtLeastOneBerry(void); bool8 CheckBagHasSpace(u16 itemId, u16 count); +u32 GetFreeSpaceForItemInBag(u16 itemId); bool8 AddBagItem(u16 itemId, u16 count); bool8 RemoveBagItem(u16 itemId, u16 count); u8 GetPocketByItemId(u16 itemId); diff --git a/include/strings.h b/include/strings.h index 431f90df16..af0ee0bbba 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1026,6 +1026,7 @@ extern const u8 gText_ThankYouIllSendItHome[]; extern const u8 gText_ThanksIllSendItHome[]; extern const u8 gText_SpaceForVar1Full[]; extern const u8 gText_ThrowInPremierBall[]; +extern const u8 gText_ThrowInPremierBalls[]; extern const u8 gText_ShopBuy[]; extern const u8 gText_ShopSell[]; extern const u8 gText_ShopQuit[]; diff --git a/src/item.c b/src/item.c index a90ed3aefa..c9318ee4a7 100644 --- a/src/item.c +++ b/src/item.c @@ -160,57 +160,39 @@ bool8 HasAtLeastOneBerry(void) bool8 CheckBagHasSpace(u16 itemId, u16 count) { - u8 i; - u8 pocket = ItemId_GetPocket(itemId) - 1; - u16 ownedCount; - if (ItemId_GetPocket(itemId) == POCKET_NONE) return FALSE; if (InBattlePyramid() || FlagGet(FLAG_STORING_ITEMS_IN_PYRAMID_BAG) == TRUE) return CheckPyramidBagHasSpace(itemId, count); + return GetFreeSpaceForItemInBag(itemId) >= count; +} + +u32 GetFreeSpaceForItemInBag(u16 itemId) +{ + u8 i; + u8 pocket = ItemId_GetPocket(itemId) - 1; + u16 ownedCount; + u32 spaceForItem = 0; + + if (ItemId_GetPocket(itemId) == POCKET_NONE) + return 0; + // Check space in any existing item slots that already contain this item for (i = 0; i < gBagPockets[pocket].capacity; i++) { if (gBagPockets[pocket].itemSlots[i].itemId == itemId) { ownedCount = GetBagItemQuantity(&gBagPockets[pocket].itemSlots[i].quantity); - if (ownedCount + count <= MAX_BAG_ITEM_CAPACITY) - return TRUE; - if (pocket == TMHM_POCKET || pocket == BERRIES_POCKET) - return FALSE; - count -= (MAX_BAG_ITEM_CAPACITY - ownedCount); - if (count == 0) - break; //should be return TRUE, but that doesn't match + spaceForItem += max(0, MAX_BAG_ITEM_CAPACITY - ownedCount); } - } - - // Check space in empty item slots - if (count > 0) - { - for (i = 0; i < gBagPockets[pocket].capacity; i++) + else if (gBagPockets[pocket].itemSlots[i].itemId == ITEM_NONE) { - if (gBagPockets[pocket].itemSlots[i].itemId == 0) - { - if (count > MAX_BAG_ITEM_CAPACITY) - { - if (pocket == TMHM_POCKET || pocket == BERRIES_POCKET) - return FALSE; - count -= MAX_BAG_ITEM_CAPACITY; - } - else - { - count = 0; //should be return TRUE, but that doesn't match - break; - } - } + spaceForItem += MAX_BAG_ITEM_CAPACITY; } - if (count > 0) - return FALSE; // No more item slots. The bag is full } - - return TRUE; + return spaceForItem; } bool8 AddBagItem(u16 itemId, u16 count) diff --git a/src/shop.c b/src/shop.c index b1557068b8..88d66a43e9 100644 --- a/src/shop.c +++ b/src/shop.c @@ -1159,13 +1159,31 @@ static void Task_ReturnToItemListAfterItemPurchase(u8 taskId) if (JOY_NEW(A_BUTTON | B_BUTTON)) { - PlaySE(SE_SELECT); - - // Purchasing 10+ Poke Balls gets the player a Premier Ball - if (tItemId == ITEM_POKE_BALL && tItemCount >= 10 && AddBagItem(ITEM_PREMIER_BALL, 1) == TRUE) - BuyMenuDisplayMessage(taskId, gText_ThrowInPremierBall, BuyMenuReturnToItemList); + u16 premierBallsToAdd = tItemCount / 10; + if (premierBallsToAdd >= 1 + && ((I_PREMIER_BALL_BONUS <= GEN_7 && tItemId == ITEM_POKE_BALL) + || (I_PREMIER_BALL_BONUS >= GEN_8 && (ItemId_GetPocket(tItemId) == POCKET_POKE_BALLS)))) + { + u32 spaceAvailable = GetFreeSpaceForItemInBag(ITEM_PREMIER_BALL); + if (spaceAvailable < premierBallsToAdd) + premierBallsToAdd = spaceAvailable; + } else + { + premierBallsToAdd = 0; + } + + PlaySE(SE_SELECT); + AddBagItem(ITEM_PREMIER_BALL, premierBallsToAdd); + if (premierBallsToAdd > 0) + { + ConvertIntToDecimalStringN(gStringVar1, premierBallsToAdd, STR_CONV_MODE_LEFT_ALIGN, MAX_ITEM_DIGITS); + BuyMenuDisplayMessage(taskId, (premierBallsToAdd >= 2 ? gText_ThrowInPremierBalls : gText_ThrowInPremierBall), BuyMenuReturnToItemList); + } + else + { BuyMenuReturnToItemList(taskId); + } } } diff --git a/src/strings.c b/src/strings.c index c98ff2519e..4fde380240 100644 --- a/src/strings.c +++ b/src/strings.c @@ -362,6 +362,7 @@ const u8 gText_SpaceForVar1Full[] = _("The space for {STR_VAR_1} is full.{PAUSE_ const u8 gText_AnythingElseICanHelp[] = _("Is there anything else I can help\nyou with?"); const u8 gText_CanIHelpWithAnythingElse[] = _("Can I help you with anything else?"); const u8 gText_ThrowInPremierBall[] = _("I'll throw in a PREMIER BALL, too.{PAUSE_UNTIL_PRESS}"); +const u8 gText_ThrowInPremierBalls[] = _("I'll throw in {STR_VAR_1} PREMIER BALLS, too.{PAUSE_UNTIL_PRESS}"); const u8 gText_CantBuyKeyItem[] = _("{STR_VAR_2}? Oh, no.\nI can't buy that.{PAUSE_UNTIL_PRESS}"); const u8 gText_HowManyToSell[] = _("{STR_VAR_2}?\nHow many would you like to sell?"); const u8 gText_ICanPayVar1[] = _("I can pay ¥{STR_VAR_1}.\nWould that be okay?"); From 9db03fb2630ce4d107a99a907ed2a33e95147ec3 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Sun, 25 Feb 2024 18:22:21 +0900 Subject: [PATCH 16/55] Removed GET_MOVE_EFFECT --- include/battle.h | 3 +-- src/battle_script_commands.c | 17 ++++++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/include/battle.h b/include/battle.h index b1e3811929..a90a4d848a 100644 --- a/include/battle.h +++ b/include/battle.h @@ -60,8 +60,7 @@ struct __attribute__((packed, aligned(2))) BattleMoveEffect u16 padding:9; }; -#define GET_MOVE_EFFECT(move) gBattleMoveEffects[gMovesInfo[move].effect] -#define GET_MOVE_BATTLESCRIPT(move) GET_MOVE_EFFECT(move).battleScript +#define GET_MOVE_BATTLESCRIPT(move) gBattleMoveEffects[gMovesInfo[move].effect].battleScript struct ResourceFlags { diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index f4060fc83b..9d796c4e9f 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1370,7 +1370,7 @@ static void Cmd_attackcanceler(void) gHitMarker |= HITMARKER_OBEYS; // Check if no available target present on the field or if Sky Battles ban the move if ((NoTargetPresent(gBattlerAttacker, gCurrentMove) - && (!GET_MOVE_EFFECT(gCurrentMove).twoTurnEffect || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) + && (!gBattleMoveEffects[gMovesInfo[gCurrentMove].effect].twoTurnEffect || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) || (IsMoveNotAllowedInSkyBattles(gCurrentMove))) { if (gMovesInfo[gCurrentMove].effect == EFFECT_FLING) // Edge case for removing a mon's item when there is no target available after using Fling. @@ -1378,7 +1378,7 @@ static void Cmd_attackcanceler(void) else gBattlescriptCurrInstr = BattleScript_FailedFromAtkString; - if (!GET_MOVE_EFFECT(gCurrentMove).twoTurnEffect || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) + if (!gBattleMoveEffects[gMovesInfo[gCurrentMove].effect].twoTurnEffect || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) CancelMultiTurnMoves(gBattlerAttacker); return; } @@ -1457,7 +1457,7 @@ static void Cmd_attackcanceler(void) } else if (IsBattlerProtected(gBattlerTarget, gCurrentMove) && (gCurrentMove != MOVE_CURSE || IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST)) - && (!GET_MOVE_EFFECT(gCurrentMove).twoTurnEffect || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) + && (!gBattleMoveEffects[gMovesInfo[gCurrentMove].effect].twoTurnEffect || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) && gMovesInfo[gCurrentMove].effect != EFFECT_SUCKER_PUNCH && gMovesInfo[gCurrentMove].effect != EFFECT_UPPER_HAND) { @@ -9656,7 +9656,9 @@ static void Cmd_various(void) VARIOUS_ARGS(const u8 *failInstr); u16 move = gLastPrintedMoves[gBattlerTarget]; if (move == MOVE_NONE || move == MOVE_UNAVAILABLE || MoveHasMoveEffectSelf(move, MOVE_EFFECT_RECHARGE) - || gMovesInfo[move].instructBanned || GET_MOVE_EFFECT(move).twoTurnEffect || IsDynamaxed(gBattlerTarget)) + || gMovesInfo[move].instructBanned + || gBattleMoveEffects[gMovesInfo[move].effect].twoTurnEffect + || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -10737,7 +10739,8 @@ static void TryResetProtectUseCounter(u32 battler) { u32 lastMove = gLastResultingMoves[battler]; if (lastMove == MOVE_UNAVAILABLE - || (!GET_MOVE_EFFECT(lastMove).usesProtectCounter && (B_ALLY_SWITCH_FAIL_CHANCE >= GEN_9 && gMovesInfo[lastMove].effect != EFFECT_ALLY_SWITCH))) + || (!gBattleMoveEffects[gMovesInfo[lastMove].effect].usesProtectCounter + && (B_ALLY_SWITCH_FAIL_CHANCE >= GEN_9 && gMovesInfo[lastMove].effect != EFFECT_ALLY_SWITCH))) gDisableStructs[battler].protectUses = 0; } @@ -12718,7 +12721,7 @@ static void Cmd_settypetorandomresistance(void) { gBattlescriptCurrInstr = cmd->failInstr; } - else if (GET_MOVE_EFFECT(gLastLandedMoves[gBattlerAttacker]).twoTurnEffect + else if (gBattleMoveEffects[gMovesInfo[gLastLandedMoves[gBattlerAttacker]].effect].twoTurnEffect && gBattleMons[gLastHitBy[gBattlerAttacker]].status2 & STATUS2_MULTIPLETURNS) { gBattlescriptCurrInstr = cmd->failInstr; @@ -12834,7 +12837,7 @@ static void Cmd_trychoosesleeptalkmove(void) for (i = 0; i < MAX_MON_MOVES; i++) { if (gMovesInfo[gBattleMons[gBattlerAttacker].moves[i]].sleepTalkBanned - || GET_MOVE_EFFECT(gBattleMons[gBattlerAttacker].moves[i]).twoTurnEffect) + || gBattleMoveEffects[gMovesInfo[gBattleMons[gBattlerAttacker].moves[i]].effect].twoTurnEffect) { unusableMovesBits |= gBitTable[i]; } From d2e84afd03ca658e6500088c467357d75512dafa Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 25 Feb 2024 11:20:23 +0100 Subject: [PATCH 17/55] AI sets up double flags correctly (#4228) * Fix AI double flag not being set up * ai vs ai doubles --- src/battle_ai_main.c | 11 ++++++++++- src/battle_main.c | 16 ++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 809784c159..78ecf11675 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -171,14 +171,19 @@ static u32 GetAiFlags(u16 trainerId) } if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { flags |= AI_FLAG_DOUBLE_BATTLE; + } return flags; } void BattleAI_SetupFlags(void) { - AI_THINKING_STRUCT->aiFlags[B_POSITION_PLAYER_LEFT] = 0; // player has no AI + if (IsAiVsAiBattle()) + AI_THINKING_STRUCT->aiFlags[B_POSITION_PLAYER_LEFT] = GetAiFlags(gPartnerTrainerId); + else + AI_THINKING_STRUCT->aiFlags[B_POSITION_PLAYER_LEFT] = 0; // player has no AI #if DEBUG_OVERWORLD_MENU == TRUE if (gIsDebugBattle) @@ -208,6 +213,10 @@ void BattleAI_SetupFlags(void) { AI_THINKING_STRUCT->aiFlags[B_POSITION_PLAYER_RIGHT] = GetAiFlags(gPartnerTrainerId - TRAINER_PARTNER(PARTNER_NONE)); } + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && IsAiVsAiBattle()) + { + AI_THINKING_STRUCT->aiFlags[B_POSITION_PLAYER_RIGHT] = AI_THINKING_STRUCT->aiFlags[B_POSITION_PLAYER_LEFT]; + } else { AI_THINKING_STRUCT->aiFlags[B_POSITION_PLAYER_RIGHT] = 0; // player diff --git a/src/battle_main.c b/src/battle_main.c index eed1620dd9..b4430100d2 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -548,6 +548,13 @@ static void CB2_InitBattleInternal(void) if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) gBattleTerrain = BATTLE_TERRAIN_BUILDING; + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & (BATTLE_TYPE_FRONTIER + | BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_TRAINER_HILL))) + { + gBattleTypeFlags |= (IsTrainerDoubleBattle(gTrainerBattleOpponent_A) ? BATTLE_TYPE_DOUBLE : 0); + } + InitBattleBgsVideo(); LoadBattleTextboxAndBackground(); ResetSpriteData(); @@ -2056,13 +2063,6 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir if (trainerNum == TRAINER_SECRET_BASE) return 0; retVal = CreateNPCTrainerPartyFromTrainer(party, GetTrainerStructFromId(trainerNum), firstTrainer, gBattleTypeFlags); - - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & (BATTLE_TYPE_FRONTIER - | BATTLE_TYPE_EREADER_TRAINER - | BATTLE_TYPE_TRAINER_HILL))) - { - gBattleTypeFlags |= (IsTrainerDoubleBattle(trainerNum) ? BATTLE_TYPE_DOUBLE : 0); - } return retVal; } @@ -3711,7 +3711,7 @@ static void DoBattleIntro(void) gBattleStruct->overworldWeatherDone = FALSE; SetAiLogicDataForTurn(AI_DATA); // get assumed abilities, hold effects, etc of all battlers Ai_InitPartyStruct(); // Save mons party counts, and first 2/4 mons on the battlefield. - + // Try to set a status to start the battle with gBattleStruct->startingStatus = 0; if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS && GetTrainerStartingStatusFromId(gTrainerBattleOpponent_B)) From 174c6fc9999c82c5db57ea1f52ab8edffb154301 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Mon, 26 Feb 2024 14:21:38 +0900 Subject: [PATCH 18/55] Renamed "MoveHasMoveEffect" functions --- include/battle_util.h | 10 +++--- src/battle_ai_main.c | 2 +- src/battle_ai_util.c | 10 +++--- src/battle_dome.c | 2 +- src/battle_script_commands.c | 8 ++--- src/battle_tv.c | 10 +++--- src/battle_util.c | 30 ++++++++--------- test/battle/ability/contrary.c | 2 +- test/battle/ability/corrosion.c | 4 +-- test/battle/ability/hyper_cutter.c | 4 +-- test/battle/ability/immunity.c | 2 +- test/battle/ability/keen_eye.c | 2 +- test/battle/ability/own_tempo.c | 2 +- test/battle/ability/pastel_veil.c | 4 +-- test/battle/ability/purifying_salt.c | 2 +- test/battle/ability/shield_dust.c | 32 +++++++++---------- test/battle/ability/stench.c | 4 +-- test/battle/ai_calc_best_move_score.c | 4 +-- test/battle/ai_check_viability.c | 8 ++--- test/battle/form_change/status.c | 2 +- test/battle/hold_effect/air_balloon.c | 2 +- test/battle/hold_effect/clear_amulet.c | 12 +++---- test/battle/hold_effect/red_card.c | 2 +- test/battle/hold_effect/white_herb.c | 4 +-- test/battle/move.c | 2 +- test/battle/move_effect/aura_wheel.c | 2 +- test/battle/move_effect/axe_kick.c | 2 +- test/battle/move_effect/barb_barrage.c | 2 +- test/battle/move_effect/bug_bite.c | 2 +- test/battle/move_effect/burn_hit.c | 10 +++--- test/battle/move_effect/burn_up.c | 2 +- test/battle/move_effect/clanging_scales.c | 2 +- test/battle/move_effect/confusion_hit.c | 4 +-- test/battle/move_effect/dire_claw.c | 2 +- test/battle/move_effect/double_shock.c | 2 +- test/battle/move_effect/flinch_hit.c | 2 +- test/battle/move_effect/flinch_status.c | 12 +++---- test/battle/move_effect/freeze_hit.c | 4 +-- .../move_effect/hit_set_entry_hazardss.c | 4 +-- test/battle/move_effect/jaw_lock.c | 2 +- test/battle/move_effect/make_it_rain.c | 4 +-- test/battle/move_effect/paralyze_hit.c | 4 +-- test/battle/move_effect/pay_day.c | 2 +- test/battle/move_effect/pledge.c | 4 +-- test/battle/move_effect/poison_hit.c | 4 +-- test/battle/move_effect/psychic_noise.c | 2 +- test/battle/move_effect/rampage.c | 2 +- test/battle/move_effect/rapid_spin.c | 8 ++--- test/battle/move_effect/recoil.c | 2 +- test/battle/move_effect/relic_song.c | 2 +- test/battle/move_effect/sp_atk_two_down.c | 2 +- test/battle/move_effect/spin_out.c | 2 +- test/battle/move_effect/throat_chop.c | 2 +- test/battle/move_effect/tri_attack.c | 2 +- test/battle/move_effect/triple_arrows.c | 4 +-- test/battle/move_effect/two_turn_moves.c | 4 +-- test/battle/move_effect/upper_hand.c | 2 +- 57 files changed, 136 insertions(+), 136 deletions(-) diff --git a/include/battle_util.h b/include/battle_util.h index 07a0a29b96..6d5447de17 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -222,11 +222,11 @@ void CopyMonAbilityAndTypesToBattleMon(u32 battler, struct Pokemon *mon); void RecalcBattlerStats(u32 battler, struct Pokemon *mon); bool32 IsAlly(u32 battlerAtk, u32 battlerDef); bool32 IsGen6ExpShareEnabled(void); -bool32 MoveHasMoveEffect(u32 move, u32 moveEffect); -bool32 MoveHasMoveEffectWithChance(u32 move, u32 moveEffect, u32 chance); -bool32 MoveHasMoveEffectSelf(u32 move, u32 moveEffect); -bool32 MoveHasMoveEffectSelfArg(u32 move, u32 moveEffect, u32 argument); -bool32 MoveHasChargeTurnMoveEffect(u32 move); +bool32 MoveHasAdditionalEffect(u32 move, u32 moveEffect); +bool32 MoveHasAdditionalEffectWithChance(u32 move, u32 moveEffect, u32 chance); +bool32 MoveHasAdditionalEffectSelf(u32 move, u32 moveEffect); +bool32 MoveHasAdditionalEffectSelfArg(u32 move, u32 moveEffect, u32 argument); +bool32 MoveHasChargeTurnAdditionalEffect(u32 move); bool32 CanSleep(u32 battler); bool32 CanBePoisoned(u32 battlerAttacker, u32 battlerTarget); diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 05f311b092..3c69d4465b 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -2507,7 +2507,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (instructedMove == MOVE_NONE || gMovesInfo[instructedMove].instructBanned - || MoveHasMoveEffectSelf(instructedMove, MOVE_EFFECT_RECHARGE) + || MoveHasAdditionalEffectSelf(instructedMove, MOVE_EFFECT_RECHARGE) || IsZMove(instructedMove) || (gLockedMoves[battlerDef] != 0 && gLockedMoves[battlerDef] != 0xFFFF) || gBattleMons[battlerDef].status2 & STATUS2_MULTIPLETURNS diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 0850cee2a5..9ea8917de1 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -1722,7 +1722,7 @@ bool32 HasMoveWithMoveEffect(u32 battlerId, u32 moveEffect) for (i = 0; i < MAX_MON_MOVES; i++) { if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE - && MoveHasMoveEffect(moves[i], moveEffect)) + && MoveHasAdditionalEffect(moves[i], moveEffect)) return TRUE; } @@ -1738,7 +1738,7 @@ bool32 HasMoveWithMoveEffectExcept(u32 battlerId, u32 moveEffect, u32 exception) { if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && gMovesInfo[moves[i]].effect != exception - && MoveHasMoveEffect(moves[i], moveEffect)) + && MoveHasAdditionalEffect(moves[i], moveEffect)) return TRUE; } @@ -1834,8 +1834,8 @@ bool32 IsTrappingMove(u32 move) //case EFFECT_NO_RETREAT: // TODO return TRUE; default: - return MoveHasMoveEffect(move, MOVE_EFFECT_PREVENT_ESCAPE) - || MoveHasMoveEffect(move, MOVE_EFFECT_WRAP); + return MoveHasAdditionalEffect(move, MOVE_EFFECT_PREVENT_ESCAPE) + || MoveHasAdditionalEffect(move, MOVE_EFFECT_WRAP); } } @@ -2727,7 +2727,7 @@ bool32 ShouldTrap(u32 battlerAtk, u32 battlerDef, u32 move) bool32 ShouldFakeOut(u32 battlerAtk, u32 battlerDef, u32 move) { - if ((!gDisableStructs[battlerAtk].isFirstTurn && MoveHasMoveEffectWithChance(move, MOVE_EFFECT_FLINCH, 100)) + if ((!gDisableStructs[battlerAtk].isFirstTurn && MoveHasAdditionalEffectWithChance(move, MOVE_EFFECT_FLINCH, 100)) || AI_DATA->abilities[battlerAtk] == ABILITY_GORILLA_TACTICS || AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_CHOICE_BAND || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_COVERT_CLOAK diff --git a/src/battle_dome.c b/src/battle_dome.c index e439dad8c5..ad49731cfe 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -4062,7 +4062,7 @@ static bool32 IsDomeStatusMoveEffect(u32 move) case EFFECT_CURSE: return TRUE; default: - return MoveHasMoveEffect(move, MOVE_EFFECT_WRAP); + return MoveHasAdditionalEffect(move, MOVE_EFFECT_WRAP); } } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 9d796c4e9f..f31fc597c4 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -6241,7 +6241,7 @@ static void Cmd_moveend(void) *(gBattleStruct->moveTarget + gBattlerAttacker) = gSpecialStatuses[gBattlerAttacker].dancerOriginalTarget & 0x3; if (B_RAMPAGE_CANCELLING >= GEN_5 - && MoveHasMoveEffectSelf(gCurrentMove, MOVE_EFFECT_THRASH) // If we're rampaging + && MoveHasAdditionalEffectSelf(gCurrentMove, MOVE_EFFECT_THRASH) // If we're rampaging && (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) // And it is unusable && (gBattleMons[gBattlerAttacker].status2 & STATUS2_LOCK_CONFUSE) != STATUS2_LOCK_CONFUSE_TURN(1)) // And won't end this turn CancelMultiTurnMoves(gBattlerAttacker); // Cancel it @@ -9655,7 +9655,7 @@ static void Cmd_various(void) { VARIOUS_ARGS(const u8 *failInstr); u16 move = gLastPrintedMoves[gBattlerTarget]; - if (move == MOVE_NONE || move == MOVE_UNAVAILABLE || MoveHasMoveEffectSelf(move, MOVE_EFFECT_RECHARGE) + if (move == MOVE_NONE || move == MOVE_UNAVAILABLE || MoveHasAdditionalEffectSelf(move, MOVE_EFFECT_RECHARGE) || gMovesInfo[move].instructBanned || gBattleMoveEffects[gMovesInfo[move].effect].twoTurnEffect || IsDynamaxed(gBattlerTarget)) @@ -11710,7 +11710,7 @@ static void Cmd_twoturnmoveschargestringandanimation(void) CMD_ARGS(const u8 *animationThenStringPtr); gBattleScripting.savedStringId = LOHALF(gMovesInfo[gCurrentMove].argument); - if (B_UPDATED_MOVE_DATA < GEN_5 || MoveHasChargeTurnMoveEffect(gCurrentMove)) + if (B_UPDATED_MOVE_DATA < GEN_5 || MoveHasChargeTurnAdditionalEffect(gCurrentMove)) gBattlescriptCurrInstr = cmd->animationThenStringPtr; else gBattlescriptCurrInstr = cmd->nextInstr; @@ -13689,7 +13689,7 @@ static bool32 CheckIfCanFireTwoTurnMoveNow(u8 battler, bool8 checkChargeTurnEffe return FALSE; // If this move has charge turn effects, it must charge, activate them, then try to fire - if (checkChargeTurnEffects && MoveHasChargeTurnMoveEffect(gCurrentMove)) + if (checkChargeTurnEffects && MoveHasChargeTurnAdditionalEffect(gCurrentMove)) return FALSE; // Insert custom conditions here diff --git a/src/battle_tv.c b/src/battle_tv.c index cb70d1deed..7bbdc50503 100644 --- a/src/battle_tv.c +++ b/src/battle_tv.c @@ -942,15 +942,15 @@ static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3) // Various cases to add/remove points if (gMovesInfo[arg2].recoil > 0) baseFromEffect++; // Recoil moves - if (MoveHasMoveEffect(arg2, MOVE_EFFECT_RAPIDSPIN)) + if (MoveHasAdditionalEffect(arg2, MOVE_EFFECT_RAPIDSPIN)) baseFromEffect++; - if (MoveHasMoveEffect(arg2, MOVE_EFFECT_SP_ATK_TWO_DOWN) || MoveHasMoveEffect(arg2, MOVE_EFFECT_ATK_DEF_DOWN)) + if (MoveHasAdditionalEffect(arg2, MOVE_EFFECT_SP_ATK_TWO_DOWN) || MoveHasAdditionalEffect(arg2, MOVE_EFFECT_ATK_DEF_DOWN)) baseFromEffect += 2; // Overheat, Superpower, etc. - if (MoveHasMoveEffect(arg2, MOVE_EFFECT_STEAL_ITEM)) + if (MoveHasAdditionalEffect(arg2, MOVE_EFFECT_STEAL_ITEM)) baseFromEffect += 3; - if (MoveHasMoveEffect(arg2, MOVE_EFFECT_WRAP) || MoveHasMoveEffectSelf(arg2, MOVE_EFFECT_THRASH)) + if (MoveHasAdditionalEffect(arg2, MOVE_EFFECT_WRAP) || MoveHasAdditionalEffectSelf(arg2, MOVE_EFFECT_THRASH)) baseFromEffect += 3; - if (MoveHasMoveEffect(arg2, MOVE_EFFECT_RECHARGE)) + if (MoveHasAdditionalEffect(arg2, MOVE_EFFECT_RECHARGE)) baseFromEffect += 4; movePoints->points[atkSide][gBattlerPartyIndexes[gBattlerAttacker] * 4 + arg1] += baseFromEffect; diff --git a/src/battle_util.c b/src/battle_util.c index f13ce66d5d..5a30eb3ed4 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -3445,7 +3445,7 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) case CANCELLER_THAW: // move thawing if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FREEZE) { - if (!(MoveHasMoveEffectSelfArg(gCurrentMove, MOVE_EFFECT_REMOVE_ARG_TYPE, TYPE_FIRE) && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_FIRE))) + if (!(MoveHasAdditionalEffectSelfArg(gCurrentMove, MOVE_EFFECT_REMOVE_ARG_TYPE, TYPE_FIRE) && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_FIRE))) { gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_FREEZE; BattleScriptPushCursor(); @@ -3456,7 +3456,7 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) } if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FROSTBITE && gMovesInfo[gCurrentMove].thawsUser) { - if (!(MoveHasMoveEffectSelfArg(gCurrentMove, MOVE_EFFECT_REMOVE_ARG_TYPE, TYPE_FIRE) && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_FIRE))) + if (!(MoveHasAdditionalEffectSelfArg(gCurrentMove, MOVE_EFFECT_REMOVE_ARG_TYPE, TYPE_FIRE) && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_FIRE))) { gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_FROSTBITE; BattleScriptPushCursor(); @@ -5609,7 +5609,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && RandomWeighted(RNG_STENCH, 9, 1) && TARGET_TURN_DAMAGED - && !MoveHasMoveEffect(gCurrentMove, MOVE_EFFECT_FLINCH)) + && !MoveHasAdditionalEffect(gCurrentMove, MOVE_EFFECT_FLINCH)) { gBattleScripting.moveEffect = MOVE_EFFECT_FLINCH; BattleScriptPushCursor(); @@ -11007,7 +11007,7 @@ bool32 IsGen6ExpShareEnabled(void) /* Quick way of checking if a move has move effects with match a few comma-separated conditions. Each condition has to check a field of AdditionalEffect. */ -#define RETURN_MOVE_HAS_MOVE_EFFECT_WITH(condition1, ...) \ +#define RETURN_HAS_MOVE_ADDITIONAL_EFFECT(condition1, ...) \ u32 i; \ GET_ADDITIONAL_EFFECTS_AND_COUNT(move, count, effects); \ for (i = 0; i < count; i++) \ @@ -11018,34 +11018,34 @@ comma-separated conditions. Each condition has to check a field of AdditionalEff return FALSE; -bool32 MoveHasMoveEffect(u32 move, u32 moveEffect) +bool32 MoveHasAdditionalEffect(u32 move, u32 moveEffect) { - RETURN_MOVE_HAS_MOVE_EFFECT_WITH(moveEffect == moveEffect, self == FALSE) + RETURN_HAS_MOVE_ADDITIONAL_EFFECT(moveEffect == moveEffect, self == FALSE) } -bool32 MoveHasMoveEffectWithChance(u32 move, u32 moveEffect, u32 chance) +bool32 MoveHasAdditionalEffectWithChance(u32 move, u32 moveEffect, u32 chance) { - RETURN_MOVE_HAS_MOVE_EFFECT_WITH(moveEffect == moveEffect, chance == chance) + RETURN_HAS_MOVE_ADDITIONAL_EFFECT(moveEffect == moveEffect, chance == chance) } -bool32 MoveHasMoveEffectSelf(u32 move, u32 moveEffect) +bool32 MoveHasAdditionalEffectSelf(u32 move, u32 moveEffect) { - RETURN_MOVE_HAS_MOVE_EFFECT_WITH(moveEffect == moveEffect, self == TRUE) + RETURN_HAS_MOVE_ADDITIONAL_EFFECT(moveEffect == moveEffect, self == TRUE) } -bool32 MoveHasMoveEffectSelfArg(u32 move, u32 moveEffect, u32 argument) +bool32 MoveHasAdditionalEffectSelfArg(u32 move, u32 moveEffect, u32 argument) { - return (gMovesInfo[move].argument == argument) && MoveHasMoveEffectSelf(move, moveEffect); + return (gMovesInfo[move].argument == argument) && MoveHasAdditionalEffectSelf(move, moveEffect); } -bool32 MoveHasChargeTurnMoveEffect(u32 move) +bool32 MoveHasChargeTurnAdditionalEffect(u32 move) { - RETURN_MOVE_HAS_MOVE_EFFECT_WITH(onChargeTurnOnly == TRUE) + RETURN_HAS_MOVE_ADDITIONAL_EFFECT(onChargeTurnOnly == TRUE) } bool32 MoveIsAffectedBySheerForce(u16 move) { - RETURN_MOVE_HAS_MOVE_EFFECT_WITH(chance > 0) + RETURN_HAS_MOVE_ADDITIONAL_EFFECT(chance > 0) } bool8 CanMonParticipateInSkyBattle(struct Pokemon *mon) diff --git a/test/battle/ability/contrary.c b/test/battle/ability/contrary.c index 19c52a776d..4df0bc39ed 100644 --- a/test/battle/ability/contrary.c +++ b/test/battle/ability/contrary.c @@ -82,7 +82,7 @@ SINGLE_BATTLE_TEST("Contrary raises stats after using a move which would normall PARAMETRIZE { ability = ABILITY_CONTRARY; } PARAMETRIZE { ability = ABILITY_TANGLED_FEET; } GIVEN { - ASSUME(MoveHasMoveEffectSelf(MOVE_OVERHEAT, MOVE_EFFECT_SP_ATK_TWO_DOWN) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_OVERHEAT, MOVE_EFFECT_SP_ATK_TWO_DOWN) == TRUE); ASSUME(gMovesInfo[MOVE_OVERHEAT].category == DAMAGE_CATEGORY_SPECIAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_SPINDA) { Ability(ability); } diff --git a/test/battle/ability/corrosion.c b/test/battle/ability/corrosion.c index a7b86ecc19..87477ddbcc 100644 --- a/test/battle/ability/corrosion.c +++ b/test/battle/ability/corrosion.c @@ -9,7 +9,7 @@ SINGLE_BATTLE_TEST("Corrosion can poison or badly poison a Pokemon regardless of PARAMETRIZE { species = SPECIES_BELDUM; } GIVEN { - ASSUME(MoveHasMoveEffect(MOVE_TWINEEDLE, MOVE_EFFECT_POISON) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_TWINEEDLE, MOVE_EFFECT_POISON) == TRUE); PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); } OPPONENT(species); } WHEN { @@ -49,7 +49,7 @@ SINGLE_BATTLE_TEST("Corrosion can poison or badly poison a Steel type with a sta SINGLE_BATTLE_TEST("Corrosion does not effect poison type damaging moves if the target is immune to it") { GIVEN { - ASSUME(MoveHasMoveEffect(MOVE_SLUDGE_BOMB, MOVE_EFFECT_POISON) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_SLUDGE_BOMB, MOVE_EFFECT_POISON) == TRUE); PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); } OPPONENT(SPECIES_BELDUM); } WHEN { diff --git a/test/battle/ability/hyper_cutter.c b/test/battle/ability/hyper_cutter.c index c9ae17170a..0d1306f118 100644 --- a/test/battle/ability/hyper_cutter.c +++ b/test/battle/ability/hyper_cutter.c @@ -79,7 +79,7 @@ SINGLE_BATTLE_TEST("Hyper Cutter is ignored by Mold Breaker") SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Attack stage reduction from moves used by the user") { GIVEN { - ASSUME(MoveHasMoveEffectSelf(MOVE_SUPERPOWER, MOVE_EFFECT_ATK_DEF_DOWN) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_SUPERPOWER, MOVE_EFFECT_ATK_DEF_DOWN) == TRUE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } } WHEN { @@ -117,7 +117,7 @@ SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Spectral Thief from resetting p { GIVEN { ASSUME(gMovesInfo[MOVE_SWORDS_DANCE].effect == EFFECT_ATTACK_UP_2); - ASSUME(MoveHasMoveEffect(MOVE_SPECTRAL_THIEF, MOVE_EFFECT_SPECTRAL_THIEF)); + ASSUME(MoveHasAdditionalEffect(MOVE_SPECTRAL_THIEF, MOVE_EFFECT_SPECTRAL_THIEF)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } } WHEN { diff --git a/test/battle/ability/immunity.c b/test/battle/ability/immunity.c index 8c9d4f8da8..df5d1518e8 100644 --- a/test/battle/ability/immunity.c +++ b/test/battle/ability/immunity.c @@ -4,7 +4,7 @@ SINGLE_BATTLE_TEST("Immunity prevents Poison Sting poison") { GIVEN { - ASSUME(MoveHasMoveEffect(MOVE_POISON_STING, MOVE_EFFECT_POISON) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_POISON_STING, MOVE_EFFECT_POISON) == TRUE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_SNORLAX) { Ability(ABILITY_IMMUNITY); } } WHEN { diff --git a/test/battle/ability/keen_eye.c b/test/battle/ability/keen_eye.c index 61515269b9..29797ef7cd 100644 --- a/test/battle/ability/keen_eye.c +++ b/test/battle/ability/keen_eye.c @@ -174,7 +174,7 @@ SINGLE_BATTLE_TEST("Keen Eye & Gen9+ Illuminate don't prevent Spectral Thief fro GIVEN { ASSUME(gMovesInfo[MOVE_HONE_CLAWS].effect == EFFECT_ATTACK_ACCURACY_UP); - ASSUME(MoveHasMoveEffect(MOVE_SPECTRAL_THIEF, MOVE_EFFECT_SPECTRAL_THIEF) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_SPECTRAL_THIEF, MOVE_EFFECT_SPECTRAL_THIEF) == TRUE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(species) { Ability(ability); } } WHEN { diff --git a/test/battle/ability/own_tempo.c b/test/battle/ability/own_tempo.c index 4623dfbb0c..04697aad32 100644 --- a/test/battle/ability/own_tempo.c +++ b/test/battle/ability/own_tempo.c @@ -44,7 +44,7 @@ SINGLE_BATTLE_TEST("Own Tempo prevents confusion from moves by the opponent") SINGLE_BATTLE_TEST("Own Tempo prevents confusion from moves by the user") { GIVEN { - ASSUME(MoveHasMoveEffectSelf(MOVE_PETAL_DANCE, MOVE_EFFECT_THRASH)); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_PETAL_DANCE, MOVE_EFFECT_THRASH)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); }; } WHEN { diff --git a/test/battle/ability/pastel_veil.c b/test/battle/ability/pastel_veil.c index 67bfd5831e..ebf9d74645 100644 --- a/test/battle/ability/pastel_veil.c +++ b/test/battle/ability/pastel_veil.c @@ -4,7 +4,7 @@ SINGLE_BATTLE_TEST("Pastel Veil prevents Poison Sting poison") { GIVEN { - ASSUME(MoveHasMoveEffect(MOVE_POISON_STING, MOVE_EFFECT_POISON) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_POISON_STING, MOVE_EFFECT_POISON) == TRUE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } } WHEN { @@ -18,7 +18,7 @@ SINGLE_BATTLE_TEST("Pastel Veil prevents Poison Sting poison") DOUBLE_BATTLE_TEST("Pastel Veil prevents Poison Sting poison on partner") { GIVEN { - ASSUME(MoveHasMoveEffect(MOVE_POISON_STING, MOVE_EFFECT_POISON) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_POISON_STING, MOVE_EFFECT_POISON) == TRUE); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } diff --git a/test/battle/ability/purifying_salt.c b/test/battle/ability/purifying_salt.c index d1ab82d104..e188262497 100644 --- a/test/battle/ability/purifying_salt.c +++ b/test/battle/ability/purifying_salt.c @@ -47,7 +47,7 @@ SINGLE_BATTLE_TEST("Purifying Salt grants immunity to status effects") ASSUME(gMovesInfo[MOVE_HYPNOSIS].effect == EFFECT_SLEEP); ASSUME(gMovesInfo[MOVE_THUNDER_WAVE].effect == EFFECT_PARALYZE); ASSUME(gMovesInfo[MOVE_TOXIC].effect == EFFECT_TOXIC); - ASSUME(MoveHasMoveEffect(MOVE_POWDER_SNOW, MOVE_EFFECT_FREEZE_OR_FROSTBITE) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_POWDER_SNOW, MOVE_EFFECT_FREEZE_OR_FROSTBITE) == TRUE); PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_PURIFYING_SALT); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/ability/shield_dust.c b/test/battle/ability/shield_dust.c index 4cd95de619..b7d7d544ed 100644 --- a/test/battle/ability/shield_dust.c +++ b/test/battle/ability/shield_dust.c @@ -13,13 +13,13 @@ SINGLE_BATTLE_TEST("Shield Dust blocks secondary effects") PARAMETRIZE { move = MOVE_PSYCHIC_NOISE; } GIVEN { - ASSUME(MoveHasMoveEffectWithChance(MOVE_NUZZLE, MOVE_EFFECT_PARALYSIS, 100) == TRUE); - ASSUME(MoveHasMoveEffectWithChance(MOVE_INFERNO, MOVE_EFFECT_BURN, 100) == TRUE); - ASSUME(MoveHasMoveEffectWithChance(MOVE_MORTAL_SPIN, MOVE_EFFECT_POISON, 100) == TRUE); - ASSUME(MoveHasMoveEffectWithChance(MOVE_FAKE_OUT, MOVE_EFFECT_FLINCH, 100) == TRUE); - ASSUME(MoveHasMoveEffectWithChance(MOVE_ROCK_TOMB, MOVE_EFFECT_SPD_MINUS_1, 100) == TRUE); - ASSUME(MoveHasMoveEffectWithChance(MOVE_SPIRIT_SHACKLE, MOVE_EFFECT_PREVENT_ESCAPE, 100) == TRUE); - ASSUME(MoveHasMoveEffectWithChance(MOVE_PSYCHIC_NOISE, MOVE_EFFECT_PSYCHIC_NOISE, 100) == TRUE); + ASSUME(MoveHasAdditionalEffectWithChance(MOVE_NUZZLE, MOVE_EFFECT_PARALYSIS, 100) == TRUE); + ASSUME(MoveHasAdditionalEffectWithChance(MOVE_INFERNO, MOVE_EFFECT_BURN, 100) == TRUE); + ASSUME(MoveHasAdditionalEffectWithChance(MOVE_MORTAL_SPIN, MOVE_EFFECT_POISON, 100) == TRUE); + ASSUME(MoveHasAdditionalEffectWithChance(MOVE_FAKE_OUT, MOVE_EFFECT_FLINCH, 100) == TRUE); + ASSUME(MoveHasAdditionalEffectWithChance(MOVE_ROCK_TOMB, MOVE_EFFECT_SPD_MINUS_1, 100) == TRUE); + ASSUME(MoveHasAdditionalEffectWithChance(MOVE_SPIRIT_SHACKLE, MOVE_EFFECT_PREVENT_ESCAPE, 100) == TRUE); + ASSUME(MoveHasAdditionalEffectWithChance(MOVE_PSYCHIC_NOISE, MOVE_EFFECT_PSYCHIC_NOISE, 100) == TRUE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_VIVILLON) { Ability(ABILITY_SHIELD_DUST); } } WHEN { @@ -49,11 +49,11 @@ SINGLE_BATTLE_TEST("Shield Dust does not block primary effects") PARAMETRIZE { move = MOVE_PAY_DAY; } GIVEN { - ASSUME(MoveHasMoveEffectWithChance(MOVE_INFESTATION, MOVE_EFFECT_WRAP, 0) == TRUE); - ASSUME(MoveHasMoveEffectWithChance(MOVE_THOUSAND_ARROWS, MOVE_EFFECT_SMACK_DOWN, 0) == TRUE); - ASSUME(MoveHasMoveEffectWithChance(MOVE_JAW_LOCK, MOVE_EFFECT_TRAP_BOTH, 0) == TRUE); - ASSUME(MoveHasMoveEffectWithChance(MOVE_PAY_DAY, MOVE_EFFECT_PAYDAY, 0) == TRUE); - ASSUME(MoveHasMoveEffectWithChance(MOVE_SMACK_DOWN, MOVE_EFFECT_SMACK_DOWN, 0) == TRUE); + ASSUME(MoveHasAdditionalEffectWithChance(MOVE_INFESTATION, MOVE_EFFECT_WRAP, 0) == TRUE); + ASSUME(MoveHasAdditionalEffectWithChance(MOVE_THOUSAND_ARROWS, MOVE_EFFECT_SMACK_DOWN, 0) == TRUE); + ASSUME(MoveHasAdditionalEffectWithChance(MOVE_JAW_LOCK, MOVE_EFFECT_TRAP_BOTH, 0) == TRUE); + ASSUME(MoveHasAdditionalEffectWithChance(MOVE_PAY_DAY, MOVE_EFFECT_PAYDAY, 0) == TRUE); + ASSUME(MoveHasAdditionalEffectWithChance(MOVE_SMACK_DOWN, MOVE_EFFECT_SMACK_DOWN, 0) == TRUE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_VIVILLON) { Ability(ABILITY_SHIELD_DUST); } } WHEN { @@ -93,10 +93,10 @@ SINGLE_BATTLE_TEST("Shield Dust does not block self-targeting effects, primary o PARAMETRIZE { move = MOVE_METEOR_ASSAULT; } GIVEN { - ASSUME(MoveHasMoveEffectSelf(MOVE_POWER_UP_PUNCH, MOVE_EFFECT_ATK_PLUS_1) == TRUE); - ASSUME(MoveHasMoveEffectSelf(MOVE_RAPID_SPIN, MOVE_EFFECT_RAPIDSPIN) == TRUE); - ASSUME(MoveHasMoveEffectSelf(MOVE_LEAF_STORM, MOVE_EFFECT_SP_ATK_TWO_DOWN) == TRUE); - ASSUME(MoveHasMoveEffectSelf(MOVE_METEOR_ASSAULT, MOVE_EFFECT_RECHARGE) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_POWER_UP_PUNCH, MOVE_EFFECT_ATK_PLUS_1) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_RAPID_SPIN, MOVE_EFFECT_RAPIDSPIN) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_LEAF_STORM, MOVE_EFFECT_SP_ATK_TWO_DOWN) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_METEOR_ASSAULT, MOVE_EFFECT_RECHARGE) == TRUE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_VIVILLON) { Ability(ABILITY_SHIELD_DUST); } } WHEN { diff --git a/test/battle/ability/stench.c b/test/battle/ability/stench.c index e65b2a2632..f0c0e24414 100644 --- a/test/battle/ability/stench.c +++ b/test/battle/ability/stench.c @@ -35,7 +35,7 @@ DOUBLE_BATTLE_TEST("Stench only triggers if target takes damage") { GIVEN { ASSUME(gMovesInfo[MOVE_TACKLE].power > 0); - ASSUME(MoveHasMoveEffectWithChance(MOVE_FAKE_OUT, MOVE_EFFECT_FLINCH, 100)); + ASSUME(MoveHasAdditionalEffectWithChance(MOVE_FAKE_OUT, MOVE_EFFECT_FLINCH, 100)); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_GRIMER) { Ability(ABILITY_STENCH); } @@ -59,7 +59,7 @@ DOUBLE_BATTLE_TEST("Stench doesn't trigger if partner uses a move") { GIVEN { ASSUME(gMovesInfo[MOVE_TACKLE].power > 0); - ASSUME(MoveHasMoveEffectWithChance(MOVE_FAKE_OUT, MOVE_EFFECT_FLINCH, 100)); + ASSUME(MoveHasAdditionalEffectWithChance(MOVE_FAKE_OUT, MOVE_EFFECT_FLINCH, 100)); PLAYER(SPECIES_WOBBUFFET) { Speed(20); } PLAYER(SPECIES_WYNAUT) { Speed(10); } OPPONENT(SPECIES_GRIMER) { Speed(100); Ability(ABILITY_STENCH); } diff --git a/test/battle/ai_calc_best_move_score.c b/test/battle/ai_calc_best_move_score.c index 0376738cf3..bece527f30 100644 --- a/test/battle/ai_calc_best_move_score.c +++ b/test/battle/ai_calc_best_move_score.c @@ -81,7 +81,7 @@ AI_SINGLE_BATTLE_TEST("AI will not use Throat Chop if opposing mon has a better ASSUME(gMovesInfo[MOVE_THROAT_CHOP].power == 80); ASSUME(gMovesInfo[MOVE_DISARMING_VOICE].power == 40); ASSUME(gMovesInfo[MOVE_FLAME_BURST].power == 70); - ASSUME(MoveHasMoveEffect(MOVE_THROAT_CHOP, MOVE_EFFECT_THROAT_CHOP) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_THROAT_CHOP, MOVE_EFFECT_THROAT_CHOP) == TRUE); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_REGIROCK) { Speed(15); Moves(MOVE_DISARMING_VOICE, MOVE_FLAME_BURST); }; OPPONENT(SPECIES_WOBBUFFET) { Speed(20); Moves(MOVE_THROAT_CHOP, MOVE_PSYCHIC_FANGS); } @@ -95,7 +95,7 @@ AI_SINGLE_BATTLE_TEST("AI will not use Throat Chop if opposing mon has a better AI_SINGLE_BATTLE_TEST("AI will select Throat Chop if the sound move is the best damaging move from opposing mon") { GIVEN { - ASSUME(MoveHasMoveEffect(MOVE_THROAT_CHOP, MOVE_EFFECT_THROAT_CHOP) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_THROAT_CHOP, MOVE_EFFECT_THROAT_CHOP) == TRUE); ASSUME(gMovesInfo[MOVE_PSYCHIC_FANGS].power == 85); ASSUME(gMovesInfo[MOVE_THROAT_CHOP].power == 80); ASSUME(gMovesInfo[MOVE_FLAME_BURST].power == 70); diff --git a/test/battle/ai_check_viability.c b/test/battle/ai_check_viability.c index 69794804c7..bf2bf33115 100644 --- a/test/battle/ai_check_viability.c +++ b/test/battle/ai_check_viability.c @@ -4,7 +4,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_BODY_SLAM, MOVE_EFFECT_PARALYSIS) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_BODY_SLAM, MOVE_EFFECT_PARALYSIS) == TRUE); } AI_SINGLE_BATTLE_TEST("AI sees increased base power of Facade") @@ -82,7 +82,7 @@ AI_SINGLE_BATTLE_TEST("AI sees increased base power of Grav Apple") GIVEN { ASSUME(gMovesInfo[MOVE_GRAV_APPLE].effect == EFFECT_GRAV_APPLE); ASSUME(gMovesInfo[MOVE_GRAV_APPLE].power == gMovesInfo[MOVE_DRUM_BEATING].power); - ASSUME(MoveHasMoveEffect(MOVE_DRUM_BEATING, MOVE_EFFECT_SPD_MINUS_1) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_DRUM_BEATING, MOVE_EFFECT_SPD_MINUS_1) == TRUE); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET) { HP(81); Speed(20); } OPPONENT(SPECIES_WOBBUFFET) { Speed(10); Moves(MOVE_DRUM_BEATING, MOVE_GRAV_APPLE); } @@ -180,8 +180,8 @@ AI_SINGLE_BATTLE_TEST("AI chooses moves with secondary effect that have a 100% c GIVEN { AI_LOG; - ASSUME(MoveHasMoveEffectWithChance(MOVE_SHADOW_BALL, MOVE_EFFECT_SP_DEF_MINUS_1, 20)); - ASSUME(MoveHasMoveEffectWithChance(MOVE_OCTAZOOKA, MOVE_EFFECT_ACC_MINUS_1, 50)); + ASSUME(MoveHasAdditionalEffectWithChance(MOVE_SHADOW_BALL, MOVE_EFFECT_SP_DEF_MINUS_1, 20)); + ASSUME(MoveHasAdditionalEffectWithChance(MOVE_OCTAZOOKA, MOVE_EFFECT_ACC_MINUS_1, 50)); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_REGICE); OPPONENT(SPECIES_REGIROCK) { Ability(ability); Moves(MOVE_SHADOW_BALL, MOVE_OCTAZOOKA); } diff --git a/test/battle/form_change/status.c b/test/battle/form_change/status.c index 6bdc83efc8..b264ba3dd5 100644 --- a/test/battle/form_change/status.c +++ b/test/battle/form_change/status.c @@ -3,7 +3,7 @@ SINGLE_BATTLE_TEST("Shaymin-Sky reverts to Shaymin-Land when frozen or frostbitten") { - ASSUME(MoveHasMoveEffect(MOVE_POWDER_SNOW, MOVE_EFFECT_FREEZE_OR_FROSTBITE)); + ASSUME(MoveHasAdditionalEffect(MOVE_POWDER_SNOW, MOVE_EFFECT_FREEZE_OR_FROSTBITE)); GIVEN { PLAYER(SPECIES_SHAYMIN_SKY); OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/battle/hold_effect/air_balloon.c b/test/battle/hold_effect/air_balloon.c index cf5469a6d4..2851212391 100644 --- a/test/battle/hold_effect/air_balloon.c +++ b/test/battle/hold_effect/air_balloon.c @@ -109,7 +109,7 @@ SINGLE_BATTLE_TEST("Air Balloon pops before it can be stolen with Thief or Covet PARAMETRIZE { move = MOVE_THIEF; } PARAMETRIZE { move = MOVE_COVET; } GIVEN { - ASSUME(MoveHasMoveEffect(move, MOVE_EFFECT_STEAL_ITEM) == TRUE); + ASSUME(MoveHasAdditionalEffect(move, MOVE_EFFECT_STEAL_ITEM) == TRUE); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/hold_effect/clear_amulet.c b/test/battle/hold_effect/clear_amulet.c index 424563ce39..9500419540 100644 --- a/test/battle/hold_effect/clear_amulet.c +++ b/test/battle/hold_effect/clear_amulet.c @@ -72,12 +72,12 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents secondary effects that reduce stats") PARAMETRIZE { move = MOVE_MUD_SLAP; } GIVEN { - ASSUME(MoveHasMoveEffect(MOVE_AURORA_BEAM, MOVE_EFFECT_ATK_MINUS_1) == TRUE); - ASSUME(MoveHasMoveEffect(MOVE_ROCK_SMASH, MOVE_EFFECT_DEF_MINUS_1) == TRUE); - ASSUME(MoveHasMoveEffect(MOVE_BUBBLE_BEAM, MOVE_EFFECT_SPD_MINUS_1) == TRUE); - ASSUME(MoveHasMoveEffect(MOVE_SNARL, MOVE_EFFECT_SP_ATK_MINUS_1) == TRUE); - ASSUME(MoveHasMoveEffect(MOVE_PSYCHIC, MOVE_EFFECT_SP_DEF_MINUS_1) == TRUE); - ASSUME(MoveHasMoveEffect(MOVE_MUD_SLAP, MOVE_EFFECT_ACC_MINUS_1) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_AURORA_BEAM, MOVE_EFFECT_ATK_MINUS_1) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_ROCK_SMASH, MOVE_EFFECT_DEF_MINUS_1) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_BUBBLE_BEAM, MOVE_EFFECT_SPD_MINUS_1) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_SNARL, MOVE_EFFECT_SP_ATK_MINUS_1) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_PSYCHIC, MOVE_EFFECT_SP_DEF_MINUS_1) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_MUD_SLAP, MOVE_EFFECT_ACC_MINUS_1) == TRUE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_CLEAR_AMULET); }; } WHEN { diff --git a/test/battle/hold_effect/red_card.c b/test/battle/hold_effect/red_card.c index 9298ce6429..ce4ac80b96 100644 --- a/test/battle/hold_effect/red_card.c +++ b/test/battle/hold_effect/red_card.c @@ -170,7 +170,7 @@ SINGLE_BATTLE_TEST("Red Card does not activate if stolen by a move") bool32 activate; PARAMETRIZE { item = ITEM_NONE; activate = FALSE; } PARAMETRIZE { item = ITEM_POTION; activate = TRUE; } - ASSUME(MoveHasMoveEffect(MOVE_THIEF, MOVE_EFFECT_STEAL_ITEM) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_THIEF, MOVE_EFFECT_STEAL_ITEM) == TRUE); GIVEN { PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } diff --git a/test/battle/hold_effect/white_herb.c b/test/battle/hold_effect/white_herb.c index 504b2fbd09..0103115658 100644 --- a/test/battle/hold_effect/white_herb.c +++ b/test/battle/hold_effect/white_herb.c @@ -135,7 +135,7 @@ SINGLE_BATTLE_TEST("White Herb wont have time to activate if it is knocked off o KNOWN_FAILING; // Knock off fails, Thief is fine GIVEN { - ASSUME(MoveHasMoveEffect(MOVE_THIEF, MOVE_EFFECT_STEAL_ITEM) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_THIEF, MOVE_EFFECT_STEAL_ITEM) == TRUE); ASSUME(gMovesInfo[MOVE_KNOCK_OFF].effect == EFFECT_KNOCK_OFF); PLAYER(SPECIES_SLUGMA) { Ability(ABILITY_WEAK_ARMOR); Item(ITEM_WHITE_HERB); } OPPONENT(SPECIES_WOBBUFFET); @@ -190,7 +190,7 @@ SINGLE_BATTLE_TEST("White Herb wont have time to activate if Pickpocket steals i { KNOWN_FAILING; // White Herb is activated GIVEN { - ASSUME(MoveHasMoveEffectSelf(MOVE_LEAF_STORM, MOVE_EFFECT_SP_ATK_TWO_DOWN)); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_LEAF_STORM, MOVE_EFFECT_SP_ATK_TWO_DOWN)); PLAYER(SPECIES_SLUGMA) { Ability(ABILITY_WEAK_ARMOR); Item(ITEM_WHITE_HERB); } OPPONENT(SPECIES_SNEASEL) { Ability(ABILITY_PICKPOCKET); } } WHEN { diff --git a/test/battle/move.c b/test/battle/move.c index 02f76f731b..140b3b849a 100644 --- a/test/battle/move.c +++ b/test/battle/move.c @@ -27,7 +27,7 @@ SINGLE_BATTLE_TEST("AdditionalEffect.chance controls the proportion of secondary PARAMETRIZE { move = MOVE_THUNDER_SHOCK; chance = 10; } PARAMETRIZE { move = MOVE_DISCHARGE; chance = 30; } PARAMETRIZE { move = MOVE_NUZZLE; chance = 100; } - ASSUME(MoveHasMoveEffectWithChance(move, MOVE_EFFECT_PARALYSIS, chance) == TRUE); + ASSUME(MoveHasAdditionalEffectWithChance(move, MOVE_EFFECT_PARALYSIS, chance) == TRUE); PASSES_RANDOMLY(chance, 100, RNG_SECONDARY_EFFECT); GIVEN { PLAYER(SPECIES_WOBBUFFET); diff --git a/test/battle/move_effect/aura_wheel.c b/test/battle/move_effect/aura_wheel.c index f4932895e2..154065c281 100644 --- a/test/battle/move_effect/aura_wheel.c +++ b/test/battle/move_effect/aura_wheel.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffectSelf(MOVE_AURA_WHEEL, MOVE_EFFECT_SPD_PLUS_1) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_AURA_WHEEL, MOVE_EFFECT_SPD_PLUS_1) == TRUE); ASSUME(gMovesInfo[MOVE_AURA_WHEEL].effect == EFFECT_AURA_WHEEL); } diff --git a/test/battle/move_effect/axe_kick.c b/test/battle/move_effect/axe_kick.c index 9915040c78..d4be87b8ab 100644 --- a/test/battle/move_effect/axe_kick.c +++ b/test/battle/move_effect/axe_kick.c @@ -4,7 +4,7 @@ ASSUMPTIONS { ASSUME(gMovesInfo[MOVE_AXE_KICK].effect == EFFECT_RECOIL_IF_MISS); - ASSUME(MoveHasMoveEffect(MOVE_AXE_KICK, MOVE_EFFECT_CONFUSION) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_AXE_KICK, MOVE_EFFECT_CONFUSION) == TRUE); } SINGLE_BATTLE_TEST("Axe Kick confuses the target") diff --git a/test/battle/move_effect/barb_barrage.c b/test/battle/move_effect/barb_barrage.c index 5f966c6e0e..e2e5059fee 100644 --- a/test/battle/move_effect/barb_barrage.c +++ b/test/battle/move_effect/barb_barrage.c @@ -5,7 +5,7 @@ ASSUMPTIONS { ASSUME(gMovesInfo[MOVE_BARB_BARRAGE].effect == EFFECT_DOUBLE_POWER_ON_ARG_STATUS); ASSUME(gMovesInfo[MOVE_BARB_BARRAGE].argument == STATUS1_PSN_ANY); - ASSUME(MoveHasMoveEffect(MOVE_BARB_BARRAGE, MOVE_EFFECT_POISON) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_BARB_BARRAGE, MOVE_EFFECT_POISON) == TRUE); } SINGLE_BATTLE_TEST("Barb Barrage inflicts poison") diff --git a/test/battle/move_effect/bug_bite.c b/test/battle/move_effect/bug_bite.c index 57d7e93354..a274e34d5a 100644 --- a/test/battle/move_effect/bug_bite.c +++ b/test/battle/move_effect/bug_bite.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_BUG_BITE, MOVE_EFFECT_BUG_BITE)); + ASSUME(MoveHasAdditionalEffect(MOVE_BUG_BITE, MOVE_EFFECT_BUG_BITE)); ASSUME(gMovesInfo[MOVE_BUG_BITE].pp == 20); } diff --git a/test/battle/move_effect/burn_hit.c b/test/battle/move_effect/burn_hit.c index 7ffd362620..1b6843715c 100644 --- a/test/battle/move_effect/burn_hit.c +++ b/test/battle/move_effect/burn_hit.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_EMBER, MOVE_EFFECT_BURN) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_EMBER, MOVE_EFFECT_BURN) == TRUE); } SINGLE_BATTLE_TEST("Ember inflicts burn") @@ -42,7 +42,7 @@ SINGLE_BATTLE_TEST("Ember cannot burn a Fire-type Pokémon") DOUBLE_BATTLE_TEST("Lava Plume inflicts burn to all adjacent battlers") { GIVEN { - ASSUME(MoveHasMoveEffect(MOVE_LAVA_PLUME, MOVE_EFFECT_BURN) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_LAVA_PLUME, MOVE_EFFECT_BURN) == TRUE); ASSUME(gMovesInfo[MOVE_LAVA_PLUME].target == MOVE_TARGET_FOES_AND_ALLY); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); @@ -68,7 +68,7 @@ SINGLE_BATTLE_TEST("Matcha Gotcha inflicts burn 20% of the time") { PASSES_RANDOMLY(20, 100, RNG_SECONDARY_EFFECT); GIVEN { - ASSUME(MoveHasMoveEffect(MOVE_MATCHA_GOTCHA, MOVE_EFFECT_BURN) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_MATCHA_GOTCHA, MOVE_EFFECT_BURN) == TRUE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -84,7 +84,7 @@ SINGLE_BATTLE_TEST("Matcha Gotcha inflicts burn 20% of the time") DOUBLE_BATTLE_TEST("Matcha Gatcha can burn both targets") { GIVEN { - ASSUME(MoveHasMoveEffect(MOVE_MATCHA_GOTCHA, MOVE_EFFECT_BURN) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_MATCHA_GOTCHA, MOVE_EFFECT_BURN) == TRUE); PLAYER(SPECIES_WOBBUFFET) { HP(1); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -110,7 +110,7 @@ SINGLE_BATTLE_TEST("Scald shouldn't burn a Water-type Pokémon") { GIVEN { ASSUME(gSpeciesInfo[SPECIES_SQUIRTLE].types[0] == TYPE_WATER); - ASSUME(MoveHasMoveEffect(MOVE_SCALD, MOVE_EFFECT_BURN) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_SCALD, MOVE_EFFECT_BURN) == TRUE); ASSUME(gMovesInfo[MOVE_SCALD].type == TYPE_WATER); PLAYER(SPECIES_SQUIRTLE); OPPONENT(SPECIES_SQUIRTLE); diff --git a/test/battle/move_effect/burn_up.c b/test/battle/move_effect/burn_up.c index 02238ba2f8..46b26a49a0 100644 --- a/test/battle/move_effect/burn_up.c +++ b/test/battle/move_effect/burn_up.c @@ -4,7 +4,7 @@ ASSUMPTIONS { ASSUME(gMovesInfo[MOVE_BURN_UP].effect == EFFECT_FAIL_IF_NOT_ARG_TYPE); - ASSUME(MoveHasMoveEffectSelfArg(MOVE_BURN_UP, MOVE_EFFECT_REMOVE_ARG_TYPE, TYPE_FIRE) == TRUE); + ASSUME(MoveHasAdditionalEffectSelfArg(MOVE_BURN_UP, MOVE_EFFECT_REMOVE_ARG_TYPE, TYPE_FIRE) == TRUE); ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[0] != TYPE_FIRE || gSpeciesInfo[SPECIES_WOBBUFFET].types[1] != TYPE_FIRE); ASSUME(gSpeciesInfo[SPECIES_CYNDAQUIL].types[0] == TYPE_FIRE || gSpeciesInfo[SPECIES_CYNDAQUIL].types[1] == TYPE_FIRE); } diff --git a/test/battle/move_effect/clanging_scales.c b/test/battle/move_effect/clanging_scales.c index a127badd0d..b548711eb4 100644 --- a/test/battle/move_effect/clanging_scales.c +++ b/test/battle/move_effect/clanging_scales.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffectSelf(MOVE_CLANGING_SCALES, MOVE_EFFECT_DEF_MINUS_1) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_CLANGING_SCALES, MOVE_EFFECT_DEF_MINUS_1) == TRUE); } DOUBLE_BATTLE_TEST("Clanging Scales lowers defense by one stage if it hits both targets") diff --git a/test/battle/move_effect/confusion_hit.c b/test/battle/move_effect/confusion_hit.c index 3f42b6f577..bdfc57fc35 100644 --- a/test/battle/move_effect/confusion_hit.c +++ b/test/battle/move_effect/confusion_hit.c @@ -9,7 +9,7 @@ SINGLE_BATTLE_TEST("Alluring Voice confuses the target if the target raised a st PARAMETRIZE { move = MOVE_SWORDS_DANCE; } GIVEN { - ASSUME(MoveHasMoveEffect(MOVE_ALLURING_VOICE, MOVE_EFFECT_CONFUSION)); + ASSUME(MoveHasAdditionalEffect(MOVE_ALLURING_VOICE, MOVE_EFFECT_CONFUSION)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -33,7 +33,7 @@ SINGLE_BATTLE_TEST("Alluring Voice confuses the target if the target raised a st SINGLE_BATTLE_TEST("Alluring Voice confuse effect is removed if it is Sheer Force boosted") { GIVEN { - ASSUME(MoveHasMoveEffect(MOVE_ALLURING_VOICE, MOVE_EFFECT_CONFUSION)); + ASSUME(MoveHasAdditionalEffect(MOVE_ALLURING_VOICE, MOVE_EFFECT_CONFUSION)); PLAYER(SPECIES_NIDOKING) { Ability(ABILITY_SHEER_FORCE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/move_effect/dire_claw.c b/test/battle/move_effect/dire_claw.c index c8cfaa9248..67c361bac0 100644 --- a/test/battle/move_effect/dire_claw.c +++ b/test/battle/move_effect/dire_claw.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_DIRE_CLAW, MOVE_EFFECT_DIRE_CLAW) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_DIRE_CLAW, MOVE_EFFECT_DIRE_CLAW) == TRUE); } SINGLE_BATTLE_TEST("Dire Claw can inflict poison, paralysis or sleep") diff --git a/test/battle/move_effect/double_shock.c b/test/battle/move_effect/double_shock.c index 1771724fcd..b7f59a3ab7 100644 --- a/test/battle/move_effect/double_shock.c +++ b/test/battle/move_effect/double_shock.c @@ -4,7 +4,7 @@ ASSUMPTIONS { ASSUME(gMovesInfo[MOVE_DOUBLE_SHOCK].effect == EFFECT_FAIL_IF_NOT_ARG_TYPE); - ASSUME(MoveHasMoveEffectSelfArg(MOVE_DOUBLE_SHOCK, MOVE_EFFECT_REMOVE_ARG_TYPE, TYPE_ELECTRIC) == TRUE); + ASSUME(MoveHasAdditionalEffectSelfArg(MOVE_DOUBLE_SHOCK, MOVE_EFFECT_REMOVE_ARG_TYPE, TYPE_ELECTRIC) == TRUE); ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[0] != TYPE_ELECTRIC || gSpeciesInfo[SPECIES_WOBBUFFET].types[1] != TYPE_ELECTRIC); ASSUME(gSpeciesInfo[SPECIES_PIKACHU].types[0] == TYPE_ELECTRIC || gSpeciesInfo[SPECIES_PIKACHU].types[1] == TYPE_ELECTRIC); } diff --git a/test/battle/move_effect/flinch_hit.c b/test/battle/move_effect/flinch_hit.c index a6ad63fec4..c54c9536fe 100644 --- a/test/battle/move_effect/flinch_hit.c +++ b/test/battle/move_effect/flinch_hit.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_HEADBUTT, MOVE_EFFECT_FLINCH) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_HEADBUTT, MOVE_EFFECT_FLINCH) == TRUE); } SINGLE_BATTLE_TEST("Headbutt flinches the target if attacker is faster") diff --git a/test/battle/move_effect/flinch_status.c b/test/battle/move_effect/flinch_status.c index 2194a22681..6ef9e09bf1 100644 --- a/test/battle/move_effect/flinch_status.c +++ b/test/battle/move_effect/flinch_status.c @@ -3,12 +3,12 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_THUNDER_FANG, MOVE_EFFECT_PARALYSIS) == TRUE); - ASSUME(MoveHasMoveEffect(MOVE_THUNDER_FANG, MOVE_EFFECT_FLINCH) == TRUE); - ASSUME(MoveHasMoveEffect(MOVE_ICE_FANG, MOVE_EFFECT_FREEZE) == TRUE); - ASSUME(MoveHasMoveEffect(MOVE_ICE_FANG, MOVE_EFFECT_FLINCH) == TRUE); - ASSUME(MoveHasMoveEffect(MOVE_FIRE_FANG, MOVE_EFFECT_BURN) == TRUE); - ASSUME(MoveHasMoveEffect(MOVE_FIRE_FANG, MOVE_EFFECT_FLINCH) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_THUNDER_FANG, MOVE_EFFECT_PARALYSIS) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_THUNDER_FANG, MOVE_EFFECT_FLINCH) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_ICE_FANG, MOVE_EFFECT_FREEZE) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_ICE_FANG, MOVE_EFFECT_FLINCH) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_FIRE_FANG, MOVE_EFFECT_BURN) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_FIRE_FANG, MOVE_EFFECT_FLINCH) == TRUE); } SINGLE_BATTLE_TEST("Thunder, Ice and Fire Fang inflict status 10% of the time") diff --git a/test/battle/move_effect/freeze_hit.c b/test/battle/move_effect/freeze_hit.c index 1fefd59d12..d7a182b3d9 100644 --- a/test/battle/move_effect/freeze_hit.c +++ b/test/battle/move_effect/freeze_hit.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_POWDER_SNOW, MOVE_EFFECT_FREEZE_OR_FROSTBITE) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_POWDER_SNOW, MOVE_EFFECT_FREEZE_OR_FROSTBITE) == TRUE); ASSUME(gMovesInfo[MOVE_BLIZZARD].accuracy == 70); } @@ -75,7 +75,7 @@ SINGLE_BATTLE_TEST("Freezing Glare shouldn't freeze Psychic-types") { GIVEN { ASSUME(gSpeciesInfo[SPECIES_ARTICUNO_GALARIAN].types[0] == TYPE_PSYCHIC); - ASSUME(MoveHasMoveEffect(MOVE_FREEZING_GLARE, MOVE_EFFECT_FREEZE_OR_FROSTBITE) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_FREEZING_GLARE, MOVE_EFFECT_FREEZE_OR_FROSTBITE) == TRUE); ASSUME(gMovesInfo[MOVE_FREEZING_GLARE].type == TYPE_PSYCHIC); PLAYER(SPECIES_ARTICUNO_GALARIAN); OPPONENT(SPECIES_ARTICUNO_GALARIAN); diff --git a/test/battle/move_effect/hit_set_entry_hazardss.c b/test/battle/move_effect/hit_set_entry_hazardss.c index 063adbb6e6..fa405ed3b3 100644 --- a/test/battle/move_effect/hit_set_entry_hazardss.c +++ b/test/battle/move_effect/hit_set_entry_hazardss.c @@ -3,8 +3,8 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_STONE_AXE, MOVE_EFFECT_STEALTH_ROCK) == TRUE); - ASSUME(MoveHasMoveEffect(MOVE_CEASELESS_EDGE, MOVE_EFFECT_SPIKES) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_STONE_AXE, MOVE_EFFECT_STEALTH_ROCK) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_CEASELESS_EDGE, MOVE_EFFECT_SPIKES) == TRUE); } SINGLE_BATTLE_TEST("Stone Axe / Ceaseless Edge set up hazards after hitting the target") diff --git a/test/battle/move_effect/jaw_lock.c b/test/battle/move_effect/jaw_lock.c index 899a0b297a..ec06b25c30 100644 --- a/test/battle/move_effect/jaw_lock.c +++ b/test/battle/move_effect/jaw_lock.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_JAW_LOCK, MOVE_EFFECT_TRAP_BOTH) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_JAW_LOCK, MOVE_EFFECT_TRAP_BOTH) == TRUE); } SINGLE_BATTLE_TEST("Jaw Lock traps both opponents") diff --git a/test/battle/move_effect/make_it_rain.c b/test/battle/move_effect/make_it_rain.c index 93fbeb1119..f8ce955b49 100644 --- a/test/battle/move_effect/make_it_rain.c +++ b/test/battle/move_effect/make_it_rain.c @@ -3,8 +3,8 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_MAKE_IT_RAIN, MOVE_EFFECT_PAYDAY)); - ASSUME(MoveHasMoveEffectSelf(MOVE_MAKE_IT_RAIN, MOVE_EFFECT_SP_ATK_MINUS_1)); + ASSUME(MoveHasAdditionalEffect(MOVE_MAKE_IT_RAIN, MOVE_EFFECT_PAYDAY)); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_MAKE_IT_RAIN, MOVE_EFFECT_SP_ATK_MINUS_1)); } SINGLE_BATTLE_TEST("Make It Rain lowers special attack by one stage") diff --git a/test/battle/move_effect/paralyze_hit.c b/test/battle/move_effect/paralyze_hit.c index 4d1b4ce9da..0e9d9589a8 100644 --- a/test/battle/move_effect/paralyze_hit.c +++ b/test/battle/move_effect/paralyze_hit.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_THUNDER_SHOCK, MOVE_EFFECT_PARALYSIS) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_THUNDER_SHOCK, MOVE_EFFECT_PARALYSIS) == TRUE); } SINGLE_BATTLE_TEST("Thunder Shock inflicts paralysis") @@ -48,7 +48,7 @@ SINGLE_BATTLE_TEST("Body Slam shouldn't paralyze Normal-types") { GIVEN { ASSUME(gSpeciesInfo[SPECIES_TAUROS].types[0] == TYPE_NORMAL); - ASSUME(MoveHasMoveEffect(MOVE_BODY_SLAM, MOVE_EFFECT_PARALYSIS) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_BODY_SLAM, MOVE_EFFECT_PARALYSIS) == TRUE); ASSUME(gMovesInfo[MOVE_BODY_SLAM].type == TYPE_NORMAL); PLAYER(SPECIES_TAUROS); OPPONENT(SPECIES_TAUROS); diff --git a/test/battle/move_effect/pay_day.c b/test/battle/move_effect/pay_day.c index 2996a65000..e448a4c935 100644 --- a/test/battle/move_effect/pay_day.c +++ b/test/battle/move_effect/pay_day.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_PAY_DAY, MOVE_EFFECT_PAYDAY)); + ASSUME(MoveHasAdditionalEffect(MOVE_PAY_DAY, MOVE_EFFECT_PAYDAY)); } SINGLE_BATTLE_TEST("Pay Day Scatters coins around after it hits - singles") diff --git a/test/battle/move_effect/pledge.c b/test/battle/move_effect/pledge.c index 430d2b45e0..a1ed91cab6 100644 --- a/test/battle/move_effect/pledge.c +++ b/test/battle/move_effect/pledge.c @@ -38,7 +38,7 @@ DOUBLE_BATTLE_TEST("Rainbow doubles the chance of secondary move effects") { PASSES_RANDOMLY(20, 100, RNG_SECONDARY_EFFECT); GIVEN { - ASSUME(MoveHasMoveEffect(MOVE_EMBER, MOVE_EFFECT_BURN) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_EMBER, MOVE_EFFECT_BURN) == TRUE); PLAYER(SPECIES_WOBBUFFET) { Speed(4); } PLAYER(SPECIES_WYNAUT) { Speed(3); } OPPONENT(SPECIES_WOBBUFFET) { Speed(8); } @@ -59,7 +59,7 @@ DOUBLE_BATTLE_TEST("Rainbow flinch chance does not stack with Serene Grace") { PASSES_RANDOMLY(60, 100, RNG_SECONDARY_EFFECT); GIVEN { - ASSUME(MoveHasMoveEffect(MOVE_BITE, MOVE_EFFECT_FLINCH) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_BITE, MOVE_EFFECT_FLINCH) == TRUE); PLAYER(SPECIES_TOGEPI) { Speed(8); Ability(ABILITY_SERENE_GRACE); } PLAYER(SPECIES_WOBBUFFET) { Speed(5); } OPPONENT(SPECIES_WOBBUFFET) { Speed(4); } diff --git a/test/battle/move_effect/poison_hit.c b/test/battle/move_effect/poison_hit.c index 4743ff3680..f7f46df4f9 100644 --- a/test/battle/move_effect/poison_hit.c +++ b/test/battle/move_effect/poison_hit.c @@ -3,8 +3,8 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_POISON_STING, MOVE_EFFECT_POISON) == TRUE); - ASSUME(MoveHasMoveEffect(MOVE_TWINEEDLE, MOVE_EFFECT_POISON) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_POISON_STING, MOVE_EFFECT_POISON) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_TWINEEDLE, MOVE_EFFECT_POISON) == TRUE); } SINGLE_BATTLE_TEST("Poison Sting inflicts poison") diff --git a/test/battle/move_effect/psychic_noise.c b/test/battle/move_effect/psychic_noise.c index 6ad22fd45a..7846157b77 100644 --- a/test/battle/move_effect/psychic_noise.c +++ b/test/battle/move_effect/psychic_noise.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_PSYCHIC_NOISE, MOVE_EFFECT_PSYCHIC_NOISE)); + ASSUME(MoveHasAdditionalEffect(MOVE_PSYCHIC_NOISE, MOVE_EFFECT_PSYCHIC_NOISE)); ASSUME(gMovesInfo[MOVE_RECOVER].effect == EFFECT_RESTORE_HP); } diff --git a/test/battle/move_effect/rampage.c b/test/battle/move_effect/rampage.c index 5b783f91b8..5ceb56f6dc 100644 --- a/test/battle/move_effect/rampage.c +++ b/test/battle/move_effect/rampage.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffectSelf(MOVE_THRASH, MOVE_EFFECT_THRASH) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_THRASH, MOVE_EFFECT_THRASH) == TRUE); } SINGLE_BATTLE_TEST("Thrash lasts for 2 or 3 turns") diff --git a/test/battle/move_effect/rapid_spin.c b/test/battle/move_effect/rapid_spin.c index 2874aa4527..1e4763b2d2 100644 --- a/test/battle/move_effect/rapid_spin.c +++ b/test/battle/move_effect/rapid_spin.c @@ -3,12 +3,12 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffectSelf(MOVE_RAPID_SPIN, MOVE_EFFECT_RAPIDSPIN) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_RAPID_SPIN, MOVE_EFFECT_RAPIDSPIN) == TRUE); #if B_SPEED_BUFFING_RAPID_SPIN >= GEN_8 - ASSUME(MoveHasMoveEffectSelf(MOVE_RAPID_SPIN, MOVE_EFFECT_SPD_PLUS_1) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_RAPID_SPIN, MOVE_EFFECT_SPD_PLUS_1) == TRUE); #endif - ASSUME(MoveHasMoveEffectSelf(MOVE_MORTAL_SPIN, MOVE_EFFECT_RAPIDSPIN) == TRUE); - ASSUME(MoveHasMoveEffect(MOVE_MORTAL_SPIN, MOVE_EFFECT_POISON) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_MORTAL_SPIN, MOVE_EFFECT_RAPIDSPIN) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_MORTAL_SPIN, MOVE_EFFECT_POISON) == TRUE); } SINGLE_BATTLE_TEST("Rapin Spin blows away Wrap, hazards and raises Speed (Gen 8+)") diff --git a/test/battle/move_effect/recoil.c b/test/battle/move_effect/recoil.c index fdb1e67a3c..bdada8a114 100644 --- a/test/battle/move_effect/recoil.c +++ b/test/battle/move_effect/recoil.c @@ -68,7 +68,7 @@ SINGLE_BATTLE_TEST("Flare Blitz deals 33% of recoil damage to the user and can b GIVEN { ASSUME(gMovesInfo[MOVE_FLARE_BLITZ].recoil == 33); - ASSUME(MoveHasMoveEffect(MOVE_FLARE_BLITZ, MOVE_EFFECT_BURN)); + ASSUME(MoveHasAdditionalEffect(MOVE_FLARE_BLITZ, MOVE_EFFECT_BURN)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/move_effect/relic_song.c b/test/battle/move_effect/relic_song.c index 0b5a89bf5d..52db4a3601 100644 --- a/test/battle/move_effect/relic_song.c +++ b/test/battle/move_effect/relic_song.c @@ -4,7 +4,7 @@ ASSUMPTIONS { ASSUME(gMovesInfo[MOVE_RELIC_SONG].effect == EFFECT_RELIC_SONG); - ASSUME(MoveHasMoveEffect(MOVE_RELIC_SONG, MOVE_EFFECT_SLEEP) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_RELIC_SONG, MOVE_EFFECT_SLEEP) == TRUE); } SINGLE_BATTLE_TEST("Relic Song has a 10% chance to put the target to sleep") diff --git a/test/battle/move_effect/sp_atk_two_down.c b/test/battle/move_effect/sp_atk_two_down.c index ff68e01286..ff88e2d332 100644 --- a/test/battle/move_effect/sp_atk_two_down.c +++ b/test/battle/move_effect/sp_atk_two_down.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffectSelf(MOVE_OVERHEAT, MOVE_EFFECT_SP_ATK_TWO_DOWN)); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_OVERHEAT, MOVE_EFFECT_SP_ATK_TWO_DOWN)); } SINGLE_BATTLE_TEST("Overheat drops Sp. Atk by 2 stages - singles") diff --git a/test/battle/move_effect/spin_out.c b/test/battle/move_effect/spin_out.c index 84ebb17166..e72f85158f 100644 --- a/test/battle/move_effect/spin_out.c +++ b/test/battle/move_effect/spin_out.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffectSelf(MOVE_SPIN_OUT, MOVE_EFFECT_SPD_MINUS_2) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_SPIN_OUT, MOVE_EFFECT_SPD_MINUS_2) == TRUE); } SINGLE_BATTLE_TEST("Spin Out lowers speed by 2 stages") diff --git a/test/battle/move_effect/throat_chop.c b/test/battle/move_effect/throat_chop.c index 197e18bdc9..edc026aed4 100644 --- a/test/battle/move_effect/throat_chop.c +++ b/test/battle/move_effect/throat_chop.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_THROAT_CHOP, MOVE_EFFECT_THROAT_CHOP) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_THROAT_CHOP, MOVE_EFFECT_THROAT_CHOP) == TRUE); } SINGLE_BATTLE_TEST("Throat Chop prevents the usage of sound moves") diff --git a/test/battle/move_effect/tri_attack.c b/test/battle/move_effect/tri_attack.c index 562f2497b1..177915df22 100644 --- a/test/battle/move_effect/tri_attack.c +++ b/test/battle/move_effect/tri_attack.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_TRI_ATTACK, MOVE_EFFECT_TRI_ATTACK) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_TRI_ATTACK, MOVE_EFFECT_TRI_ATTACK) == TRUE); } SINGLE_BATTLE_TEST("Tri Attack can inflict paralysis, burn or freeze") diff --git a/test/battle/move_effect/triple_arrows.c b/test/battle/move_effect/triple_arrows.c index 73a82fbee4..4286a9ba07 100644 --- a/test/battle/move_effect/triple_arrows.c +++ b/test/battle/move_effect/triple_arrows.c @@ -3,8 +3,8 @@ ASSUMPTIONS { - ASSUME(MoveHasMoveEffect(MOVE_TRIPLE_ARROWS, MOVE_EFFECT_DEF_MINUS_1) == TRUE); - ASSUME(MoveHasMoveEffect(MOVE_TRIPLE_ARROWS, MOVE_EFFECT_FLINCH) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_TRIPLE_ARROWS, MOVE_EFFECT_DEF_MINUS_1) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_TRIPLE_ARROWS, MOVE_EFFECT_FLINCH) == TRUE); } SINGLE_BATTLE_TEST("Triple Arrows may lower Defense by one stage") diff --git a/test/battle/move_effect/two_turn_moves.c b/test/battle/move_effect/two_turn_moves.c index 3011656756..9225afb48e 100644 --- a/test/battle/move_effect/two_turn_moves.c +++ b/test/battle/move_effect/two_turn_moves.c @@ -5,7 +5,7 @@ ASSUMPTIONS { ASSUME(gMovesInfo[MOVE_RAZOR_WIND].effect == EFFECT_TWO_TURNS_ATTACK); ASSUME(gMovesInfo[MOVE_SKULL_BASH].effect == EFFECT_TWO_TURNS_ATTACK); - ASSUME(MoveHasMoveEffectSelf(MOVE_SKULL_BASH, MOVE_EFFECT_DEF_PLUS_1) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_SKULL_BASH, MOVE_EFFECT_DEF_PLUS_1) == TRUE); ASSUME(gMovesInfo[MOVE_SKY_ATTACK].effect == EFFECT_TWO_TURNS_ATTACK); // Solar Beam - check for sun @@ -17,7 +17,7 @@ ASSUMPTIONS // Electro shot - check for rain ASSUME(HIHALF(gMovesInfo[MOVE_ELECTRO_SHOT].argument) == B_WEATHER_RAIN); ASSUME(gMovesInfo[MOVE_ELECTRO_SHOT].effect == EFFECT_TWO_TURNS_ATTACK); - ASSUME(MoveHasMoveEffectSelf(MOVE_ELECTRO_SHOT, MOVE_EFFECT_SP_ATK_PLUS_1) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_ELECTRO_SHOT, MOVE_EFFECT_SP_ATK_PLUS_1) == TRUE); } SINGLE_BATTLE_TEST("Razor Wind needs a charging turn") diff --git a/test/battle/move_effect/upper_hand.c b/test/battle/move_effect/upper_hand.c index 797713e6f6..04f2b85225 100644 --- a/test/battle/move_effect/upper_hand.c +++ b/test/battle/move_effect/upper_hand.c @@ -5,7 +5,7 @@ ASSUMPTIONS { ASSUME(gMovesInfo[MOVE_UPPER_HAND].effect == EFFECT_UPPER_HAND); ASSUME(gMovesInfo[MOVE_UPPER_HAND].priority == 3); - ASSUME(MoveHasMoveEffect(MOVE_UPPER_HAND, MOVE_EFFECT_FLINCH) == TRUE); + ASSUME(MoveHasAdditionalEffect(MOVE_UPPER_HAND, MOVE_EFFECT_FLINCH) == TRUE); } SINGLE_BATTLE_TEST("Upper Hand succeeds if the target is using a priority attacking move and causes it to flinch") From 0aac57bf6027a079a60f53cfa3955258c319e3d8 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Mon, 26 Feb 2024 15:11:21 +0900 Subject: [PATCH 19/55] Renamed TestSheerForceFlag --- include/battle_util.h | 2 +- src/battle_script_commands.c | 10 +++++----- src/battle_util.c | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/include/battle_util.h b/include/battle_util.h index 7989563a30..9ebb2e01e6 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -202,7 +202,7 @@ bool32 HasEnoughHpToEatBerry(u32 battler, u32 hpFraction, u32 itemId); bool32 IsPartnerMonFromSameTrainer(u32 battler); u8 GetCategoryBasedOnStats(u32 battler); bool32 MoveIsAffectedBySheerForce(u16 move); -bool32 TestSheerForceFlag(u32 battler, u16 move); +bool32 TestIfSheerForceAffected(u32 battler, u16 move); void TryRestoreHeldItems(void); bool32 CanStealItem(u32 battlerStealing, u32 battlerItem, u16 item); void TrySaveExchangedItem(u32 battler, u16 stolenItem); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 65751939c8..b8ad0dac21 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2831,7 +2831,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) && !primary && gBattleScripting.moveEffect <= MOVE_EFFECT_CONFUSION) INCREMENT_RESET_RETURN - if (TestSheerForceFlag(gBattlerAttacker, gCurrentMove) && !primary && gBattleScripting.moveEffect != MOVE_EFFECT_CHARGING) + if (TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove) && !primary && gBattleScripting.moveEffect != MOVE_EFFECT_CHARGING) INCREMENT_RESET_RETURN if (gBattleMons[gEffectBattler].hp == 0 && !activateAfterFaint) @@ -5778,7 +5778,7 @@ static void Cmd_moveend(void) && GetBattlerSide(gBattlerTarget) != GetBattlerSide(gBattlerAttacker) && gProtectStructs[gBattlerTarget].physicalDmg && gProtectStructs[gBattlerTarget].physicalBattlerId == gBattlerAttacker - && !TestSheerForceFlag(gBattlerAttacker, gCurrentMove)) + && !TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove)) { gProtectStructs[gBattlerTarget].shellTrap = TRUE; // Change move order in double battles, so the hit mon with shell trap moves immediately after being hit. @@ -6009,7 +6009,7 @@ static void Cmd_moveend(void) case MOVEEND_EJECT_BUTTON: if (gMovesInfo[gCurrentMove].effect != EFFECT_HIT_SWITCH_TARGET && IsBattlerAlive(gBattlerAttacker) - && !TestSheerForceFlag(gBattlerAttacker, gCurrentMove) + && !TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove) && (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER || (gBattleTypeFlags & BATTLE_TYPE_TRAINER))) { // Since we check if battler was damaged, we don't need to check move result. @@ -6042,7 +6042,7 @@ static void Cmd_moveend(void) case MOVEEND_RED_CARD: if ((gMovesInfo[gCurrentMove].effect != EFFECT_HIT_SWITCH_TARGET || gBattleStruct->hitSwitchTargetFailed) && IsBattlerAlive(gBattlerAttacker) - && !TestSheerForceFlag(gBattlerAttacker, gCurrentMove) + && !TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove) && GetBattlerAbility(gBattlerAttacker) != ABILITY_GUARD_DOG) { // Since we check if battler was damaged, we don't need to check move result. @@ -6112,7 +6112,7 @@ static void Cmd_moveend(void) if (IsBattlerAlive(gBattlerAttacker) && gBattleMons[gBattlerAttacker].item != ITEM_NONE // Attacker must be holding an item && !(gWishFutureKnock.knockedOffMons[GetBattlerSide(gBattlerAttacker)] & gBitTable[gBattlerPartyIndexes[gBattlerAttacker]]) // But not knocked off - && !(TestSheerForceFlag(gBattlerAttacker, gCurrentMove)) // Pickpocket doesn't activate for sheer force + && !(TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove)) // Pickpocket doesn't activate for sheer force && IsMoveMakingContact(gCurrentMove, gBattlerAttacker) // Pickpocket requires contact && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) // Obviously attack needs to have worked { diff --git a/src/battle_util.c b/src/battle_util.c index 42a868bae9..e1fc7a92f7 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -5172,7 +5172,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && IsBattlerAlive(battler) && HadMoreThanHalfHpNowHasLess(battler) && (gMultiHitCounter == 0 || gMultiHitCounter == 1) - && !(TestSheerForceFlag(gBattlerAttacker, gCurrentMove)) + && !(TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove)) && CompareStat(battler, STAT_SPATK, MAX_STAT_STAGE, CMP_LESS_THAN)) { gEffectBattler = battler; @@ -5190,7 +5190,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 // Had more than half of hp before, now has less && HadMoreThanHalfHpNowHasLess(battler) && (gMultiHitCounter == 0 || gMultiHitCounter == 1) - && !(TestSheerForceFlag(gBattlerAttacker, gCurrentMove)) + && !(TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove)) && (CanBattlerSwitch(battler) || !(gBattleTypeFlags & BATTLE_TYPE_TRAINER)) && !(gBattleTypeFlags & BATTLE_TYPE_ARENA) && CountUsablePartyMons(battler) > 0 @@ -5621,7 +5621,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && (gMultiHitCounter == 0 || gMultiHitCounter == 1) // Activates after all hits from a multi-hit move. && IsBattlerAlive(gBattlerTarget) && HadMoreThanHalfHpNowHasLess(gBattlerTarget) - && !(TestSheerForceFlag(gBattlerAttacker, gCurrentMove))) + && !(TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove))) { gBattlerAttacker = gBattlerTarget; BattleScriptPushCursor(); @@ -7649,7 +7649,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) break; case HOLD_EFFECT_LIFE_ORB: if (IsBattlerAlive(gBattlerAttacker) - && !(TestSheerForceFlag(gBattlerAttacker, gCurrentMove)) + && !(TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove)) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD && !gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage && gSpecialStatuses[gBattlerAttacker].damagedMons) @@ -10807,7 +10807,7 @@ bool32 IsBattlerAffectedByHazards(u32 battler, bool32 toxicSpikes) return ret; } -bool32 TestSheerForceFlag(u32 battler, u16 move) +bool32 TestIfSheerForceAffected(u32 battler, u16 move) { return GetBattlerAbility(battler) == ABILITY_SHEER_FORCE && MoveIsAffectedBySheerForce(move); } From b0d36b22ba6c508bdaad1cd578d450f4a8dd2516 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Mon, 26 Feb 2024 15:12:34 +0900 Subject: [PATCH 20/55] Fixed test --- test/battle/ai_powerful_status.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/battle/ai_powerful_status.c b/test/battle/ai_powerful_status.c index b625b1126f..4a14c0bf80 100644 --- a/test/battle/ai_powerful_status.c +++ b/test/battle/ai_powerful_status.c @@ -22,7 +22,7 @@ AI_SINGLE_BATTLE_TEST("AI prefers to set up a powerful Status over fainting a ta AI_SINGLE_BATTLE_TEST("AI will try to do damage on target instead of setting up hazards if target has a way to remove them") { GIVEN { - ASSUME(MoveHasMoveEffectSelf(MOVE_RAPID_SPIN, MOVE_EFFECT_RAPID_SPIN) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_RAPID_SPIN, MOVE_EFFECT_RAPID_SPIN) == TRUE); ASSUME(gMovesInfo[MOVE_STEALTH_ROCK].effect == EFFECT_STEALTH_ROCK); ASSUME(gMovesInfo[MOVE_TACKLE].power > 0); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_POWERFUL_STATUS | AI_FLAG_OMNISCIENT); From 170070baef64f97b843d4c778dbe861df884375a Mon Sep 17 00:00:00 2001 From: Nephrite Date: Mon, 26 Feb 2024 23:59:15 +0900 Subject: [PATCH 21/55] Apply suggestions from code review Co-authored-by: Eduardo Quezada D'Ottone --- include/pokemon.h | 2 +- src/battle_util.c | 2 +- test/battle/move.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/pokemon.h b/include/pokemon.h index 421c0ccd1f..3a9d533a5e 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -529,9 +529,9 @@ struct MoveInfo #define ADDITIONAL_EFFECTS(...) ((min(ARRAY_COUNT(EFFECTS_ARR( __VA_ARGS__ )), 15)) << 28) + (uintptr_t)(EFFECTS_ARR( __VA_ARGS__ )) // Retrieve a move's additional effects and the count thereof -#define GET_ADDITIONAL_EFFECTS_AND_COUNT(move, _count, _effects) u32 _count = GET_ADDITIONAL_EFFECTS_COUNT(move); const struct AdditionalEffect *_effects = GET_ADDITIONAL_EFFECTS(move) #define GET_ADDITIONAL_EFFECTS(move) (void *)(gMovesInfo[move].additionalEffects & 0x8FFFFFF) #define GET_ADDITIONAL_EFFECTS_COUNT(move) (gMovesInfo[move].additionalEffects >> 28) +#define GET_ADDITIONAL_EFFECTS_AND_COUNT(move, _count, _effects) u32 _count = GET_ADDITIONAL_EFFECTS_COUNT(move); const struct AdditionalEffect *_effects = GET_ADDITIONAL_EFFECTS(move) // Just a hack to make a move boosted by Sheer Force despite having no secondary effects affected #define SHEER_FORCE_HACK { .moveEffect = 0, .chance = 100, } diff --git a/src/battle_util.c b/src/battle_util.c index e1fc7a92f7..6e68187980 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -11084,7 +11084,7 @@ bool32 IsGen6ExpShareEnabled(void) /* Quick way of checking if a move has move effects with match a few comma-separated conditions. Each condition has to check a field of AdditionalEffect. */ -#define RETURN_HAS_MOVE_ADDITIONAL_EFFECT(condition1, ...) \ +#define RETURN_HAS_MOVE_ADDITIONAL_EFFECT(condition1, ...) \ u32 i; \ GET_ADDITIONAL_EFFECTS_AND_COUNT(move, count, effects); \ for (i = 0; i < count; i++) \ diff --git a/test/battle/move.c b/test/battle/move.c index 140b3b849a..936a821081 100644 --- a/test/battle/move.c +++ b/test/battle/move.c @@ -27,7 +27,7 @@ SINGLE_BATTLE_TEST("AdditionalEffect.chance controls the proportion of secondary PARAMETRIZE { move = MOVE_THUNDER_SHOCK; chance = 10; } PARAMETRIZE { move = MOVE_DISCHARGE; chance = 30; } PARAMETRIZE { move = MOVE_NUZZLE; chance = 100; } - ASSUME(MoveHasAdditionalEffectWithChance(move, MOVE_EFFECT_PARALYSIS, chance) == TRUE); + ASSUME(MoveHasAdditionalEffect(move, MOVE_EFFECT_PARALYSIS) == TRUE); PASSES_RANDOMLY(chance, 100, RNG_SECONDARY_EFFECT); GIVEN { PLAYER(SPECIES_WOBBUFFET); From 4781ca41a9929d353912792d607573c83be1e0cb Mon Sep 17 00:00:00 2001 From: Nephrite Date: Tue, 27 Feb 2024 00:03:25 +0900 Subject: [PATCH 22/55] Renamed GET_ADDITIONAL_EFFECT_COUNT macro --- include/pokemon.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/pokemon.h b/include/pokemon.h index 3a9d533a5e..fa2c0f6e06 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -530,8 +530,8 @@ struct MoveInfo // Retrieve a move's additional effects and the count thereof #define GET_ADDITIONAL_EFFECTS(move) (void *)(gMovesInfo[move].additionalEffects & 0x8FFFFFF) -#define GET_ADDITIONAL_EFFECTS_COUNT(move) (gMovesInfo[move].additionalEffects >> 28) -#define GET_ADDITIONAL_EFFECTS_AND_COUNT(move, _count, _effects) u32 _count = GET_ADDITIONAL_EFFECTS_COUNT(move); const struct AdditionalEffect *_effects = GET_ADDITIONAL_EFFECTS(move) +#define GET_ADDITIONAL_EFFECT_COUNT(move) (gMovesInfo[move].additionalEffects >> 28) +#define GET_ADDITIONAL_EFFECTS_AND_COUNT(move, _count, _effects) u32 _count = GET_ADDITIONAL_EFFECT_COUNT(move); const struct AdditionalEffect *_effects = GET_ADDITIONAL_EFFECTS(move) // Just a hack to make a move boosted by Sheer Force despite having no secondary effects affected #define SHEER_FORCE_HACK { .moveEffect = 0, .chance = 100, } From 9e0ae222c3f5e09ca6b41d55d827482d240c604f Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Mon, 26 Feb 2024 14:33:06 -0300 Subject: [PATCH 23/55] Fixed Tri Attack status ability immunity test (#4229) * Fixed Tri Attack test incorrectly having abilities that don't prevent Paralysis * Fixed Dauntless Shield test names --- test/battle/ability/dauntless_shield.c | 4 ++-- test/battle/move_effect/tri_attack.c | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/test/battle/ability/dauntless_shield.c b/test/battle/ability/dauntless_shield.c index eb7b5c15cb..46a6715d48 100644 --- a/test/battle/ability/dauntless_shield.c +++ b/test/battle/ability/dauntless_shield.c @@ -7,7 +7,7 @@ ASSUMPTIONS ASSUME(B_PROTEAN_LIBERO == GEN_9); } -SINGLE_BATTLE_TEST("Dauntless Shield raises Attack by one stage") +SINGLE_BATTLE_TEST("Dauntless Shield raises Defense by one stage") { GIVEN { PLAYER(SPECIES_WOBBUFFET); @@ -23,7 +23,7 @@ SINGLE_BATTLE_TEST("Dauntless Shield raises Attack by one stage") } } -SINGLE_BATTLE_TEST("Dauntless Shield raises Attack by one stage only once per battle") +SINGLE_BATTLE_TEST("Dauntless Shield raises Defense by one stage only once per battle") { GIVEN { PLAYER(SPECIES_WOBBUFFET); diff --git a/test/battle/move_effect/tri_attack.c b/test/battle/move_effect/tri_attack.c index 644ad9f6b2..85c9571c38 100644 --- a/test/battle/move_effect/tri_attack.c +++ b/test/battle/move_effect/tri_attack.c @@ -70,12 +70,13 @@ SINGLE_BATTLE_TEST("Tri Attack cannot paralyze/burn/freeze pokemon with abilitie u8 statusAnim; u16 species, ability; u32 rng; - PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_RAICHU; ability = ABILITY_LIGHTNING_ROD; } - PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_JOLTEON; ability = ABILITY_VOLT_ABSORB; } - PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_ELECTIVIRE; ability = ABILITY_MOTOR_DRIVE; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_PERSIAN; ability = ABILITY_LIMBER; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_KOMALA; ability = ABILITY_COMATOSE; } PARAMETRIZE { statusAnim = B_ANIM_STATUS_BRN; rng = MOVE_EFFECT_BURN; species = SPECIES_DEWPIDER; ability = ABILITY_WATER_BUBBLE; } PARAMETRIZE { statusAnim = B_ANIM_STATUS_BRN; rng = MOVE_EFFECT_BURN; species = SPECIES_SEAKING; ability = ABILITY_WATER_VEIL; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_BRN; rng = MOVE_EFFECT_BURN; species = SPECIES_KOMALA; ability = ABILITY_COMATOSE; } PARAMETRIZE { statusAnim = B_ANIM_STATUS_FRZ; rng = MOVE_EFFECT_FREEZE; species = SPECIES_CAMERUPT; ability = ABILITY_MAGMA_ARMOR; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_FRZ; rng = MOVE_EFFECT_FREEZE; species = SPECIES_KOMALA; ability = ABILITY_COMATOSE; } GIVEN { PLAYER(SPECIES_WOBBUFFET); From e9b2f33084af514b4dabf09983bc9a85c8b51ab0 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Tue, 27 Feb 2024 13:38:38 +0900 Subject: [PATCH 24/55] Fixed Tangling Hair + Mirror Armor interaction --- data/battle_scripts_1.s | 2 +- src/battle_script_commands.c | 13 +++++++++---- src/battle_util.c | 1 - test/battle/ability/mirror_armor.c | 1 - 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 6074898adf..a23423b42e 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -8552,7 +8552,7 @@ BattleScript_GooeyActivates:: waitstate call BattleScript_AbilityPopUp swapattackerwithtarget @ for defiant, mirror armor - seteffectsecondary + seteffectsecondary MOVE_EFFECT_SPD_MINUS_1 swapattackerwithtarget return diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index b8ad0dac21..f70fd9df23 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2831,7 +2831,10 @@ void SetMoveEffect(bool32 primary, bool32 certain) && !primary && gBattleScripting.moveEffect <= MOVE_EFFECT_CONFUSION) INCREMENT_RESET_RETURN - if (TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove) && !primary && gBattleScripting.moveEffect != MOVE_EFFECT_CHARGING) + if (!(gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) + && TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove) + && !primary + && gBattleScripting.moveEffect != MOVE_EFFECT_CHARGING) INCREMENT_RESET_RETURN if (gBattleMons[gEffectBattler].hp == 0 && !activateAfterFaint) @@ -3310,12 +3313,14 @@ void SetMoveEffect(bool32 primary, bool32 certain) case MOVE_EFFECT_ACC_MINUS_1: case MOVE_EFFECT_EVS_MINUS_1: flags = affectsUser; - if (mirrorArmorReflected && !affectsUser) - flags |= STAT_CHANGE_ALLOW_PTR; + if (mirrorArmorReflected) + flags |= (STAT_CHANGE_ALLOW_PTR * !affectsUser); + else + flags |= STAT_CHANGE_UPDATE_MOVE_EFFECT; if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(1) | STAT_BUFF_NEGATIVE, gBattleScripting.moveEffect - MOVE_EFFECT_ATK_MINUS_1 + 1, - flags | STAT_CHANGE_UPDATE_MOVE_EFFECT, gBattlescriptCurrInstr + 1)) + flags, gBattlescriptCurrInstr + 1)) { if (!mirrorArmorReflected) gBattlescriptCurrInstr++; diff --git a/src/battle_util.c b/src/battle_util.c index 6e68187980..143ebc5144 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -5320,7 +5320,6 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && IsMoveMakingContact(move, gBattlerAttacker)) { SET_STATCHANGER(STAT_SPEED, 1, TRUE); - gBattleScripting.moveEffect = MOVE_EFFECT_SPD_MINUS_1; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_GooeyActivates; diff --git a/test/battle/ability/mirror_armor.c b/test/battle/ability/mirror_armor.c index cbbd445bff..38ee8dab91 100644 --- a/test/battle/ability/mirror_armor.c +++ b/test/battle/ability/mirror_armor.c @@ -198,7 +198,6 @@ DOUBLE_BATTLE_TEST("Mirror Armor lowers Speed of the partner Pokemon after Court SINGLE_BATTLE_TEST("Mirror Armor reflects Tangling Hair speed drop") { - KNOWN_FAILING; GIVEN { PLAYER(SPECIES_DUGTRIO) { Ability(ABILITY_TANGLING_HAIR); } OPPONENT(SPECIES_CORVIKNIGHT) { Ability(ABILITY_MIRROR_ARMOR); } From e3d9a19f455c5e753980f2149c9e9c478aaa2510 Mon Sep 17 00:00:00 2001 From: tertu Date: Wed, 28 Feb 2024 00:04:47 -0600 Subject: [PATCH 25/55] Use a 32 bit seed for new game seeding in HQ mode. (#4218) Also adjust some comments --- src/main.c | 32 +++++++++++++++++++++++++++----- src/random.c | 7 ++++--- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/main.c b/src/main.c index c56c796eac..79c4066107 100644 --- a/src/main.c +++ b/src/main.c @@ -215,15 +215,37 @@ void SetMainCallback2(MainCallback callback) void StartTimer1(void) { - REG_TM1CNT_H = 0x80; + if (HQ_RANDOM) + { + REG_TM2CNT_L = 0; + REG_TM2CNT_H = TIMER_ENABLE | TIMER_COUNTUP; + } + + REG_TM1CNT_H = TIMER_ENABLE; } void SeedRngAndSetTrainerId(void) { - u16 val = REG_TM1CNT_L; - SeedRng(val); - REG_TM1CNT_H = 0; - sTrainerId = val; + u32 val; + + if (HQ_RANDOM) + { + REG_TM1CNT_H = 0; + REG_TM2CNT_H = 0; + val = ((u32)REG_TM2CNT_L) << 16; + val |= REG_TM1CNT_L; + SeedRng(val); + sTrainerId = Random(); + } + else + { + // Do it exactly like it was originally done, including not stopping + // the timer beforehand. + val = REG_TM1CNT_L; + SeedRng((u16)val); + REG_TM1CNT_H = 0; + sTrainerId = val; + } } u16 GetGeneratedTrainerIdLower(void) diff --git a/src/random.c b/src/random.c index 303bbc9bdf..8e8dae8f3d 100644 --- a/src/random.c +++ b/src/random.c @@ -41,7 +41,8 @@ static void SFC32_Seed(struct Sfc32State *state, u32 seed, u8 stream) } /*This ASM implementation uses some shortcuts and is generally faster on the GBA. -* It's not necessarily faster if inlined, or on other platforms. */ +* It's not necessarily faster if inlined, or on other platforms. +* In addition, it's extremely non-portable. */ u32 NAKED Random32(void) { asm(".thumb\n\ @@ -49,7 +50,7 @@ u32 NAKED Random32(void) mov r6, #11\n\ ldr r5, =gRngValue\n\ ldmia r5!, {r1, r2, r3, r4}\n\ - @ e (result) = a + b + d++\n\ + @ result = a + b + (d+=STREAM1)\n\ add r1, r1, r2\n\ add r0, r1, r4\n\ add r4, r4, #" STR(STREAM1) "\n\ @@ -59,7 +60,7 @@ u32 NAKED Random32(void) @ b = c + (c << 3) [c * 9]\n\ lsl r2, r3, #3\n\ add r2, r2, r3\n\ - @ c = rol(c, 21) + e\n\ + @ c = rol(c, 21) + result\n\ ror r3, r3, r6\n\ add r3, r3, r0\n\ sub r5, r5, #16\n\ From 64b7cfeb29cc5bd61127e3b1a5d3fc288dcc01a8 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Fri, 1 Mar 2024 15:55:54 -0300 Subject: [PATCH 26/55] Upgrading the debug menu's 'Poison Party' (#4235) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Upgrading the debug menu's 'Poison Party' * Optimized the 'No Pokémon' check in Debug_EventScript_InflictStatus1 * Killed a pointless function call in Script_SetStatus1 * Added Frostbite support to ¡inflict status1' --- asm/macros/event.inc | 8 ++ data/scripts/debug.inc | 162 ++++++++++++++++++++++++++++++++++++-- src/debug.c | 52 +++++------- src/script_pokemon_util.c | 24 ++++++ 4 files changed, 208 insertions(+), 38 deletions(-) diff --git a/asm/macros/event.inc b/asm/macros/event.inc index b93798f457..4817dd95a1 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -2164,3 +2164,11 @@ setvar VAR_RESULT, TRUE 2: .endm + + @ Inflicts \status1 to the Pokémon in \slot. + @ If \slot is greater or equal than PARTY_SIZE, the status is inflicted on each of the Player's Pokémon. + .macro setstatus1 status1:req, slot:req + callnative Script_SetStatus1 + .2byte \status1 + .2byte \slot + .endm diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index 939bd88ac0..1dc39cbc01 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -98,7 +98,7 @@ Debug_BoxFilledMessage_Text: Debug_EventScript_CheckEV:: lockall getpartysize - goto_if_eq VAR_RESULT, 0, Debug_HatchAnEgg_NoPokemon + goto_if_eq VAR_RESULT, 0, Debug_NoPokemon special ChoosePartyMon waitstate goto_if_ge VAR_0x8004, PARTY_SIZE, Debug_EventScript_CheckEV_End @@ -119,7 +119,7 @@ Debug_EventScript_Text_DefensiveEV: Debug_EventScript_CheckIV:: lockall getpartysize - goto_if_eq VAR_RESULT, 0, Debug_HatchAnEgg_NoPokemon + goto_if_eq VAR_RESULT, 0, Debug_NoPokemon special ChoosePartyMon waitstate goto_if_ge VAR_0x8004, PARTY_SIZE, Debug_EventScript_CheckIV_End @@ -202,7 +202,7 @@ Debug_ROMSize:: Debug_HatchAnEgg:: lockall getpartysize - goto_if_eq VAR_RESULT, 0, Debug_HatchAnEgg_NoPokemon + goto_if_eq VAR_RESULT, 0, Debug_NoPokemon special ChoosePartyMon waitstate goto_if_ge VAR_0x8004, PARTY_SIZE, Debug_HatchAnEgg_End @@ -214,8 +214,8 @@ Debug_HatchAnEgg_End:: releaseall end -Debug_HatchAnEgg_NoPokemon:: - msgbox DebugScript_HatchAnEgg_Text_EmptyParty, MSGBOX_DEFAULT +Debug_NoPokemon:: + msgbox DebugScript_Text_EmptyParty, MSGBOX_DEFAULT releaseall end @@ -224,7 +224,7 @@ DebugScript_HatchAnEgg_CantForceHatch:: releaseall end -DebugScript_HatchAnEgg_Text_EmptyParty:: +DebugScript_Text_EmptyParty:: .string "You have no Pokémon nor Eggs.$" DebugScript_HatchAnEgg_Text_NotAnEgg:: @@ -295,3 +295,153 @@ Debug_FlagsAndVarNotSetBattleConfigMessage_Text: .string "Feature unavailable! Please define a\n" .string "usable flag and a usable var in:\l" .string "'include/config/battle.h'!$" + +Debug_EventScript_InflictStatus1:: + lockall + getpartysize + goto_if_eq VAR_RESULT, 0, Debug_NoPokemon + dynmultipush Debug_EventScript_InflictStatus1_Text_Single, 0 + dynmultipush Debug_EventScript_InflictStatus1_Text_PartyWide, 1 + dynmultipush Debug_EventScript_InflictStatus1_Text_Close, 2 + dynmultistack 0, 0, FALSE, 3 FALSE, 0, NULL + switch VAR_RESULT + case 0, Debug_EventScript_InflictStatus1_Single + case 1, Debug_EventScript_InflictStatus1_Party + case 2, Debug_EventScript_InflictStatus1_Close +Debug_EventScript_InflictStatus1_Close: + releaseall + end + +Debug_EventScript_InflictStatus1_Single: + special ChoosePartyMon + waitstate + goto_if_ge VAR_0x8004, PARTY_SIZE, Debug_EventScript_InflictStatus1_Close + specialvar VAR_RESULT, ScriptGetPartyMonSpecies + goto_if_eq VAR_RESULT, SPECIES_EGG, Debug_EventScript_InflictStatus1_Close + dynmultipush Debug_EventScript_InflictStatus1_Text_Poison, 0 + dynmultipush Debug_EventScript_InflictStatus1_Text_Paralysis, 1 + dynmultipush Debug_EventScript_InflictStatus1_Text_Sleep, 2 + dynmultipush Debug_EventScript_InflictStatus1_Text_Burn, 3 + dynmultipush Debug_EventScript_InflictStatus1_Text_Freeze, 4 + dynmultipush Debug_EventScript_InflictStatus1_Text_Frostbite, 5 + dynmultipush Debug_EventScript_InflictStatus1_Text_Close, 6 + dynmultistack 0, 0, FALSE, 7, FALSE, 0, NULL + switch VAR_RESULT + case 0, Debug_EventScript_InflictStatus1_Single_Poison + case 1, Debug_EventScript_InflictStatus1_Single_Paralysis + case 2, Debug_EventScript_InflictStatus1_Single_Sleep + case 3, Debug_EventScript_InflictStatus1_Single_Burn + case 4, Debug_EventScript_InflictStatus1_Single_Freeze + case 5, Debug_EventScript_InflictStatus1_Single_Frostbite + case 6, Debug_EventScript_InflictStatus1_Close + case MULTI_B_PRESSED, Debug_EventScript_InflictStatus1_Close + releaseall + end + +Debug_EventScript_InflictStatus1_Single_Poison: + setstatus1 STATUS1_POISON, VAR_0x8004 + releaseall + end + +Debug_EventScript_InflictStatus1_Single_Paralysis: + setstatus1 STATUS1_PARALYSIS, VAR_0x8004 + releaseall + end + +Debug_EventScript_InflictStatus1_Single_Sleep: + setstatus1 STATUS1_SLEEP, VAR_0x8004 + releaseall + end + +Debug_EventScript_InflictStatus1_Single_Burn: + setstatus1 STATUS1_BURN, VAR_0x8004 + releaseall + end + +Debug_EventScript_InflictStatus1_Single_Freeze: + setstatus1 STATUS1_FREEZE, VAR_0x8004 + releaseall + end + +Debug_EventScript_InflictStatus1_Single_Frostbite: + setstatus1 STATUS1_FROSTBITE, VAR_0x8004 + releaseall + end + +Debug_EventScript_InflictStatus1_Party: + dynmultipush Debug_EventScript_InflictStatus1_Text_Poison, 0 + dynmultipush Debug_EventScript_InflictStatus1_Text_Paralysis, 1 + dynmultipush Debug_EventScript_InflictStatus1_Text_Sleep, 2 + dynmultipush Debug_EventScript_InflictStatus1_Text_Burn, 3 + dynmultipush Debug_EventScript_InflictStatus1_Text_Freeze, 4 + dynmultipush Debug_EventScript_InflictStatus1_Text_Frostbite, 5 + dynmultipush Debug_EventScript_InflictStatus1_Text_Close, 6 + dynmultistack 0, 0, FALSE, 7, FALSE, 0, NULL + switch VAR_RESULT + case 0, Debug_EventScript_InflictStatus1_Party_Poison + case 1, Debug_EventScript_InflictStatus1_Party_Paralysis + case 2, Debug_EventScript_InflictStatus1_Party_Sleep + case 3, Debug_EventScript_InflictStatus1_Party_Burn + case 4, Debug_EventScript_InflictStatus1_Party_Freeze + case 5, Debug_EventScript_InflictStatus1_Party_Frostbite + case 6, Debug_EventScript_InflictStatus1_Close + case MULTI_B_PRESSED, Debug_EventScript_InflictStatus1_Close + releaseall + end + +Debug_EventScript_InflictStatus1_Party_Poison: + setstatus1 STATUS1_POISON, PARTY_SIZE + releaseall + end + +Debug_EventScript_InflictStatus1_Party_Paralysis: + setstatus1 STATUS1_PARALYSIS, PARTY_SIZE + releaseall + end + +Debug_EventScript_InflictStatus1_Party_Sleep: + setstatus1 STATUS1_SLEEP, PARTY_SIZE + releaseall + end + +Debug_EventScript_InflictStatus1_Party_Burn: + setstatus1 STATUS1_BURN, PARTY_SIZE + releaseall + end + +Debug_EventScript_InflictStatus1_Party_Freeze: + setstatus1 STATUS1_FREEZE, PARTY_SIZE + releaseall + end + +Debug_EventScript_InflictStatus1_Party_Frostbite: + setstatus1 STATUS1_FROSTBITE, PARTY_SIZE + releaseall + end + +Debug_EventScript_InflictStatus1_Text_Single: + .string "Single$" + +Debug_EventScript_InflictStatus1_Text_PartyWide: + .string "Party-wide$" + +Debug_EventScript_InflictStatus1_Text_Close: + .string "Close$" + +Debug_EventScript_InflictStatus1_Text_Poison: + .string "Poison$" + +Debug_EventScript_InflictStatus1_Text_Paralysis: + .string "Paralysis$" + +Debug_EventScript_InflictStatus1_Text_Sleep: + .string "Sleep$" + +Debug_EventScript_InflictStatus1_Text_Burn: + .string "Burn$" + +Debug_EventScript_InflictStatus1_Text_Freeze: + .string "Freeze$" + +Debug_EventScript_InflictStatus1_Text_Frostbite: + .string "Frostbite$" diff --git a/src/debug.c b/src/debug.c index 1210d8762d..6482c6dbd7 100644 --- a/src/debug.c +++ b/src/debug.c @@ -126,7 +126,7 @@ enum PartyDebugMenu DEBUG_PARTY_MENU_ITEM_MOVE_REMINDER, DEBUG_PARTY_MENU_ITEM_HATCH_AN_EGG, DEBUG_PARTY_MENU_ITEM_HEAL_PARTY, - DEBUG_PARTY_MENU_ITEM_POISON_MONS, + DEBUG_PARTY_MENU_ITEM_INFLICT_STATUS1, DEBUG_PARTY_MENU_ITEM_CHECK_EV, DEBUG_PARTY_MENU_ITEM_CHECK_IV, DEBUG_PARTY_MENU_ITEM_CLEAR_PARTY, @@ -391,7 +391,7 @@ static void DebugAction_PCBag_ClearBoxes(u8 taskId); static void DebugAction_Party_MoveReminder(u8 taskId); static void DebugAction_Party_HatchAnEgg(u8 taskId); static void DebugAction_Party_HealParty(u8 taskId); -static void DebugAction_Party_PoisonMons(u8 taskId); +static void DebugAction_Party_InflictStatus1(u8 taskId); static void DebugAction_Party_CheckEV(u8 taskId); static void DebugAction_Party_CheckIV(u8 taskId); static void DebugAction_Party_ClearParty(u8 taskId); @@ -454,6 +454,7 @@ extern const u8 Debug_FlagsNotSetBattleConfigMessage[]; extern const u8 Debug_FlagsAndVarNotSetBattleConfigMessage[]; extern const u8 Debug_EventScript_CheckEV[]; extern const u8 Debug_EventScript_CheckIV[]; +extern const u8 Debug_EventScript_InflictStatus1[]; extern const u8 Debug_EventScript_Script_1[]; extern const u8 Debug_EventScript_Script_2[]; extern const u8 Debug_EventScript_Script_3[]; @@ -548,7 +549,7 @@ static const u8 sDebugText_PCBag_ClearBoxes[] = _("Clear Storage Bo static const u8 sDebugText_Party_MoveReminder[] = _("Move Reminder"); static const u8 sDebugText_Party_HatchAnEgg[] = _("Hatch an Egg"); static const u8 sDebugText_Party_HealParty[] = _("Heal party"); -static const u8 sDebugText_Party_PoisonParty[] = _("Poison party"); +static const u8 sDebugText_Party_InflictStatus1[] = _("Inflict Status1"); static const u8 sDebugText_Party_CheckEV[] = _("Check EV"); static const u8 sDebugText_Party_CheckIV[] = _("Check IV"); static const u8 sDebugText_Party_ClearParty[] = _("Clear Party"); @@ -743,13 +744,13 @@ static const struct ListMenuItem sDebugMenu_Items_PCBag_Fill[] = static const struct ListMenuItem sDebugMenu_Items_Party[] = { - [DEBUG_PARTY_MENU_ITEM_MOVE_REMINDER] = {sDebugText_Party_MoveReminder, DEBUG_PARTY_MENU_ITEM_MOVE_REMINDER}, - [DEBUG_PARTY_MENU_ITEM_HATCH_AN_EGG] = {sDebugText_Party_HatchAnEgg, DEBUG_PARTY_MENU_ITEM_HATCH_AN_EGG}, - [DEBUG_PARTY_MENU_ITEM_HEAL_PARTY] = {sDebugText_Party_HealParty, DEBUG_PARTY_MENU_ITEM_HEAL_PARTY}, - [DEBUG_PARTY_MENU_ITEM_POISON_MONS] = {sDebugText_Party_PoisonParty, DEBUG_PARTY_MENU_ITEM_POISON_MONS}, - [DEBUG_PARTY_MENU_ITEM_CHECK_EV] = {sDebugText_Party_CheckEV, DEBUG_PARTY_MENU_ITEM_CHECK_EV}, - [DEBUG_PARTY_MENU_ITEM_CHECK_IV] = {sDebugText_Party_CheckIV, DEBUG_PARTY_MENU_ITEM_CHECK_IV}, - [DEBUG_PARTY_MENU_ITEM_CLEAR_PARTY] = {sDebugText_Party_ClearParty, DEBUG_PARTY_MENU_ITEM_CLEAR_PARTY}, + [DEBUG_PARTY_MENU_ITEM_MOVE_REMINDER] = {sDebugText_Party_MoveReminder, DEBUG_PARTY_MENU_ITEM_MOVE_REMINDER}, + [DEBUG_PARTY_MENU_ITEM_HATCH_AN_EGG] = {sDebugText_Party_HatchAnEgg, DEBUG_PARTY_MENU_ITEM_HATCH_AN_EGG}, + [DEBUG_PARTY_MENU_ITEM_HEAL_PARTY] = {sDebugText_Party_HealParty, DEBUG_PARTY_MENU_ITEM_HEAL_PARTY}, + [DEBUG_PARTY_MENU_ITEM_INFLICT_STATUS1] = {sDebugText_Party_InflictStatus1, DEBUG_PARTY_MENU_ITEM_INFLICT_STATUS1}, + [DEBUG_PARTY_MENU_ITEM_CHECK_EV] = {sDebugText_Party_CheckEV, DEBUG_PARTY_MENU_ITEM_CHECK_EV}, + [DEBUG_PARTY_MENU_ITEM_CHECK_IV] = {sDebugText_Party_CheckIV, DEBUG_PARTY_MENU_ITEM_CHECK_IV}, + [DEBUG_PARTY_MENU_ITEM_CLEAR_PARTY] = {sDebugText_Party_ClearParty, DEBUG_PARTY_MENU_ITEM_CLEAR_PARTY}, }; static const struct ListMenuItem sDebugMenu_Items_Scripts[] = @@ -912,13 +913,13 @@ static void (*const sDebugMenu_Actions_PCBag_Fill[])(u8) = static void (*const sDebugMenu_Actions_Party[])(u8) = { - [DEBUG_PARTY_MENU_ITEM_MOVE_REMINDER] = DebugAction_Party_MoveReminder, - [DEBUG_PARTY_MENU_ITEM_HATCH_AN_EGG] = DebugAction_Party_HatchAnEgg, - [DEBUG_PARTY_MENU_ITEM_HEAL_PARTY] = DebugAction_Party_HealParty, - [DEBUG_PARTY_MENU_ITEM_POISON_MONS] = DebugAction_Party_PoisonMons, - [DEBUG_PARTY_MENU_ITEM_CHECK_EV] = DebugAction_Party_CheckEV, - [DEBUG_PARTY_MENU_ITEM_CHECK_IV] = DebugAction_Party_CheckIV, - [DEBUG_PARTY_MENU_ITEM_CLEAR_PARTY] = DebugAction_Party_ClearParty, + [DEBUG_PARTY_MENU_ITEM_MOVE_REMINDER] = DebugAction_Party_MoveReminder, + [DEBUG_PARTY_MENU_ITEM_HATCH_AN_EGG] = DebugAction_Party_HatchAnEgg, + [DEBUG_PARTY_MENU_ITEM_HEAL_PARTY] = DebugAction_Party_HealParty, + [DEBUG_PARTY_MENU_ITEM_INFLICT_STATUS1] = DebugAction_Party_InflictStatus1, + [DEBUG_PARTY_MENU_ITEM_CHECK_EV] = DebugAction_Party_CheckEV, + [DEBUG_PARTY_MENU_ITEM_CHECK_IV] = DebugAction_Party_CheckIV, + [DEBUG_PARTY_MENU_ITEM_CLEAR_PARTY] = DebugAction_Party_ClearParty, }; static void (*const sDebugMenu_Actions_Scripts[])(u8) = @@ -5084,22 +5085,9 @@ static void DebugAction_Party_HealParty(u8 taskId) Debug_DestroyMenu_Full(taskId); } -static void DebugAction_Party_PoisonMons(u8 taskId) +static void DebugAction_Party_InflictStatus1(u8 taskId) { - int i; - for (i = 0; i < PARTY_SIZE; i++) - { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, 0) - && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE - && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG) - { - u32 curStatus = STATUS1_POISON; - SetMonData(&gPlayerParty[i], MON_DATA_STATUS, &curStatus); - } - } - PlaySE(SE_FIELD_POISON); - ScriptContext_Enable(); - Debug_DestroyMenu_Full(taskId); + Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_InflictStatus1); } static void DebugAction_Party_CheckEV(u8 taskId) diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c index 358e02e5d9..abe3efe1a2 100644 --- a/src/script_pokemon_util.c +++ b/src/script_pokemon_util.c @@ -486,3 +486,27 @@ void Script_GetChosenMonDefensiveIV(void) ConvertIntToDecimalStringN(gStringVar2, GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_DEF_IV), STR_CONV_MODE_LEFT_ALIGN, 3); ConvertIntToDecimalStringN(gStringVar3, GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPDEF_IV), STR_CONV_MODE_LEFT_ALIGN, 3); } + +void Script_SetStatus1(struct ScriptContext *ctx) +{ + u32 status1 = VarGet(ScriptReadHalfword(ctx)); + u32 slot = VarGet(ScriptReadHalfword(ctx)); + + if (slot >= PARTY_SIZE) + { + u16 species; + + for (slot = 0; slot < PARTY_SIZE; slot++) + { + species = GetMonData(&gPlayerParty[slot], MON_DATA_SPECIES); + if (species != SPECIES_NONE + && species != SPECIES_EGG + && GetMonData(&gPlayerParty[slot], MON_DATA_HP) != 0) + SetMonData(&gPlayerParty[slot], MON_DATA_STATUS, &status1); + } + } + else + { + SetMonData(&gPlayerParty[slot], MON_DATA_STATUS, &status1); + } +} From 5acc770f0076bfd5376379d17c9faaa0146ee418 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sun, 3 Mar 2024 05:07:47 -0300 Subject: [PATCH 27/55] Fixed config comment (#4237) --- include/config/battle.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/config/battle.h b/include/config/battle.h index 58ff0e764c..ffdfc40385 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -180,7 +180,7 @@ // Var Settings // To use the following features in scripting, replace the 0s with the var ID you're assigning it to. -// Eg: Replace with VAR_UNUSED_0x40F7 so you can use B_VAR_TERRAIN for that feature. +// Eg: Replace with VAR_UNUSED_0x40F7 so you can use B_VAR_STARTING_STATUS for that feature. #define B_VAR_STARTING_STATUS 0 // If this var has a value, assigning a STATUS_FIELD_xx_TERRAIN to it before battle causes the battle to start with that terrain active. #define B_VAR_STARTING_STATUS_TIMER 0 // If this var has a value greater or equal than 1 field terrains will last that number of turns, otherwise they will last until they're overwritten. #define B_VAR_WILD_AI_FLAGS 0 // If not 0, you can use this var to add to default wild AI flags. NOT usable with flags above (1 << 15) From 8d58af4d333ff8f18283ded2d7cf8631e4485885 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Mon, 4 Mar 2024 09:54:04 +0100 Subject: [PATCH 28/55] Move most damage AI_BadMove checks to AI_CalcDamage (#4238) * Move a couple damage AI_BadMove checks to AI_CalcDamage * re-add effectivness score decrease * reduce score for bad move in ai_checkviability * review changes --- src/battle_ai_main.c | 130 ++++++++++--------------------------------- src/battle_ai_util.c | 79 +++++++++++++++++++++++++- test/battle/ai.c | 25 +++++++++ 3 files changed, 131 insertions(+), 103 deletions(-) diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 99e1f8c3c8..4eb608d7e4 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -798,47 +798,30 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) SetTypeBeforeUsingMove(move, battlerAtk); GET_MOVE_TYPE(move, moveType); + if (gMovesInfo[move].powderMove && !IsAffectedByPowder(battlerDef, aiData->abilities[battlerDef], aiData->holdEffects[battlerDef])) + RETURN_SCORE_MINUS(10); + + if (IsSemiInvulnerable(battlerDef, move) && moveEffect != EFFECT_SEMI_INVULNERABLE && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) + RETURN_SCORE_MINUS(10); + + if (IsTwoTurnNotSemiInvulnerableMove(battlerAtk, move) && CanTargetFaintAi(battlerDef, battlerAtk)) + RETURN_SCORE_MINUS(10); + + // check if negates type + switch (effectiveness) + { + case AI_EFFECTIVENESS_x0: + RETURN_SCORE_MINUS(20); + break; + case AI_EFFECTIVENESS_x0_125: + case AI_EFFECTIVENESS_x0_25: + RETURN_SCORE_MINUS(10); + break; + } + // check non-user target if (!(moveTarget & MOVE_TARGET_USER)) { - // handle negative checks on non-user target - // check powder moves - if (gMovesInfo[move].powderMove && !IsAffectedByPowder(battlerDef, aiData->abilities[battlerDef], aiData->holdEffects[battlerDef])) - { - RETURN_SCORE_MINUS(20); - } - - // check ground immunities - if (moveType == TYPE_GROUND - && !IsBattlerGrounded(battlerDef) - && ((aiData->abilities[battlerDef] == ABILITY_LEVITATE - && DoesBattlerIgnoreAbilityChecks(aiData->abilities[battlerAtk], move)) - || aiData->holdEffects[battlerDef] == HOLD_EFFECT_AIR_BALLOON - || (gStatuses3[battlerDef] & (STATUS3_MAGNET_RISE | STATUS3_TELEKINESIS))) - && move != MOVE_THOUSAND_ARROWS) - { - RETURN_SCORE_MINUS(20); - } - - // check off screen - if (IsSemiInvulnerable(battlerDef, move) && moveEffect != EFFECT_SEMI_INVULNERABLE && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) - RETURN_SCORE_MINUS(20); // if target off screen and we go first, don't use move - - if (IsTwoTurnNotSemiInvulnerableMove(battlerAtk, move) && CanTargetFaintAi(battlerDef, battlerAtk)) - RETURN_SCORE_MINUS(10); - - // check if negates type - switch (effectiveness) - { - case AI_EFFECTIVENESS_x0: - RETURN_SCORE_MINUS(20); - break; - case AI_EFFECTIVENESS_x0_125: - case AI_EFFECTIVENESS_x0_25: - RETURN_SCORE_MINUS(10); - break; - } - // target ability checks if (!DoesBattlerIgnoreAbilityChecks(aiData->abilities[battlerAtk], move)) { @@ -859,30 +842,10 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; } break; - case ABILITY_VOLT_ABSORB: - case ABILITY_MOTOR_DRIVE: - case ABILITY_LIGHTNING_ROD: - if (moveType == TYPE_ELECTRIC) - RETURN_SCORE_MINUS(20); - break; - case ABILITY_WATER_ABSORB: - case ABILITY_DRY_SKIN: - case ABILITY_STORM_DRAIN: - if (moveType == TYPE_WATER) - RETURN_SCORE_MINUS(20); - break; - case ABILITY_FLASH_FIRE: - if (moveType == TYPE_FIRE) - RETURN_SCORE_MINUS(20); - break; case ABILITY_WONDER_GUARD: if (effectiveness < AI_EFFECTIVENESS_x2) return 0; break; - case ABILITY_SAP_SIPPER: - if (moveType == TYPE_GRASS) - RETURN_SCORE_MINUS(20); - break; case ABILITY_JUSTIFIED: if (moveType == TYPE_DARK && !IS_MOVE_STATUS(move)) RETURN_SCORE_MINUS(10); @@ -892,14 +855,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) && (moveType == TYPE_DARK || moveType == TYPE_GHOST || moveType == TYPE_BUG)) RETURN_SCORE_MINUS(10); break; - case ABILITY_SOUNDPROOF: - if (gMovesInfo[move].soundMove) - RETURN_SCORE_MINUS(10); - break; - case ABILITY_BULLETPROOF: - if (gMovesInfo[move].ballisticMove) - RETURN_SCORE_MINUS(10); - break; case ABILITY_DAZZLING: case ABILITY_QUEENLY_MAJESTY: case ABILITY_ARMOR_TAIL: @@ -1105,12 +1060,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-1); } break; - case EFFECT_DREAM_EATER: - if (!AI_IsBattlerAsleepOrComatose(battlerDef)) - ADJUST_SCORE(-8); - else if (effectiveness == AI_EFFECTIVENESS_x0) - ADJUST_SCORE(-10); - break; // stat raising effects case EFFECT_ATTACK_UP: case EFFECT_ATTACK_UP_2: @@ -1906,10 +1855,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) else if (aiData->hpPercents[battlerAtk] >= 90) ADJUST_SCORE(-8); //No point in healing, but should at least do it if nothing better break; - case EFFECT_SUPER_FANG: - if (aiData->hpPercents[battlerDef] < 50) - ADJUST_SCORE(-4); - break; case EFFECT_RECOIL_IF_MISS: if (aiData->abilities[battlerAtk] != ABILITY_MAGIC_GUARD && AI_DATA->moveAccuracy[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex] < 75) ADJUST_SCORE(-6); @@ -1935,11 +1880,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case EFFECT_METRONOME: break; - case EFFECT_ENDEAVOR: - case EFFECT_PAIN_SPLIT: - if (gBattleMons[battlerAtk].hp > (gBattleMons[battlerAtk].hp + gBattleMons[battlerDef].hp) / 2) - ADJUST_SCORE(-10); - break; case EFFECT_CONVERSION_2: //TODO @@ -1965,9 +1905,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (gBattleMons[battlerDef].status2 & STATUS2_DESTINY_BOND) ADJUST_SCORE(-10); break; - case EFFECT_FALSE_SWIPE: - // TODO - break; case EFFECT_HEAL_BELL: if (!AnyPartyMemberStatused(battlerAtk, gMovesInfo[move].soundMove) || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) ADJUST_SCORE(-10); @@ -2050,10 +1987,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) ADJUST_SCORE(-9); break; - case EFFECT_FAIL_IF_NOT_ARG_TYPE: - if (!IS_BATTLER_OF_TYPE(battlerAtk, gMovesInfo[move].argument)) - ADJUST_SCORE(-10); - break; case EFFECT_DEFOG: if (gSideStatuses[GetBattlerSide(battlerDef)] & (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL | SIDE_STATUS_SAFEGUARD | SIDE_STATUS_MIST) @@ -2155,10 +2088,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (!HasMagicCoatAffectedMove(battlerDef)) ADJUST_SCORE(-10); break; - case EFFECT_BELCH: - if (ItemId_GetPocket(GetUsedHeldItem(battlerAtk)) != POCKET_BERRIES) - ADJUST_SCORE(-10); // attacker has not consumed a berry - break; case EFFECT_YAWN: if (gStatuses3[battlerDef] & STATUS3_YAWN) ADJUST_SCORE(-10); @@ -2578,10 +2507,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (!CanCamouflage(battlerAtk)) ADJUST_SCORE(-10); break; - case EFFECT_LAST_RESORT: - if (!CanUseLastResort(battlerAtk)) - ADJUST_SCORE(-10); - break; case EFFECT_SYNCHRONOISE: //Check holding ring target or is of same type if (aiData->holdEffects[battlerDef] == HOLD_EFFECT_RING_TARGET @@ -2655,10 +2580,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) && !BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPDEF)) ADJUST_SCORE(-10); break; - case EFFECT_LOW_KICK: - if (IsDynamaxed(battlerDef)) - ADJUST_SCORE(-10); - break; case EFFECT_UPPER_HAND: if (predictedMove == MOVE_NONE || IS_MOVE_STATUS(predictedMove) || AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER || GetMovePriority(battlerDef, move) < 1 || GetMovePriority(battlerDef, move) > 3) // Opponent going first or not using priority move ADJUST_SCORE(-10); @@ -3140,7 +3061,7 @@ static s32 AI_CompareDamagingMoves(u32 battlerAtk, u32 battlerDef, u32 currId) if (moves[i] != MOVE_NONE && gMovesInfo[moves[i]].power) { noOfHits[i] = GetNoOfHitsToKOBattler(battlerAtk, battlerDef, i); - if (noOfHits[i] < leastHits) + if (noOfHits[i] < leastHits && noOfHits[i] != 0) { leastHits = noOfHits[i]; } @@ -4694,7 +4615,12 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score return score; if (gMovesInfo[move].power) - score += AI_CompareDamagingMoves(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex); + { + if (GetNoOfHitsToKOBattler(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex) == 0) + ADJUST_SCORE(-20); + else + score += AI_CompareDamagingMoves(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex); + } // Calculates score based on effects of a move score += AI_CalcMoveScore(battlerAtk, battlerDef, move); diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index f78ee6d674..afbfc095d7 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -366,10 +366,84 @@ static inline s32 LowestRollDmg(s32 dmg) return dmg; } +bool32 IsDamageMoveUsable(u32 move, u32 battlerAtk, u32 battlerDef) +{ + s32 moveType; + struct AiLogicData *aiData = AI_DATA; + u32 battlerDefAbility; + + if (DoesBattlerIgnoreAbilityChecks(aiData->abilities[battlerAtk], move)) + battlerDefAbility = ABILITY_NONE; + else + battlerDefAbility = aiData->abilities[battlerDef]; + + SetTypeBeforeUsingMove(move, battlerAtk); + GET_MOVE_TYPE(move, moveType); + + switch (battlerDefAbility) + { + case ABILITY_VOLT_ABSORB: + case ABILITY_MOTOR_DRIVE: + case ABILITY_LIGHTNING_ROD: + if (moveType == TYPE_ELECTRIC) + return TRUE; + break; + case ABILITY_WATER_ABSORB: + case ABILITY_DRY_SKIN: + case ABILITY_STORM_DRAIN: + if (moveType == TYPE_WATER) + return TRUE; + break; + case ABILITY_FLASH_FIRE: + if (moveType == TYPE_FIRE) + return TRUE; + break; + case ABILITY_SOUNDPROOF: + if (gMovesInfo[move].soundMove) + return TRUE; + break; + case ABILITY_BULLETPROOF: + if (gMovesInfo[move].ballisticMove) + return TRUE; + break; + case ABILITY_SAP_SIPPER: + if (moveType == TYPE_GRASS) + return TRUE; + break; + } + + switch (gMovesInfo[move].effect) + { + case EFFECT_DREAM_EATER: + if (!AI_IsBattlerAsleepOrComatose(battlerDef)) + return TRUE; + break; + case EFFECT_BELCH: + if (ItemId_GetPocket(GetUsedHeldItem(battlerAtk)) != POCKET_BERRIES) + return TRUE; + break; + case EFFECT_LAST_RESORT: + if (!CanUseLastResort(battlerAtk)) + return TRUE; + break; + case EFFECT_LOW_KICK: + if (IsDynamaxed(battlerDef)) + return TRUE; + break; + case EFFECT_FAIL_IF_NOT_ARG_TYPE: + if (!IS_BATTLER_OF_TYPE(battlerAtk, gMovesInfo[move].argument)) + return TRUE; + break; + } + + return FALSE; +} + s32 AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectiveness, bool32 considerZPower, u32 weather) { s32 dmg, moveType; uq4_12_t effectivenessMultiplier; + bool32 isDamageMoveUnusable = FALSE; struct AiLogicData *aiData = AI_DATA; SetBattlerData(battlerAtk); @@ -393,8 +467,11 @@ s32 AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectivenes SetTypeBeforeUsingMove(move, battlerAtk); GET_MOVE_TYPE(move, moveType); - effectivenessMultiplier = CalcTypeEffectivenessMultiplier(move, moveType, battlerAtk, battlerDef, aiData->abilities[battlerDef], FALSE); if (gMovesInfo[move].power) + isDamageMoveUnusable = IsDamageMoveUsable(move, battlerAtk, battlerDef); + + effectivenessMultiplier = CalcTypeEffectivenessMultiplier(move, moveType, battlerAtk, battlerDef, aiData->abilities[battlerDef], FALSE); + if (gMovesInfo[move].power && !isDamageMoveUnusable) { s32 critChanceIndex, normalDmg, fixedBasePower, n; diff --git a/test/battle/ai.c b/test/battle/ai.c index 7b9d07429e..b52400acc9 100644 --- a/test/battle/ai.c +++ b/test/battle/ai.c @@ -752,3 +752,28 @@ AI_DOUBLE_BATTLE_TEST("AI will not try to switch for the same pokemon for 2 spot } } } + +AI_SINGLE_BATTLE_TEST("AI will not choose Burn Up if the user lost the Fire typing") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_BURN_UP].effect == EFFECT_FAIL_IF_NOT_ARG_TYPE); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_CYNDAQUIL) { Moves(MOVE_BURN_UP, MOVE_EXTRASENSORY, MOVE_FLAMETHROWER); } + } WHEN { + TURN { EXPECT_MOVE(opponent, MOVE_BURN_UP); } + TURN { EXPECT_MOVE(opponent, MOVE_FLAMETHROWER); } + } +} + +AI_SINGLE_BATTLE_TEST("AI will choose Surf over Thunderbolt and Ice Beam if the opposing mon has Volt Absorb") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_THUNDERBOLT].type == TYPE_ELECTRIC); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_LANTURN) { Ability(ABILITY_VOLT_ABSORB); }; + OPPONENT(SPECIES_LANTURN) { Moves(MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_SURF); } + } WHEN { + TURN { EXPECT_MOVE(opponent, MOVE_SURF); } + } +} From 650f80d57efb0b878f140283bd51beee41a8688c Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 4 Mar 2024 17:36:23 +0100 Subject: [PATCH 29/55] remove some unused data (#4239) --- include/battle.h | 4 ---- src/battle_anim_utility_funcs.c | 5 ----- src/battle_bg.c | 1 - src/battle_controller_opponent.c | 3 --- src/battle_controllers.c | 4 ---- src/battle_dome.c | 11 ----------- src/battle_intro.c | 11 +++++------ src/battle_main.c | 4 ---- src/battle_transition_frontier.c | 3 --- src/data/battle_anim.h | 1 - 10 files changed, 5 insertions(+), 42 deletions(-) diff --git a/include/battle.h b/include/battle.h index 6d3516d928..c32c03fc55 100644 --- a/include/battle.h +++ b/include/battle.h @@ -1010,7 +1010,6 @@ extern u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT]; extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT + 13]; //to handle stupidly large z move names extern u32 gBattleTypeFlags; extern u8 gBattleTerrain; -extern u32 gUnusedFirstBattleVar1; extern u8 *gBattleAnimBgTileBuffer; extern u8 *gBattleAnimBgTilemapBuffer; extern u32 gBattleControllerExecFlags; @@ -1057,7 +1056,6 @@ extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT]; extern u16 gMoveResultFlags; extern u32 gHitMarker; extern u8 gBideTarget[MAX_BATTLERS_COUNT]; -extern u8 gUnusedFirstBattleVar2; extern u32 gSideStatuses[NUM_BATTLE_SIDES]; extern struct SideTimer gSideTimers[NUM_BATTLE_SIDES]; extern u32 gStatuses3[MAX_BATTLERS_COUNT]; @@ -1089,8 +1087,6 @@ extern bool8 gTransformedShininess[MAX_BATTLERS_COUNT]; extern u8 gPlayerDpadHoldFrames; extern struct BattleSpriteData *gBattleSpritesDataPtr; extern struct MonSpritesGfx *gMonSpritesGfxPtr; -extern struct BattleHealthboxInfo *gBattleControllerOpponentHealthboxData; -extern struct BattleHealthboxInfo *gBattleControllerOpponentFlankHealthboxData; extern u16 gBattleMovePower; extern u16 gMoveToLearn; extern u32 gFieldStatuses; diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 491ca77a96..a8de8eddd9 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -40,11 +40,6 @@ static void AnimTask_WaitAndRestoreVisibility(u8); static const u16 sCurseLinesPalette[] = { RGB_WHITE }; -// These belong in battle_intro.c, but putting them there causes 2 bytes of alignment padding -// between the two .rodata segments. Perhaps battle_intro.c actually belongs in this file, too. -const u8 gBattleAnimBgCntSet[] = {REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT}; -const u8 gBattleAnimBgCntGet[] = {REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT}; - void AnimTask_BlendBattleAnimPal(u8 taskId) { u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); diff --git a/src/battle_bg.c b/src/battle_bg.c index 8f647f8d59..0f802d52de 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -29,7 +29,6 @@ #include "constants/battle_partner.h" // .rodata -static const u16 sUnrefArray[] = {0x0300, 0x0000}; //OamData? static const struct OamData sVsLetter_V_OamData = { diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 395ad81ad9..97b0a061bb 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -170,9 +170,6 @@ static void Intro_WaitForShinyAnimAndHealthbox(u32 battler) twoMons = TRUE; } - gBattleControllerOpponentHealthboxData = &gBattleSpritesDataPtr->healthBoxesData[battler]; - gBattleControllerOpponentFlankHealthboxData = &gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)]; - if (healthboxAnimDone) { if (twoMons == TRUE) diff --git a/src/battle_controllers.c b/src/battle_controllers.c index a7d9610dac..b2ae3039df 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -83,10 +83,6 @@ void SetUpBattleVarsAndBirchZigzagoon(void) i = 0; SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &i); } - - // Below are never read - gUnusedFirstBattleVar1 = 0; - gUnusedFirstBattleVar2 = 0; } void InitBattleControllers(void) diff --git a/src/battle_dome.c b/src/battle_dome.c index 539bf12a32..0978ae4888 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -198,17 +198,6 @@ static const u8 sBattleStyleThresholds[NUM_BATTLE_STYLES - 1][NUM_MOVE_POINT_TYP [DOME_BATTLE_STYLE_UNUSED3] = {0}, //[DOME_BATTLE_STYLE_UNUSED4] = {0}, // Excluded here, presumably was meant to be a style just for Dome Ace Tucker }; -static const u8 sUnusedArray[] = -{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 3, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, - 0, 2, 253, 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, 0, 253, 0, - 0, 0, 0, 0, 253, 0, 0, 0, 0, 0, 253, 254, 0, 0, 0, 0, - 0, 254, 0, 0, 0, 0, 0, 254, 0, 0, 0, 0, 0, 254, 0, 0, - 0, 0, 0, 254, 0, 0, 0, 0, 0, -}; // 1st array is for cursor position (sprite id): cursor can be on a trainer info button, a match info button, or the exit/cancel button // 2nd array is for round count. For some reason this array contains an inaccessible Round 5 which is identical to Round 4 diff --git a/src/battle_intro.c b/src/battle_intro.c index 5bb6ce9648..858a32b13b 100644 --- a/src/battle_intro.c +++ b/src/battle_intro.c @@ -12,15 +12,14 @@ #include "constants/battle_partner.h" #include "constants/trainers.h" -extern const u8 gBattleAnimBgCntSet[]; -extern const u8 gBattleAnimBgCntGet[]; - static void BattleIntroSlide1(u8); static void BattleIntroSlide2(u8); static void BattleIntroSlide3(u8); static void BattleIntroSlideLink(u8); static void BattleIntroSlidePartner(u8); +static const u8 sBattleAnimBgCnts[] = {REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT}; + static const TaskFunc sBattleIntroSlideFuncs[] = { [BATTLE_TERRAIN_GRASS] = BattleIntroSlide1, @@ -39,7 +38,7 @@ void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value) { if (bgId < 4) { - u32 bgCnt = GetGpuReg(gBattleAnimBgCntSet[bgId]); + u32 bgCnt = GetGpuReg(sBattleAnimBgCnts[bgId]); switch (attributeId) { case BG_ANIM_SCREEN_SIZE: @@ -65,7 +64,7 @@ void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value) break; } - SetGpuReg(gBattleAnimBgCntSet[bgId], bgCnt); + SetGpuReg(sBattleAnimBgCnts[bgId], bgCnt); } } @@ -75,7 +74,7 @@ int GetAnimBgAttribute(u8 bgId, u8 attributeId) if (bgId < 4) { - bgCnt = GetGpuReg(gBattleAnimBgCntGet[bgId]); + bgCnt = GetGpuReg(sBattleAnimBgCnts[bgId]); switch (attributeId) { case BG_ANIM_SCREEN_SIZE: diff --git a/src/battle_main.c b/src/battle_main.c index b4430100d2..c592eb6688 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -137,7 +137,6 @@ EWRAM_DATA u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT] = {0}; EWRAM_DATA u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT + 13] = {0}; // expanded for stupidly long z move names EWRAM_DATA u32 gBattleTypeFlags = 0; EWRAM_DATA u8 gBattleTerrain = 0; -EWRAM_DATA u32 gUnusedFirstBattleVar1 = 0; // Never read EWRAM_DATA struct MultiPartnerMenuPokemon gMultiPartnerParty[MULTI_PARTY_SIZE] = {0}; EWRAM_DATA static struct MultiPartnerMenuPokemon* sMultiPartnerPartyBuffer = NULL; EWRAM_DATA u8 *gBattleAnimBgTileBuffer = NULL; @@ -186,7 +185,6 @@ EWRAM_DATA u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u16 gMoveResultFlags = 0; EWRAM_DATA u32 gHitMarker = 0; EWRAM_DATA u8 gBideTarget[MAX_BATTLERS_COUNT] = {0}; -EWRAM_DATA u8 gUnusedFirstBattleVar2 = 0; // Never read EWRAM_DATA u32 gSideStatuses[NUM_BATTLE_SIDES] = {0}; EWRAM_DATA struct SideTimer gSideTimers[NUM_BATTLE_SIDES] = {0}; EWRAM_DATA u32 gStatuses3[MAX_BATTLERS_COUNT] = {0}; @@ -218,8 +216,6 @@ EWRAM_DATA bool8 gTransformedShininess[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u8 gPlayerDpadHoldFrames = 0; EWRAM_DATA struct BattleSpriteData *gBattleSpritesDataPtr = NULL; EWRAM_DATA struct MonSpritesGfx *gMonSpritesGfxPtr = NULL; -EWRAM_DATA struct BattleHealthboxInfo *gBattleControllerOpponentHealthboxData = NULL; // Never read -EWRAM_DATA struct BattleHealthboxInfo *gBattleControllerOpponentFlankHealthboxData = NULL; // Never read EWRAM_DATA u16 gBattleMovePower = 0; EWRAM_DATA u16 gMoveToLearn = 0; EWRAM_DATA u32 gFieldStatuses = 0; diff --git a/src/battle_transition_frontier.c b/src/battle_transition_frontier.c index 417bd96d63..3e40129fa5 100644 --- a/src/battle_transition_frontier.c +++ b/src/battle_transition_frontier.c @@ -50,9 +50,6 @@ static const u32 sLogoCenter_Tilemap[] = INCBIN_U32("graphics/battle_transitions static const u32 sLogoCircles_Gfx[] = INCBIN_U32("graphics/battle_transitions/frontier_logo_circles.4bpp.lz"); static const u16 sLogo_Pal[] = INCBIN_U16("graphics/battle_transitions/frontier_logo_circles.gbapal"); -// Unused Empty data. -static const u8 sFiller[0x1C0] = {0}; - static const struct OamData sOamData_LogoCircles = { .y = 0, diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h index 239e655918..77b61584ca 100644 --- a/src/data/battle_anim.h +++ b/src/data/battle_anim.h @@ -12,7 +12,6 @@ const struct OamData gOamData_AffineOff_ObjNormal_8x8 = .paletteNum = 0, }; - const struct OamData gOamData_AffineOff_ObjNormal_16x16 = { .y = 0, From b9f715f1144744245d2ab729639ebdc1f3f11f50 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 4 Mar 2024 22:31:05 +0100 Subject: [PATCH 30/55] Fix possible multi battle bug (#4240) --- src/data.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data.c b/src/data.c index 074b067ac9..3f516d3a7f 100644 --- a/src/data.c +++ b/src/data.c @@ -222,6 +222,7 @@ const union AnimCmd *const gAnims_MonPic[MAX_MON_PIC_FRAMES] = const union AnimCmd *const sAnims_Trainer[] ={ sAnim_GeneralFrame0, + sAnim_GeneralFrame0, }; #include "data/trainer_parties.h" From 1565171235f74a9335b42b14a0008d2765367771 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 5 Mar 2024 14:08:02 -0300 Subject: [PATCH 31/55] Fixed considering Mold Breaker but not Turboblaze/Teravolt for flinch-related decisions (#4244) --- src/battle_ai_util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index e89380aad8..ea54dcce3d 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -2918,7 +2918,7 @@ bool32 AI_CanBeInfatuated(u32 battlerAtk, u32 battlerDef, u32 defAbility) u32 ShouldTryToFlinch(u32 battlerAtk, u32 battlerDef, u32 atkAbility, u32 defAbility, u32 move) { - if (((AI_DATA->abilities[battlerAtk] != ABILITY_MOLD_BREAKER && (defAbility == ABILITY_SHIELD_DUST || defAbility == ABILITY_INNER_FOCUS)) + if (((!IsMoldBreakerTypeAbility(AI_DATA->abilities[battlerAtk]) && (defAbility == ABILITY_SHIELD_DUST || defAbility == ABILITY_INNER_FOCUS)) || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_COVERT_CLOAK || DoesSubstituteBlockMove(battlerAtk, battlerDef, move) || AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER)) // Opponent goes first @@ -2958,7 +2958,7 @@ bool32 ShouldFakeOut(u32 battlerAtk, u32 battlerDef, u32 move) || AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_CHOICE_BAND || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_COVERT_CLOAK || DoesSubstituteBlockMove(battlerAtk, battlerDef, move) - || (AI_DATA->abilities[battlerAtk] != ABILITY_MOLD_BREAKER + || (!IsMoldBreakerTypeAbility(AI_DATA->abilities[battlerAtk]) && (AI_DATA->abilities[battlerDef] == ABILITY_SHIELD_DUST || AI_DATA->abilities[battlerDef] == ABILITY_INNER_FOCUS))) return FALSE; From 7da5cb421ecd65d5b607158feebde53728e1171c Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 6 Mar 2024 16:13:06 +0100 Subject: [PATCH 32/55] Make sure gHeap is always aligned --- gflib/malloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gflib/malloc.c b/gflib/malloc.c index 829877d892..8573611bb9 100644 --- a/gflib/malloc.c +++ b/gflib/malloc.c @@ -4,7 +4,7 @@ static void *sHeapStart; static u32 sHeapSize; -EWRAM_DATA u8 gHeap[HEAP_SIZE] = {0}; +ALIGNED(4) EWRAM_DATA u8 gHeap[HEAP_SIZE] = {0}; #define MALLOC_SYSTEM_ID 0xA3A3 From c91af31a268867730d193b84ff9d3333f062868f Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Wed, 6 Mar 2024 12:54:44 -0300 Subject: [PATCH 33/55] Fixed P_FOOTPRINTS not compiling (#4251) --- src/data/pokemon/species_info/gen_1.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/pokemon/species_info/gen_1.h b/src/data/pokemon/species_info/gen_1.h index 8605182e58..6e36d7f0d5 100644 --- a/src/data/pokemon/species_info/gen_1.h +++ b/src/data/pokemon/species_info/gen_1.h @@ -3870,7 +3870,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 18, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Dugtrio, \ + FOOTPRINT(Dugtrio) \ .formSpeciesIdTable = sDugtrioFormSpeciesIdTable, \ DIGLETT_FAMILY_MISC_INFO From 3b45fda8e9732f53c28fed145c954da5e6eb041f Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 6 Mar 2024 22:22:05 +0100 Subject: [PATCH 34/55] Use u32 in gflib functions and remove unused (#4250) --- gflib/bg.c | 145 +++++++++++++++++++------------------------ gflib/bg.h | 71 +++++++++++---------- gflib/dma3.h | 4 +- gflib/dma3_manager.c | 4 +- gflib/io_reg.c | 19 ------ gflib/sprite.c | 63 ++++++++----------- gflib/sprite.h | 10 +-- gflib/string_util.c | 12 ++-- gflib/text.c | 18 +++--- gflib/text.h | 12 ++-- gflib/window.c | 74 +++++++++++----------- gflib/window.h | 44 ++++++------- src/main.c | 3 - 13 files changed, 214 insertions(+), 265 deletions(-) diff --git a/gflib/bg.c b/gflib/bg.c index 4e426b762b..08bc402f71 100644 --- a/gflib/bg.c +++ b/gflib/bg.c @@ -19,9 +19,6 @@ struct BgControl u8 charBaseIndex:2; u8 mapBaseIndex:5; u8 paletteMode:1; - - u8 unknown_2; // Assigned to but never read - u8 unknown_3; // Assigned to but never read } configs[NUM_BACKGROUNDS]; u16 bgVisibilityAndMode; @@ -31,7 +28,6 @@ struct BgConfig2 { u32 baseTile:10; u32 basePalette:4; - u32 unk_3:18; void *tilemap; s32 bg_x; @@ -46,7 +42,7 @@ u32 gWindowTileAutoAllocEnabled; static const struct BgConfig sZeroedBgControlStruct = { 0 }; -static u32 GetBgType(u8 bg); +static u32 GetBgType(u32 bg); void ResetBgs(void) { @@ -55,13 +51,13 @@ void ResetBgs(void) SetTextModeAndHideBgs(); } -static void SetBgModeInternal(u8 bgMode) +static void SetBgModeInternal(u32 bgMode) { sGpuBgConfigs.bgVisibilityAndMode &= ~0x7; sGpuBgConfigs.bgVisibilityAndMode |= bgMode; } -u8 GetBgMode(void) +u32 GetBgMode(void) { return sGpuBgConfigs.bgVisibilityAndMode & 0x7; } @@ -76,7 +72,7 @@ void ResetBgControlStructs(void) } } -void Unused_ResetBgControlStruct(u8 bg) +void Unused_ResetBgControlStruct(u32 bg) { if (!IsInvalidBg(bg)) { @@ -96,7 +92,7 @@ enum BG_CTRL_ATTR_WRAPAROUND = 8, }; -static void SetBgControlAttributes(u8 bg, u8 charBaseIndex, u8 mapBaseIndex, u8 screenSize, u8 paletteMode, u8 priority, u8 mosaic, u8 wraparound) +static void SetBgControlAttributes(u32 bg, u8 charBaseIndex, u8 mapBaseIndex, u8 screenSize, u8 paletteMode, u8 priority, u8 mosaic, u8 wraparound) { if (!IsInvalidBg(bg)) { @@ -135,14 +131,11 @@ static void SetBgControlAttributes(u8 bg, u8 charBaseIndex, u8 mapBaseIndex, u8 sGpuBgConfigs.configs[bg].wraparound = wraparound; } - sGpuBgConfigs.configs[bg].unknown_2 = 0; - sGpuBgConfigs.configs[bg].unknown_3 = 0; - sGpuBgConfigs.configs[bg].visible = 1; } } -static u16 GetBgControlAttribute(u8 bg, u8 attributeId) +static u16 GetBgControlAttribute(u32 bg, u32 attributeId) { if (!IsInvalidBg(bg) && sGpuBgConfigs.configs[bg].visible) { @@ -170,7 +163,7 @@ static u16 GetBgControlAttribute(u8 bg, u8 attributeId) return 0xFF; } -u8 LoadBgVram(u8 bg, const void *src, u16 size, u16 destOffset, u8 mode) +u8 LoadBgVram(u32 bg, const void *src, u16 size, u16 destOffset, u32 mode) { u16 offset; s8 cursor; @@ -202,7 +195,7 @@ u8 LoadBgVram(u8 bg, const void *src, u16 size, u16 destOffset, u8 mode) return cursor; } -static void ShowBgInternal(u8 bg) +static void ShowBgInternal(u32 bg) { u16 value; if (!IsInvalidBg(bg) && sGpuBgConfigs.configs[bg].visible) @@ -222,7 +215,7 @@ static void ShowBgInternal(u8 bg) } } -static void HideBgInternal(u8 bg) +static void HideBgInternal(u32 bg) { if (!IsInvalidBg(bg)) { @@ -241,7 +234,7 @@ void SetTextModeAndHideBgs(void) SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) & ~DISPCNT_ALL_BG_AND_MODE_BITS); } -static void SetBgAffineInternal(u8 bg, s32 srcCenterX, s32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle) +static void SetBgAffineInternal(u32 bg, s32 srcCenterX, s32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle) { struct BgAffineSrcData src; struct BgAffineDstData dest; @@ -282,7 +275,7 @@ static void SetBgAffineInternal(u8 bg, s32 srcCenterX, s32 srcCenterY, s16 dispC SetGpuReg(REG_OFFSET_BG2Y_H, (s16)(dest.dy >> 16)); } -bool8 IsInvalidBg(u8 bg) +bool32 IsInvalidBg(u32 bg) { if (bg >= NUM_BACKGROUNDS) return TRUE; @@ -309,10 +302,10 @@ void ResetBgsAndClearDma3BusyFlags(u32 leftoverFireRedLeafGreenVariable) gWindowTileAutoAllocEnabled = leftoverFireRedLeafGreenVariable; } -void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numTemplates) +void InitBgsFromTemplates(u32 bgMode, const struct BgTemplate *templates, u8 numTemplates) { int i; - u8 bg; + u32 bg; SetBgModeInternal(bgMode); ResetBgControlStructs(); @@ -333,7 +326,6 @@ void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numT sGpuBgConfigs2[bg].baseTile = templates[i].baseTile; sGpuBgConfigs2[bg].basePalette = 0; - sGpuBgConfigs2[bg].unk_3 = 0; sGpuBgConfigs2[bg].tilemap = NULL; sGpuBgConfigs2[bg].bg_x = 0; @@ -344,7 +336,7 @@ void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numT void InitBgFromTemplate(const struct BgTemplate *template) { - u8 bg = template->bg; + u32 bg = template->bg; if (bg < NUM_BACKGROUNDS) { @@ -359,7 +351,6 @@ void InitBgFromTemplate(const struct BgTemplate *template) sGpuBgConfigs2[bg].baseTile = template->baseTile; sGpuBgConfigs2[bg].basePalette = 0; - sGpuBgConfigs2[bg].unk_3 = 0; sGpuBgConfigs2[bg].tilemap = NULL; sGpuBgConfigs2[bg].bg_x = 0; @@ -367,12 +358,12 @@ void InitBgFromTemplate(const struct BgTemplate *template) } } -void SetBgMode(u8 bgMode) +void SetBgMode(u32 bgMode) { SetBgModeInternal(bgMode); } -u16 LoadBgTiles(u8 bg, const void *src, u16 size, u16 destOffset) +u16 LoadBgTiles(u32 bg, const void *src, u16 size, u16 destOffset) { u16 tileOffset; u8 cursor; @@ -404,7 +395,7 @@ u16 LoadBgTiles(u8 bg, const void *src, u16 size, u16 destOffset) return cursor; } -u16 LoadBgTilemap(u8 bg, const void *src, u16 size, u16 destOffset) +u16 LoadBgTilemap(u32 bg, const void *src, u16 size, u16 destOffset) { u8 cursor = LoadBgVram(bg, src, size, destOffset * 2, DISPCNT_MODE_2); @@ -418,11 +409,11 @@ u16 LoadBgTilemap(u8 bg, const void *src, u16 size, u16 destOffset) return cursor; } -u16 Unused_LoadBgPalette(u8 bg, const void *src, u16 size, u16 destOffset) +u16 Unused_LoadBgPalette(u32 bg, const void *src, u16 size, u16 destOffset) { s8 cursor; - if (!IsInvalidBg32(bg)) + if (!IsInvalidBg(bg)) { u16 paletteOffset = PLTT_OFFSET_4BPP(sGpuBgConfigs2[bg].basePalette) + (destOffset * 2); cursor = RequestDma3Copy(src, (void *)(paletteOffset + BG_PLTT), size, 0); @@ -440,7 +431,7 @@ u16 Unused_LoadBgPalette(u8 bg, const void *src, u16 size, u16 destOffset) return (u8)cursor; } -bool8 IsDma3ManagerBusyWithBgCopy(void) +bool32 IsDma3ManagerBusyWithBgCopy(void) { int i; @@ -464,19 +455,19 @@ bool8 IsDma3ManagerBusyWithBgCopy(void) return FALSE; } -void ShowBg(u8 bg) +void ShowBg(u32 bg) { ShowBgInternal(bg); SyncBgVisibilityAndMode(); } -void HideBg(u8 bg) +void HideBg(u32 bg) { HideBgInternal(bg); SyncBgVisibilityAndMode(); } -void SetBgAttribute(u8 bg, u8 attributeId, u8 value) +void SetBgAttribute(u32 bg, u32 attributeId, u8 value) { switch (attributeId) { @@ -504,7 +495,7 @@ void SetBgAttribute(u8 bg, u8 attributeId, u8 value) } } -u16 GetBgAttribute(u8 bg, u8 attributeId) +u16 GetBgAttribute(u32 bg, u32 attributeId) { switch (attributeId) { @@ -541,13 +532,13 @@ u16 GetBgAttribute(u8 bg, u8 attributeId) } } -s32 ChangeBgX(u8 bg, s32 value, u8 op) +s32 ChangeBgX(u32 bg, s32 value, u8 op) { - u8 mode; + u32 mode; u16 temp1; u16 temp2; - if (IsInvalidBg32(bg) || !GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE)) + if (IsInvalidBg(bg) || !GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE)) { return -1; } @@ -611,9 +602,9 @@ s32 ChangeBgX(u8 bg, s32 value, u8 op) return sGpuBgConfigs2[bg].bg_x; } -s32 GetBgX(u8 bg) +s32 GetBgX(u32 bg) { - if (IsInvalidBg32(bg)) + if (IsInvalidBg(bg)) return -1; else if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE)) return -1; @@ -621,13 +612,13 @@ s32 GetBgX(u8 bg) return sGpuBgConfigs2[bg].bg_x; } -s32 ChangeBgY(u8 bg, s32 value, u8 op) +s32 ChangeBgY(u32 bg, s32 value, u8 op) { - u8 mode; + u32 mode; u16 temp1; u16 temp2; - if (IsInvalidBg32(bg) || !GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE)) + if (IsInvalidBg(bg) || !GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE)) { return -1; } @@ -691,13 +682,13 @@ s32 ChangeBgY(u8 bg, s32 value, u8 op) return sGpuBgConfigs2[bg].bg_y; } -s32 ChangeBgY_ScreenOff(u8 bg, s32 value, u8 op) +s32 ChangeBgY_ScreenOff(u32 bg, s32 value, u8 op) { - u8 mode; + u32 mode; u16 temp1; u16 temp2; - if (IsInvalidBg32(bg) || !GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE)) + if (IsInvalidBg(bg) || !GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE)) { return -1; } @@ -762,9 +753,9 @@ s32 ChangeBgY_ScreenOff(u8 bg, s32 value, u8 op) return sGpuBgConfigs2[bg].bg_y; } -s32 GetBgY(u8 bg) +s32 GetBgY(u32 bg) { - if (IsInvalidBg32(bg)) + if (IsInvalidBg(bg)) return -1; else if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE)) return -1; @@ -772,12 +763,12 @@ s32 GetBgY(u8 bg) return sGpuBgConfigs2[bg].bg_y; } -void SetBgAffine(u8 bg, s32 srcCenterX, s32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle) +void SetBgAffine(u32 bg, s32 srcCenterX, s32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle) { SetBgAffineInternal(bg, srcCenterX, srcCenterY, dispCenterX, dispCenterY, scaleX, scaleY, rotationAngle); } -u8 Unused_AdjustBgMosaic(u8 val, u8 mode) +u8 Unused_AdjustBgMosaic(u8 val, u32 mode) { u16 mosaic = GetGpuReg(REG_OFFSET_MOSAIC); s16 bgH = mosaic & 0xF; @@ -848,25 +839,25 @@ u8 Unused_AdjustBgMosaic(u8 val, u8 mode) return mosaic; } -void SetBgTilemapBuffer(u8 bg, void *tilemap) +void SetBgTilemapBuffer(u32 bg, void *tilemap) { - if (!IsInvalidBg32(bg) && GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE)) + if (!IsInvalidBg(bg) && GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE)) { sGpuBgConfigs2[bg].tilemap = tilemap; } } -void UnsetBgTilemapBuffer(u8 bg) +void UnsetBgTilemapBuffer(u32 bg) { - if (!IsInvalidBg32(bg) && GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE)) + if (!IsInvalidBg(bg) && GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE)) { sGpuBgConfigs2[bg].tilemap = NULL; } } -void *GetBgTilemapBuffer(u8 bg) +void *GetBgTilemapBuffer(u32 bg) { - if (IsInvalidBg32(bg)) + if (IsInvalidBg(bg)) return NULL; else if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE)) return NULL; @@ -874,9 +865,9 @@ void *GetBgTilemapBuffer(u8 bg) return sGpuBgConfigs2[bg].tilemap; } -void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset) +void CopyToBgTilemapBuffer(u32 bg, const void *src, u16 mode, u16 destOffset) { - if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg)) + if (!IsInvalidBg(bg) && !IsTileMapOutsideWram(bg)) { if (mode != 0) CpuCopy16(src, (void *)(sGpuBgConfigs2[bg].tilemap + (destOffset * 2)), mode); @@ -885,11 +876,11 @@ void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset) } } -void CopyBgTilemapBufferToVram(u8 bg) +void CopyBgTilemapBufferToVram(u32 bg) { u16 sizeToLoad; - if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg)) + if (!IsInvalidBg(bg) && !IsTileMapOutsideWram(bg)) { switch (GetBgType(bg)) { @@ -907,13 +898,13 @@ void CopyBgTilemapBufferToVram(u8 bg) } } -void CopyToBgTilemapBufferRect(u8 bg, const void *src, u8 destX, u8 destY, u8 width, u8 height) +void CopyToBgTilemapBufferRect(u32 bg, const void *src, u8 destX, u8 destY, u8 width, u8 height) { u16 destX16; u16 destY16; u16 mode; - if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg)) + if (!IsInvalidBg(bg) && !IsTileMapOutsideWram(bg)) { switch (GetBgType(bg)) { @@ -946,19 +937,19 @@ void CopyToBgTilemapBufferRect(u8 bg, const void *src, u8 destX, u8 destY, u8 wi } } -void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette) +void CopyToBgTilemapBufferRect_ChangePalette(u32 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette) { CopyRectToBgTilemapBufferRect(bg, src, 0, 0, rectWidth, rectHeight, destX, destY, rectWidth, rectHeight, palette, 0, 0); } -void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, s16 tileOffset, s16 palette2) +void CopyRectToBgTilemapBufferRect(u32 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, s16 tileOffset, s16 palette2) { u16 screenWidth, screenHeight, screenSize; u16 var; const void *srcPtr; u16 i, j; - if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg)) + if (!IsInvalidBg(bg) && !IsTileMapOutsideWram(bg)) { screenSize = GetBgControlAttribute(bg, BG_CTRL_ATTR_SCREENSIZE); screenWidth = GetBgMetricTextMode(bg, 0x1) * 0x20; @@ -995,13 +986,13 @@ void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 } } -void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height) +void FillBgTilemapBufferRect_Palette0(u32 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height) { u16 x16; u16 y16; u16 mode; - if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg)) + if (!IsInvalidBg(bg) && !IsTileMapOutsideWram(bg)) { switch (GetBgType(bg)) { @@ -1028,12 +1019,12 @@ void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, } } -void FillBgTilemapBufferRect(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height, u8 palette) +void FillBgTilemapBufferRect(u32 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height, u8 palette) { WriteSequenceToBgTilemapBuffer(bg, tileNum, x, y, width, height, palette, 0); } -void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot, s16 tileNumDelta) +void WriteSequenceToBgTilemapBuffer(u32 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot, s16 tileNumDelta) { u16 mode; u16 mode2; @@ -1041,7 +1032,7 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt u16 mode3; u16 x16, y16; - if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg)) + if (!IsInvalidBg(bg) && !IsTileMapOutsideWram(bg)) { attribute = GetBgControlAttribute(bg, BG_CTRL_ATTR_SCREENSIZE); mode = GetBgMetricTextMode(bg, 0x1) * 0x20; @@ -1073,7 +1064,7 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt } } -u16 GetBgMetricTextMode(u8 bg, u8 whichMetric) +u16 GetBgMetricTextMode(u32 bg, u32 whichMetric) { u8 screenSize = GetBgControlAttribute(bg, BG_CTRL_ATTR_SCREENSIZE); @@ -1119,7 +1110,7 @@ u16 GetBgMetricTextMode(u8 bg, u8 whichMetric) return 0; } -u32 GetBgMetricAffineMode(u8 bg, u8 whichMetric) +u32 GetBgMetricAffineMode(u32 bg, u32 whichMetric) { u8 screenSize = GetBgControlAttribute(bg, BG_CTRL_ATTR_SCREENSIZE); @@ -1192,9 +1183,9 @@ void CopyTileMapEntry(const u16 *src, u16 *dest, s32 palette1, s32 tileOffset, s *dest = var; } -static u32 GetBgType(u8 bg) +static u32 GetBgType(u32 bg) { - u8 mode = GetBgMode(); + u32 mode = GetBgMode(); switch (bg) { @@ -1231,15 +1222,7 @@ static u32 GetBgType(u8 bg) return BG_TYPE_NONE; } -bool32 IsInvalidBg32(u8 bg) -{ - if (bg >= NUM_BACKGROUNDS) - return TRUE; - else - return FALSE; -} - -bool32 IsTileMapOutsideWram(u8 bg) +bool32 IsTileMapOutsideWram(u32 bg) { if (sGpuBgConfigs2[bg].tilemap > (void *)IWRAM_END) return TRUE; diff --git a/gflib/bg.h b/gflib/bg.h index 9818339910..f981ed4b8c 100644 --- a/gflib/bg.h +++ b/gflib/bg.h @@ -51,48 +51,47 @@ struct BgTemplate }; void ResetBgs(void); -u8 GetBgMode(void); +u32 GetBgMode(void); void ResetBgControlStructs(void); -void Unused_ResetBgControlStruct(u8 bg); -u8 LoadBgVram(u8 bg, const void *src, u16 size, u16 destOffset, u8 mode); +void Unused_ResetBgControlStruct(u32 bg); +u8 LoadBgVram(u32 bg, const void *src, u16 size, u16 destOffset, u32 mode); void SetTextModeAndHideBgs(void); -bool8 IsInvalidBg(u8 bg); +bool32 IsInvalidBg(u32 bg); int BgTileAllocOp(int bg, int offset, int count, int mode); void ResetBgsAndClearDma3BusyFlags(u32 leftoverFireRedLeafGreenVariable); -void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numTemplates); +void InitBgsFromTemplates(u32 bgMode, const struct BgTemplate *templates, u8 numTemplates); void InitBgFromTemplate(const struct BgTemplate *template); -void SetBgMode(u8 bgMode); -u16 LoadBgTiles(u8 bg, const void *src, u16 size, u16 destOffset); -u16 LoadBgTilemap(u8 bg, const void *src, u16 size, u16 destOffset); -u16 Unused_LoadBgPalette(u8 bg, const void *src, u16 size, u16 destOffset); -bool8 IsDma3ManagerBusyWithBgCopy(void); -void ShowBg(u8 bg); -void HideBg(u8 bg); -void SetBgAttribute(u8 bg, u8 attributeId, u8 value); -u16 GetBgAttribute(u8 bg, u8 attributeId); -s32 ChangeBgX(u8 bg, s32 value, u8 op); -s32 GetBgX(u8 bg); -s32 ChangeBgY(u8 bg, s32 value, u8 op); -s32 ChangeBgY_ScreenOff(u8 bg, s32 value, u8 op); -s32 GetBgY(u8 bg); -void SetBgAffine(u8 bg, s32 srcCenterX, s32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle); -u8 Unused_AdjustBgMosaic(u8 val, u8 mode); -void SetBgTilemapBuffer(u8 bg, void *tilemap); -void UnsetBgTilemapBuffer(u8 bg); -void *GetBgTilemapBuffer(u8 bg); -void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset); -void CopyBgTilemapBufferToVram(u8 bg); -void CopyToBgTilemapBufferRect(u8 bg, const void *src, u8 destX, u8 destY, u8 width, u8 height); -void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette); -void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, s16 tileOffset, s16 palette2); -void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height); -void FillBgTilemapBufferRect(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height, u8 palette); -void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot, s16 tileNumDelta); -u16 GetBgMetricTextMode(u8 bg, u8 whichMetric); -u32 GetBgMetricAffineMode(u8 bg, u8 whichMetric); +void SetBgMode(u32 bgMode); +u16 LoadBgTiles(u32 bg, const void *src, u16 size, u16 destOffset); +u16 LoadBgTilemap(u32 bg, const void *src, u16 size, u16 destOffset); +u16 Unused_LoadBgPalette(u32 bg, const void *src, u16 size, u16 destOffset); +bool32 IsDma3ManagerBusyWithBgCopy(void); +void ShowBg(u32 bg); +void HideBg(u32 bg); +void SetBgAttribute(u32 bg, u32 attributeId, u8 value); +u16 GetBgAttribute(u32 bg, u32 attributeId); +s32 ChangeBgX(u32 bg, s32 value, u8 op); +s32 GetBgX(u32 bg); +s32 ChangeBgY(u32 bg, s32 value, u8 op); +s32 ChangeBgY_ScreenOff(u32 bg, s32 value, u8 op); +s32 GetBgY(u32 bg); +void SetBgAffine(u32 bg, s32 srcCenterX, s32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle); +u8 Unused_AdjustBgMosaic(u8 val, u32 mode); +void SetBgTilemapBuffer(u32 bg, void *tilemap); +void UnsetBgTilemapBuffer(u32 bg); +void *GetBgTilemapBuffer(u32 bg); +void CopyToBgTilemapBuffer(u32 bg, const void *src, u16 mode, u16 destOffset); +void CopyBgTilemapBufferToVram(u32 bg); +void CopyToBgTilemapBufferRect(u32 bg, const void *src, u8 destX, u8 destY, u8 width, u8 height); +void CopyToBgTilemapBufferRect_ChangePalette(u32 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette); +void CopyRectToBgTilemapBufferRect(u32 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, s16 tileOffset, s16 palette2); +void FillBgTilemapBufferRect_Palette0(u32 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height); +void FillBgTilemapBufferRect(u32 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height, u8 palette); +void WriteSequenceToBgTilemapBuffer(u32 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot, s16 tileNumDelta); +u16 GetBgMetricTextMode(u32 bg, u32 whichMetric); +u32 GetBgMetricAffineMode(u32 bg, u32 whichMetric); u32 GetTileMapIndexFromCoords(s32 x, s32 y, s32 screenSize, u32 screenWidth, u32 screenHeight); void CopyTileMapEntry(const u16 *src, u16 *dest, s32 palette1, s32 tileOffset, s32 palette2); -bool32 IsInvalidBg32(u8 bg); -bool32 IsTileMapOutsideWram(u8 bg); +bool32 IsTileMapOutsideWram(u32 bg); #endif // GUARD_BG_H diff --git a/gflib/dma3.h b/gflib/dma3.h index 8eff34f557..9c4d8bce05 100644 --- a/gflib/dma3.h +++ b/gflib/dma3.h @@ -48,8 +48,8 @@ void ClearDma3Requests(void); void ProcessDma3Requests(void); -s16 RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode); -s16 RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode); +s16 RequestDma3Copy(const void *src, void *dest, u16 size, u32 mode); +s16 RequestDma3Fill(s32 value, void *dest, u16 size, u32 mode); s16 CheckForSpaceForDma3Request(s16 index); #endif // GUARD_DMA3_H diff --git a/gflib/dma3_manager.c b/gflib/dma3_manager.c index d774efe8ce..71e69322ab 100644 --- a/gflib/dma3_manager.c +++ b/gflib/dma3_manager.c @@ -95,7 +95,7 @@ void ProcessDma3Requests(void) } } -s16 RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode) +s16 RequestDma3Copy(const void *src, void *dest, u16 size, u32 mode) { int cursor; int i = 0; @@ -127,7 +127,7 @@ s16 RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode) return -1; // no free DMA request was found } -s16 RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode) +s16 RequestDma3Fill(s32 value, void *dest, u16 size, u32 mode) { int cursor; int i = 0; diff --git a/gflib/io_reg.c b/gflib/io_reg.c index 66b8dbe64c..6c4671718a 100644 --- a/gflib/io_reg.c +++ b/gflib/io_reg.c @@ -2,25 +2,6 @@ #include "io_reg.h" #include "gba/io_reg.h" -static const u32 sUnused[] = { - 0, - 0, - (1 << 26) | (1 << 3), - (1 << 26) | (1 << 3) | (1 << 1), - (1 << 26) | (1 << 3) | (1 << 2), - (1 << 26) | (1 << 3) | (1 << 2) | (1 << 1), - (1 << 26) | (1 << 4), - (1 << 26) | (1 << 4) | (1 << 2), - (1 << 26) | (1 << 4) | (1 << 3), - (1 << 26) | (1 << 4) | (1 << 3) | (1 << 2), - (1 << 26) | (1 << 4) | (1 << 1), - (1 << 26) | (1 << 4) | (1 << 2) | (1 << 1), - (1 << 26) | (1 << 4) | (1 << 3) | (1 << 1), - (1 << 26) | (1 << 4) | (1 << 3) | (1 << 2) | (1 << 1), - (1 << 25) | (1 << 8), - (1 << 27) | (1 << 10), -}; - const u16 gOverworldBackgroundLayerFlags[] = { BLDCNT_TGT2_BG0, BLDCNT_TGT2_BG1, diff --git a/gflib/sprite.c b/gflib/sprite.c index 58ca5e2b5d..7ae7067022 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -49,7 +49,7 @@ struct OamDimensions }; static void SortSprites(u32 *spritePriorities, s32 n); -static u8 CreateSpriteAt(u8 index, const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); +static u32 CreateSpriteAt(u32 index, const struct SpriteTemplate *template, s16 x, s16 y, u32 subpriority); static void ResetOamMatrices(void); static void ResetSprite(struct Sprite *sprite); static s16 AllocSpriteTiles(u16 tileCount); @@ -121,17 +121,6 @@ const union AnimCmd * const gDummySpriteAnimTable[]; const union AffineAnimCmd * const gDummySpriteAffineAnimTable[]; const struct SpriteTemplate gDummySpriteTemplate; -// Unreferenced data. Also unreferenced in R/S. -static const u8 sUnknownData[24] = -{ - 0x01, 0x04, 0x10, 0x40, - 0x02, 0x04, 0x08, 0x20, - 0x02, 0x04, 0x08, 0x20, - 0x01, 0x04, 0x10, 0x40, - 0x02, 0x04, 0x08, 0x20, - 0x02, 0x04, 0x08, 0x20, -}; - static const u8 sCenterToCornerVecTable[3][4][2] = { { // square @@ -306,7 +295,7 @@ void ResetSpriteData(void) void AnimateSprites(void) { - u8 i; + u32 i; for (i = 0; i < MAX_SPRITES; i++) { struct Sprite *sprite = &gSprites[i]; @@ -447,9 +436,9 @@ static void SortSprites(u32 *spritePriorities, s32 n) InsertionSort(spritePriorities, n); } -u8 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority) +u32 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u32 subpriority) { - u8 i; + u32 i; for (i = 0; i < MAX_SPRITES; i++) if (!gSprites[i].inUse) @@ -458,9 +447,9 @@ u8 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u8 subprior return MAX_SPRITES; } -u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority) +u32 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u32 subpriority) { - s16 i; + s32 i; for (i = MAX_SPRITES - 1; i > -1; i--) if (!gSprites[i].inUse) @@ -469,9 +458,9 @@ u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u8 sub return MAX_SPRITES; } -u8 CreateInvisibleSprite(void (*callback)(struct Sprite *)) +u32 CreateInvisibleSprite(void (*callback)(struct Sprite *)) { - u8 index = CreateSprite(&gDummySpriteTemplate, 0, 0, 31); + u32 index = CreateSprite(&gDummySpriteTemplate, 0, 0, 31); if (index == MAX_SPRITES) { @@ -485,7 +474,7 @@ u8 CreateInvisibleSprite(void (*callback)(struct Sprite *)) } } -u8 CreateSpriteAt(u8 index, const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority) +u32 CreateSpriteAt(u32 index, const struct SpriteTemplate *template, s16 x, s16 y, u32 subpriority) { struct Sprite *sprite = &gSprites[index]; @@ -536,9 +525,9 @@ u8 CreateSpriteAt(u8 index, const struct SpriteTemplate *template, s16 x, s16 y, return index; } -u8 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority) +u32 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u32 subpriority) { - u8 i; + u32 i; for (i = 0; i < MAX_SPRITES; i++) { @@ -546,7 +535,7 @@ u8 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u if (!gSprites[i].inUse) { - u8 index = CreateSpriteAt(i, template, x, y, subpriority); + u32 index = CreateSpriteAt(i, template, x, y, subpriority); if (index == MAX_SPRITES) return MAX_SPRITES; @@ -578,11 +567,11 @@ void DestroySprite(struct Sprite *sprite) } } -void ResetOamRange(u8 start, u8 end) +void ResetOamRange(u32 start, u32 end) { - u8 i; + u32 i; for (i = start; i < end; i++) - gMain.oamBuffer[i] = *(struct OamData *)&gDummyOamData; + gMain.oamBuffer[i] = gDummyOamData; } void LoadOam(void) @@ -593,7 +582,7 @@ void LoadOam(void) void ClearSpriteCopyRequests(void) { - u8 i; + u32 i; sShouldProcessSpriteCopyRequests = FALSE; sSpriteCopyRequestCount = 0; @@ -608,7 +597,7 @@ void ClearSpriteCopyRequests(void) void ResetOamMatrices(void) { - u8 i; + u32 i; for (i = 0; i < OAM_MATRIX_COUNT; i++) { // set to identity matrix @@ -1365,7 +1354,7 @@ void SetSpriteSheetFrameTileNum(struct Sprite *sprite) void ResetAffineAnimData(void) { - u8 i; + u32 i; gAffineAnimsDisabled = FALSE; gOamMatrixAllocBitmap = 0; @@ -1453,7 +1442,7 @@ u16 LoadSpriteSheet(const struct SpriteSheet *sheet) void LoadSpriteSheets(const struct SpriteSheet *sheets) { - u8 i; + u32 i; for (i = 0; sheets[i].data != NULL; i++) LoadSpriteSheet(&sheets[i]); } @@ -1482,7 +1471,7 @@ void FreeSpriteTilesByTag(u16 tag) void FreeSpriteTileRanges(void) { - u8 i; + u32 i; for (i = 0; i < MAX_SPRITES; i++) { @@ -1501,7 +1490,7 @@ u16 GetSpriteTileStartByTag(u16 tag) u8 IndexOfSpriteTileTag(u16 tag) { - u8 i; + u32 i; for (i = 0; i < MAX_SPRITES; i++) if (sSpriteTileRangeTags[i] == tag) @@ -1512,7 +1501,7 @@ u8 IndexOfSpriteTileTag(u16 tag) u16 GetSpriteTileTagByTileStart(u16 start) { - u8 i; + u32 i; for (i = 0; i < MAX_SPRITES; i++) { @@ -1532,7 +1521,7 @@ void AllocSpriteTileRange(u16 tag, u16 start, u16 count) void FreeAllSpritePalettes(void) { - u8 i; + u32 i; gReservedSpritePaletteCount = 0; for (i = 0; i < 16; i++) sSpritePaletteTags[i] = TAG_NONE; @@ -1561,7 +1550,7 @@ u8 LoadSpritePalette(const struct SpritePalette *palette) void LoadSpritePalettes(const struct SpritePalette *palettes) { - u8 i; + u32 i; for (i = 0; palettes[i].data != NULL; i++) if (LoadSpritePalette(&palettes[i]) == 0xFF) break; @@ -1588,7 +1577,7 @@ u8 AllocSpritePalette(u16 tag) u8 IndexOfSpritePaletteTag(u16 tag) { - u8 i; + u32 i; for (i = gReservedSpritePaletteCount; i < 16; i++) if (sSpritePaletteTags[i] == tag) return i; @@ -1657,7 +1646,7 @@ bool8 AddSubspritesToOamBuffer(struct Sprite *sprite, struct OamData *destOam, u u8 subspriteCount; u8 hFlip; u8 vFlip; - u8 i; + u32 i; tileNum = oam->tileNum; subspriteCount = subspriteTable->subspriteCount; diff --git a/gflib/sprite.h b/gflib/sprite.h index 270a755b44..9772434a3b 100644 --- a/gflib/sprite.h +++ b/gflib/sprite.h @@ -267,12 +267,12 @@ extern bool8 gAffineAnimsDisabled; void ResetSpriteData(void); void AnimateSprites(void); void BuildOamBuffer(void); -u8 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); -u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); -u8 CreateInvisibleSprite(void (*callback)(struct Sprite *)); -u8 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); +u32 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u32 subpriority); +u32 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u32 subpriority); +u32 CreateInvisibleSprite(void (*callback)(struct Sprite *)); +u32 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u32 subpriority); void DestroySprite(struct Sprite *sprite); -void ResetOamRange(u8 start, u8 end); +void ResetOamRange(u32 start, u32 end); void LoadOam(void); void SetOamMatrix(u8 matrixNum, u16 a, u16 b, u16 c, u16 d); void CalcCenterToCornerVec(struct Sprite *sprite, u8 shape, u8 size, u8 affineMode); diff --git a/gflib/string_util.c b/gflib/string_util.c index 9aef8d543a..17b055ad0a 100644 --- a/gflib/string_util.c +++ b/gflib/string_util.c @@ -63,7 +63,7 @@ u8 *StringCopy_Nickname(u8 *dest, const u8 *src) u8 *StringGet_Nickname(u8 *str) { - u8 i; + u32 i; u32 limit = POKEMON_NAME_LENGTH; if (DECAP_ENABLED && !DECAP_NICKNAMES && *str == CHAR_FIXED_CASE) @@ -124,7 +124,7 @@ u8 *StringAppend(u8 *dest, const u8 *src) u8 *StringCopyN(u8 *dest, const u8 *src, u8 n) { - u16 i; + u32 i; for (i = 0; i < n; i++) dest[i] = src[i]; @@ -196,7 +196,7 @@ s32 StringCompareN(const u8 *str1, const u8 *str2, u32 n) bool8 IsStringLengthAtLeast(const u8 *str, s32 n) { - u8 i; + u32 i; for (i = 0; i < n; i++) if (str[i] && str[i] != EOS) @@ -320,7 +320,7 @@ u8 *ConvertUIntToDecimalStringN(u8 *dest, u32 value, enum StringConvertMode mode u8 *ConvertIntToHexStringN(u8 *dest, s32 value, enum StringConvertMode mode, u8 n) { enum { WAITING_FOR_NONZERO_DIGIT, WRITING_DIGITS, WRITING_SPACES } state; - u8 i; + u32 i; s32 powerOfSixteen; s32 largestPowerOfSixteen = 1; @@ -596,7 +596,7 @@ const u8 *GetExpandedPlaceholder(u32 id) u8 *StringFill(u8 *dest, u8 c, u16 n) { - u16 i; + u32 i; for (i = 0; i < n; i++) *dest++ = c; @@ -813,7 +813,7 @@ void ConvertInternationalString(u8 *s, u8 language) { if (language == LANGUAGE_JAPANESE) { - u8 i; + u32 i; StripExtCtrlCodes(s); i = StringLength(s); diff --git a/gflib/text.c b/gflib/text.c index 139fd5ee1a..cc6a6e90f2 100644 --- a/gflib/text.c +++ b/gflib/text.c @@ -302,7 +302,7 @@ u16 AddTextPrinterFixedCaseParameterized(u8 windowId, u8 fontId, const u8 *str, return AddTextPrinterParameterized(windowId, fontId, MirrorPtr(str), x, y, speed, callback); } -bool16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16)) +bool32 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16)) { int i; u16 j; @@ -388,7 +388,7 @@ void RunTextPrinters(void) } } -bool16 IsTextPrinterActive(u8 id) +bool32 IsTextPrinterActive(u8 id) { return sTextPrinters[id].active; } @@ -891,7 +891,7 @@ void TextPrinterClearDownArrow(struct TextPrinter *textPrinter) CopyWindowToVram(textPrinter->printerTemplate.windowId, COPYWIN_GFX); } -bool8 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter) +bool32 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter) { struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields); @@ -906,9 +906,9 @@ bool8 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter) } } -bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter) +bool32 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter) { - bool8 result = FALSE; + bool32 result = FALSE; if (gTextFlags.autoScroll != 0) { result = TextPrinterWaitAutoMode(textPrinter); @@ -925,9 +925,9 @@ bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter) return result; } -bool16 TextPrinterWait(struct TextPrinter *textPrinter) +bool32 TextPrinterWait(struct TextPrinter *textPrinter) { - bool16 result = FALSE; + bool32 result = FALSE; if (gTextFlags.autoScroll != 0) { result = TextPrinterWaitAutoMode(textPrinter); @@ -943,7 +943,7 @@ bool16 TextPrinterWait(struct TextPrinter *textPrinter) return result; } -void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *counter, u8 *yCoordIndex) +void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool32 drawArrow, u8 *counter, u8 *yCoordIndex) { const u8 *arrowTiles; @@ -1437,7 +1437,7 @@ static u32 (*GetFontWidthFunc(u8 fontId))(u16, bool32) s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) { - bool8 isJapanese; + bool32 isJapanese; int minGlyphWidth; u32 (*func)(u16 fontId, bool32 isJapanese); int localLetterSpacing; diff --git a/gflib/text.h b/gflib/text.h index 18af356f3d..7e1d7bfb11 100644 --- a/gflib/text.h +++ b/gflib/text.h @@ -159,9 +159,9 @@ u16 AddTextPrinterFixedCaseParameterized(u8 windowId, u8 fontId, const u8 *str, void DeactivateAllTextPrinters(void); u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16)); -bool16 AddTextPrinter(struct TextPrinterTemplate *template, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16)); +bool32 AddTextPrinter(struct TextPrinterTemplate *template, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16)); void RunTextPrinters(void); -bool16 IsTextPrinterActive(u8 id); +bool32 IsTextPrinterActive(u8 id); void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor); void SaveTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor); void RestoreTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor); @@ -172,10 +172,10 @@ void ClearTextSpan(struct TextPrinter *textPrinter, u32 width); void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter); void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter); void TextPrinterClearDownArrow(struct TextPrinter *textPrinter); -bool8 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter); -bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter); -bool16 TextPrinterWait(struct TextPrinter *textPrinter); -void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *counter, u8 *yCoordIndex); +bool32 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter); +bool32 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter); +bool32 TextPrinterWait(struct TextPrinter *textPrinter); +void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool32 drawArrow, u8 *counter, u8 *yCoordIndex); s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing); u8 RenderTextHandleBold(u8 *pixels, u8 fontId, u8 *str); u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y); diff --git a/gflib/window.c b/gflib/window.c index 6f7af457d3..61264000ea 100644 --- a/gflib/window.c +++ b/gflib/window.c @@ -13,8 +13,8 @@ EWRAM_DATA struct Window gWindows[WINDOWS_MAX] = {0}; EWRAM_DATA static struct Window* sWindowPtr = NULL; EWRAM_DATA static u16 sWindowSize = 0; -static u8 GetNumActiveWindowsOnBg(u8 bgId); -static u8 GetNumActiveWindowsOnBg8Bit(u8 bgId); +static u32 GetNumActiveWindowsOnBg(u32 bgId); +static u32 GetNumActiveWindowsOnBg8Bit(u32 bgId); static const struct WindowTemplate sDummyWindowTemplate = DUMMY_WIN_TEMPLATE; @@ -23,12 +23,12 @@ static void DummyWindowBgTilemap(void) } -bool16 InitWindows(const struct WindowTemplate *templates) +bool32 InitWindows(const struct WindowTemplate *templates) { int i; void *bgTilemapBuffer; int j; - u8 bgLayer; + u32 bgLayer; u16 attrib; u8 *allocatedTilemapBuffer; int allocatedBaseBlock; @@ -106,10 +106,10 @@ bool16 InitWindows(const struct WindowTemplate *templates) return TRUE; } -u16 AddWindow(const struct WindowTemplate *template) +u32 AddWindow(const struct WindowTemplate *template) { - u16 win; - u8 bgLayer; + u32 win; + u32 bgLayer; int allocatedBaseBlock; u16 attrib; u8 *allocatedTilemapBuffer; @@ -180,8 +180,8 @@ u16 AddWindow(const struct WindowTemplate *template) int AddWindowWithoutTileMap(const struct WindowTemplate *template) { - u16 win; - u8 bgLayer; + int win; + u32 bgLayer; int allocatedBaseBlock; for (win = 0; win < WINDOWS_MAX; ++win) @@ -215,9 +215,9 @@ int AddWindowWithoutTileMap(const struct WindowTemplate *template) return win; } -void RemoveWindow(u8 windowId) +void RemoveWindow(u32 windowId) { - u8 bgLayer = gWindows[windowId].window.bg; + u32 bgLayer = gWindows[windowId].window.bg; if (gWindowTileAutoAllocEnabled == TRUE) BgTileAllocOp(bgLayer, gWindows[windowId].window.baseBlock, gWindows[windowId].window.width * gWindows[windowId].window.height, 2); @@ -263,7 +263,7 @@ void FreeAllWindowBuffers(void) } } -void CopyWindowToVram(u8 windowId, u8 mode) +void CopyWindowToVram(u32 windowId, u32 mode) { struct Window windowLocal = gWindows[windowId]; u16 windowSize = 32 * (windowLocal.window.width * windowLocal.window.height); @@ -316,7 +316,7 @@ void CopyWindowRectToVram(u32 windowId, u32 mode, u32 x, u32 y, u32 w, u32 h) } } -void PutWindowTilemap(u8 windowId) +void PutWindowTilemap(u32 windowId) { struct Window windowLocal = gWindows[windowId]; @@ -331,7 +331,7 @@ void PutWindowTilemap(u8 windowId) 1); } -void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 palette) +void PutWindowRectTilemapOverridePalette(u32 windowId, u8 x, u8 y, u8 width, u8 height, u8 palette) { struct Window windowLocal = gWindows[windowId]; u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.bg, BG_ATTR_BASETILE); @@ -354,7 +354,7 @@ void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 h } // Fills a window with transparent tiles. -void ClearWindowTilemap(u8 windowId) +void ClearWindowTilemap(u32 windowId) { struct Window windowLocal = gWindows[windowId]; @@ -368,7 +368,7 @@ void ClearWindowTilemap(u8 windowId) windowLocal.window.paletteNum); } -void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height) +void PutWindowRectTilemap(u32 windowId, u8 x, u8 y, u8 width, u8 height) { struct Window windowLocal = gWindows[windowId]; u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.bg, BG_ATTR_BASETILE); @@ -390,12 +390,12 @@ void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height) } } -void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height) +void BlitBitmapToWindow(u32 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height) { BlitBitmapRectToWindow(windowId, pixels, 0, 0, width, height, x, y, width, height); } -void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight) +void BlitBitmapRectToWindow(u32 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight) { struct Bitmap sourceRect; struct Bitmap destRect; @@ -411,7 +411,7 @@ void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u BlitBitmapRect4Bit(&sourceRect, &destRect, srcX, srcY, destX, destY, rectWidth, rectHeight, 0); } -static void UNUSED BlitBitmapRectToWindowWithColorKey(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 colorKey) +static void UNUSED BlitBitmapRectToWindowWithColorKey(u32 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 colorKey) { struct Bitmap sourceRect; struct Bitmap destRect; @@ -427,7 +427,7 @@ static void UNUSED BlitBitmapRectToWindowWithColorKey(u8 windowId, const u8 *pix BlitBitmapRect4Bit(&sourceRect, &destRect, srcX, srcY, destX, destY, rectWidth, rectHeight, colorKey); } -void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height) +void FillWindowPixelRect(u32 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height) { struct Bitmap pixelRect; @@ -438,7 +438,7 @@ void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 FillBitmapRect4Bit(&pixelRect, x, y, width, height, fillValue); } -void CopyToWindowPixelBuffer(u8 windowId, const void *src, u16 size, u16 tileOffset) +void CopyToWindowPixelBuffer(u32 windowId, const void *src, u16 size, u16 tileOffset) { if (size != 0) CpuCopy16(src, gWindows[windowId].tileData + (32 * tileOffset), size); @@ -447,7 +447,7 @@ void CopyToWindowPixelBuffer(u8 windowId, const void *src, u16 size, u16 tileOff } // Sets all pixels within the window to the fillValue color. -void FillWindowPixelBuffer(u8 windowId, u8 fillValue) +void FillWindowPixelBuffer(u32 windowId, u8 fillValue) { int fillSize = gWindows[windowId].window.width * gWindows[windowId].window.height; CpuFastFill8(fillValue, gWindows[windowId].tileData, 32 * fillSize); @@ -475,7 +475,7 @@ void FillWindowPixelBuffer(u8 windowId, u8 fillValue) distanceLoop++; \ } -void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue) +void ScrollWindow(u32 windowId, u8 direction, u8 distance, u8 fillValue) { struct WindowTemplate window = gWindows[windowId].window; u8 *tileData = gWindows[windowId].tileData; @@ -522,13 +522,13 @@ void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue) } } -void CallWindowFunction(u8 windowId, void ( *func)(u8, u8, u8, u8, u8, u8)) +void CallWindowFunction(u32 windowId, void ( *func)(u8, u8, u8, u8, u8, u8)) { struct WindowTemplate window = gWindows[windowId].window; func(window.bg, window.tilemapLeft, window.tilemapTop, window.width, window.height, window.paletteNum); } -bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value) +bool32 SetWindowAttribute(u32 windowId, u32 attributeId, u32 value) { switch (attributeId) { @@ -555,7 +555,7 @@ bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value) } } -u32 GetWindowAttribute(u8 windowId, u8 attributeId) +u32 GetWindowAttribute(u32 windowId, u32 attributeId) { switch (attributeId) { @@ -580,9 +580,9 @@ u32 GetWindowAttribute(u8 windowId, u8 attributeId) } } -static u8 GetNumActiveWindowsOnBg(u8 bgId) +static u32 GetNumActiveWindowsOnBg(u32 bgId) { - u8 windowsNum = 0; + u32 windowsNum = 0; s32 i; for (i = 0; i < WINDOWS_MAX; i++) { @@ -597,11 +597,11 @@ static void DummyWindowBgTilemap8Bit(void) } -u16 AddWindow8Bit(const struct WindowTemplate *template) +u32 AddWindow8Bit(const struct WindowTemplate *template) { - u16 windowId; + u32 windowId; u8 *memAddress; - u8 bgLayer; + u32 bgLayer; for (windowId = 0; windowId < WINDOWS_MAX; windowId++) { @@ -644,7 +644,7 @@ u16 AddWindow8Bit(const struct WindowTemplate *template) } } -void FillWindowPixelBuffer8Bit(u8 windowId, u8 fillValue) +void FillWindowPixelBuffer8Bit(u32 windowId, u8 fillValue) { s32 i; s32 size; @@ -654,7 +654,7 @@ void FillWindowPixelBuffer8Bit(u8 windowId, u8 fillValue) gWindows[windowId].tileData[i] = fillValue; } -void FillWindowPixelRect8Bit(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height) +void FillWindowPixelRect8Bit(u32 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height) { struct Bitmap pixelRect; @@ -665,7 +665,7 @@ void FillWindowPixelRect8Bit(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, FillBitmapRect8Bit(&pixelRect, x, y, width, height, fillValue); } -void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum) +void BlitBitmapRectToWindow4BitTo8Bit(u32 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum) { struct Bitmap sourceRect; struct Bitmap destRect; @@ -681,7 +681,7 @@ void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, const u8 *pixels, u16 srcX, u BlitBitmapRect4BitTo8Bit(&sourceRect, &destRect, srcX, srcY, destX, destY, rectWidth, rectHeight, 0, paletteNum); } -void CopyWindowToVram8Bit(u8 windowId, u8 mode) +void CopyWindowToVram8Bit(u32 windowId, u8 mode) { sWindowPtr = &gWindows[windowId]; sWindowSize = 64 * (sWindowPtr->window.width * sWindowPtr->window.height); @@ -701,9 +701,9 @@ void CopyWindowToVram8Bit(u8 windowId, u8 mode) } } -static u8 GetNumActiveWindowsOnBg8Bit(u8 bgId) +static u32 GetNumActiveWindowsOnBg8Bit(u32 bgId) { - u8 windowsNum = 0; + u32 windowsNum = 0; s32 i; for (i = 0; i < WINDOWS_MAX; i++) { diff --git a/gflib/window.h b/gflib/window.h index 0f2dff2a8a..85e385cb9f 100644 --- a/gflib/window.h +++ b/gflib/window.h @@ -48,31 +48,31 @@ struct Window u8 *tileData; }; -bool16 InitWindows(const struct WindowTemplate *templates); -u16 AddWindow(const struct WindowTemplate *template); +bool32 InitWindows(const struct WindowTemplate *templates); +u32 AddWindow(const struct WindowTemplate *template); int AddWindowWithoutTileMap(const struct WindowTemplate *template); -void RemoveWindow(u8 windowId); +void RemoveWindow(u32 windowId); void FreeAllWindowBuffers(void); -void CopyWindowToVram(u8 windowId, u8 mode); +void CopyWindowToVram(u32 windowId, u32 mode); void CopyWindowRectToVram(u32 windowId, u32 mode, u32 x, u32 y, u32 w, u32 h); -void PutWindowTilemap(u8 windowId); -void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 palette); -void ClearWindowTilemap(u8 windowId); -void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height); -void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height); -void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight); -void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); -void CopyToWindowPixelBuffer(u8 windowId, const void *src, u16 size, u16 tileOffset); -void FillWindowPixelBuffer(u8 windowId, u8 fillValue); -void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue); -void CallWindowFunction(u8 windowId, void ( *func)(u8, u8, u8, u8, u8, u8)); -bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value); -u32 GetWindowAttribute(u8 windowId, u8 attributeId); -u16 AddWindow8Bit(const struct WindowTemplate *template); -void FillWindowPixelBuffer8Bit(u8 windowId, u8 fillValue); -void FillWindowPixelRect8Bit(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); -void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum); -void CopyWindowToVram8Bit(u8 windowId, u8 mode); +void PutWindowTilemap(u32 windowId); +void PutWindowRectTilemapOverridePalette(u32 windowId, u8 x, u8 y, u8 width, u8 height, u8 palette); +void ClearWindowTilemap(u32 windowId); +void PutWindowRectTilemap(u32 windowId, u8 x, u8 y, u8 width, u8 height); +void BlitBitmapToWindow(u32 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height); +void BlitBitmapRectToWindow(u32 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight); +void FillWindowPixelRect(u32 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); +void CopyToWindowPixelBuffer(u32 windowId, const void *src, u16 size, u16 tileOffset); +void FillWindowPixelBuffer(u32 windowId, u8 fillValue); +void ScrollWindow(u32 windowId, u8 direction, u8 distance, u8 fillValue); +void CallWindowFunction(u32 windowId, void ( *func)(u8, u8, u8, u8, u8, u8)); +bool32 SetWindowAttribute(u32 windowId, u32 attributeId, u32 value); +u32 GetWindowAttribute(u32 windowId, u32 attributeId); +u32 AddWindow8Bit(const struct WindowTemplate *template); +void FillWindowPixelBuffer8Bit(u32 windowId, u8 fillValue); +void FillWindowPixelRect8Bit(u32 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); +void BlitBitmapRectToWindow4BitTo8Bit(u32 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum); +void CopyWindowToVram8Bit(u32 windowId, u8 mode); extern struct Window gWindows[]; extern void *gWindowBgTilemapBuffers[]; diff --git a/src/main.c b/src/main.c index 79c4066107..32e103b6e8 100644 --- a/src/main.c +++ b/src/main.c @@ -61,8 +61,6 @@ const IntrFunc gIntrTableTemplate[] = #define INTR_COUNT ((int)(sizeof(gIntrTableTemplate)/sizeof(IntrFunc))) -static u16 sUnusedVar; // Never read - u16 gKeyRepeatStartDelay; bool8 gLinkTransferringData; struct Main gMain; @@ -126,7 +124,6 @@ void AgbMain() SetMainCallback2(NULL); gLinkTransferringData = FALSE; - sUnusedVar = 0xFC0; #ifndef NDEBUG #if (LOG_HANDLER == LOG_HANDLER_MGBA_PRINT) From a36cfb10936502857803df42d811d977d4b5690b Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 6 Mar 2024 22:26:33 +0100 Subject: [PATCH 35/55] unify monSpritesGfx sprites/ptr and fix various compiler errors on o3/os/og (#4252) --- include/battle.h | 7 +----- src/battle_anim_effects_3.c | 2 +- src/battle_dynamax.c | 2 +- src/battle_gfx_sfx_util.c | 44 +++++++++++++++++------------------- src/battle_intro.c | 4 ++-- src/battle_main.c | 2 +- src/battle_util.c | 4 ++-- src/contest.c | 2 +- src/contest_painting.c | 8 +++---- src/contest_util.c | 4 ++-- src/egg_hatch.c | 2 +- src/evolution_scene.c | 10 ++++---- src/librfu_sio32id.c | 2 +- src/option_menu.c | 2 +- src/palette_util.c | 0 src/pokeblock_feed.c | 2 +- src/pokemon.c | 4 ++-- src/pokemon_debug.c | 8 +++---- src/pokemon_storage_system.c | 2 +- src/pokemon_summary_screen.c | 4 ++-- src/secret_base.c | 4 ++-- src/trade.c | 6 ++--- 22 files changed, 59 insertions(+), 66 deletions(-) mode change 100755 => 100644 src/palette_util.c diff --git a/include/battle.h b/include/battle.h index c32c03fc55..f84f13fe86 100644 --- a/include/battle.h +++ b/include/battle.h @@ -973,15 +973,10 @@ struct BattleSpriteData struct MonSpritesGfx { void *firstDecompressed; // ptr to the decompressed sprite of the first Pokémon - union { - void *ptr[MAX_BATTLERS_COUNT]; - u8 *byte[MAX_BATTLERS_COUNT]; - } sprites; + u8 *spritesGfx[MAX_BATTLERS_COUNT]; struct SpriteTemplate templates[MAX_BATTLERS_COUNT]; struct SpriteFrameImage frameImages[MAX_BATTLERS_COUNT][MAX_MON_PIC_FRAMES]; - u8 unusedArr[0x80]; u8 *barFontGfx; - void *unusedPtr; u16 *buffer; }; diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index d8fd768f63..ffba3429eb 100644 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -2368,7 +2368,7 @@ void AnimTask_TransformMon(u8 taskId) else position = GetBattlerPosition(gBattleAnimAttacker); - src = gMonSpritesGfxPtr->sprites.ptr[position]; + src = gMonSpritesGfxPtr->spritesGfx[position]; dest = animBg.bgTiles; CpuCopy32(src, dest, MON_PIC_SIZE); LoadBgTiles(1, animBg.bgTiles, 0x800, animBg.tilesOffset); diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index b703676b73..0357e27d1e 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -637,7 +637,7 @@ void BS_SetMaxMoveEffect(void) case MAX_EFFECT_SANDSTORM: case MAX_EFFECT_HAIL: { - u8 weather, msg; + u8 weather = 0, msg = 0; switch (maxEffect) { case MAX_EFFECT_SUN: diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 4aaf1b6e83..31e4dcae2f 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -606,13 +606,13 @@ void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battler) if (GetBattlerSide(battler) == B_SIDE_OPPONENT) { HandleLoadSpecialPokePic(TRUE, - gMonSpritesGfxPtr->sprites.ptr[position], + gMonSpritesGfxPtr->spritesGfx[position], species, currentPersonality); } else { HandleLoadSpecialPokePic(FALSE, - gMonSpritesGfxPtr->sprites.ptr[position], + gMonSpritesGfxPtr->spritesGfx[position], species, currentPersonality); } @@ -654,7 +654,7 @@ void DecompressTrainerFrontPic(u16 frontPicId, u8 battler) { u8 position = GetBattlerPosition(battler); DecompressPicFromTable(&gTrainerSprites[frontPicId].frontPic, - gMonSpritesGfxPtr->sprites.ptr[position]); + gMonSpritesGfxPtr->spritesGfx[position]); LoadCompressedSpritePalette(&gTrainerSprites[frontPicId].palette); } @@ -662,7 +662,7 @@ void DecompressTrainerBackPic(u16 backPicId, u8 battler) { u8 position = GetBattlerPosition(battler); DecompressPicFromTable(&gTrainerBacksprites[backPicId].backPic, - gMonSpritesGfxPtr->sprites.ptr[position]); + gMonSpritesGfxPtr->spritesGfx[position]); LoadCompressedPalette(gTrainerBacksprites[backPicId].palette.data, OBJ_PLTT_ID(battler), PLTT_SIZE_4BPP); } @@ -883,7 +883,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo isShiny = gContestResources->moveAnim->isShiny; HandleLoadSpecialPokePic(FALSE, - gMonSpritesGfxPtr->sprites.ptr[position], + gMonSpritesGfxPtr->spritesGfx[position], targetSpecies, gContestResources->moveAnim->targetPersonality); } @@ -910,7 +910,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo } HandleLoadSpecialPokePic(FALSE, - gMonSpritesGfxPtr->sprites.ptr[position], + gMonSpritesGfxPtr->spritesGfx[position], targetSpecies, gTransformedPersonalities[battlerAtk]); } @@ -928,12 +928,12 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo } HandleLoadSpecialPokePic(TRUE, - gMonSpritesGfxPtr->sprites.ptr[position], + gMonSpritesGfxPtr->spritesGfx[position], targetSpecies, gTransformedPersonalities[battlerAtk]); } } - src = gMonSpritesGfxPtr->sprites.ptr[position]; + src = gMonSpritesGfxPtr->spritesGfx[position]; dst = (void *)(OBJ_VRAM0 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32); DmaCopy32(3, src, dst, MON_PIC_SIZE); paletteOffset = OBJ_PLTT_ID(battlerAtk); @@ -961,22 +961,21 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battler, bool8 loadMonSprite) if (!loadMonSprite) { - if (IsContest()) position = B_POSITION_PLAYER_LEFT; else position = GetBattlerPosition(battler); if (IsContest()) - LZDecompressVram(gBattleAnimSpriteGfx_SubstituteBack, gMonSpritesGfxPtr->sprites.ptr[position]); + LZDecompressVram(gBattleAnimSpriteGfx_SubstituteBack, gMonSpritesGfxPtr->spritesGfx[position]); else if (GetBattlerSide(battler) != B_SIDE_PLAYER) - LZDecompressVram(gBattleAnimSpriteGfx_Substitute, gMonSpritesGfxPtr->sprites.ptr[position]); + LZDecompressVram(gBattleAnimSpriteGfx_Substitute, gMonSpritesGfxPtr->spritesGfx[position]); else - LZDecompressVram(gBattleAnimSpriteGfx_SubstituteBack, gMonSpritesGfxPtr->sprites.ptr[position]); + LZDecompressVram(gBattleAnimSpriteGfx_SubstituteBack, gMonSpritesGfxPtr->spritesGfx[position]); for (i = 1; i < 4; i++) { - Dma3CopyLarge32_(gMonSpritesGfxPtr->sprites.ptr[position], &gMonSpritesGfxPtr->sprites.byte[position][MON_PIC_SIZE * i], MON_PIC_SIZE); + Dma3CopyLarge32_(gMonSpritesGfxPtr->spritesGfx[position], &gMonSpritesGfxPtr->spritesGfx[position][MON_PIC_SIZE * i], MON_PIC_SIZE); } palOffset = OBJ_PLTT_ID(battler); @@ -1217,14 +1216,14 @@ void AllocateMonSpritesGfx(void) for (i = 0; i < MAX_BATTLERS_COUNT; i++) { - gMonSpritesGfxPtr->sprites.ptr[i] = gMonSpritesGfxPtr->firstDecompressed + (i * MON_PIC_SIZE * 4); - *(gMonSpritesGfxPtr->templates + i) = gBattlerSpriteTemplates[i]; + gMonSpritesGfxPtr->spritesGfx[i] = gMonSpritesGfxPtr->firstDecompressed + (i * MON_PIC_SIZE * 4); + gMonSpritesGfxPtr->templates[i] = gBattlerSpriteTemplates[i]; - for (j = 0; j < 4; j++) + for (j = 0; j < MAX_MON_PIC_FRAMES; j++) { - if (gMonSpritesGfxPtr->sprites.ptr[i]) + if (gMonSpritesGfxPtr->spritesGfx[i]) { - gMonSpritesGfxPtr->frameImages[i][j].data = gMonSpritesGfxPtr->sprites.ptr[i] + (j * MON_PIC_SIZE); + gMonSpritesGfxPtr->frameImages[i][j].data = gMonSpritesGfxPtr->spritesGfx[i] + (j * MON_PIC_SIZE); gMonSpritesGfxPtr->frameImages[i][j].size = MON_PIC_SIZE; } } @@ -1241,13 +1240,12 @@ void FreeMonSpritesGfx(void) return; TRY_FREE_AND_SET_NULL(gMonSpritesGfxPtr->buffer); - TRY_FREE_AND_SET_NULL(gMonSpritesGfxPtr->unusedPtr); FREE_AND_SET_NULL(gMonSpritesGfxPtr->barFontGfx); FREE_AND_SET_NULL(gMonSpritesGfxPtr->firstDecompressed); - gMonSpritesGfxPtr->sprites.ptr[B_POSITION_PLAYER_LEFT] = NULL; - gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT] = NULL; - gMonSpritesGfxPtr->sprites.ptr[B_POSITION_PLAYER_RIGHT] = NULL; - gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT] = NULL; + gMonSpritesGfxPtr->spritesGfx[B_POSITION_PLAYER_LEFT] = NULL; + gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_LEFT] = NULL; + gMonSpritesGfxPtr->spritesGfx[B_POSITION_PLAYER_RIGHT] = NULL; + gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_RIGHT] = NULL; FREE_AND_SET_NULL(gMonSpritesGfxPtr); } diff --git a/src/battle_intro.c b/src/battle_intro.c index 858a32b13b..c28ed90ffc 100644 --- a/src/battle_intro.c +++ b/src/battle_intro.c @@ -586,7 +586,7 @@ void DrawBattlerOnBg(int bgId, u8 x, u8 y, u8 battlerPosition, u8 paletteId, u8 { int i, j; int offset = tilesOffset; - CpuCopy16(gMonSpritesGfxPtr->sprites.ptr[battlerPosition], tiles, BG_SCREEN_SIZE); + CpuCopy16(gMonSpritesGfxPtr->spritesGfx[battlerPosition], tiles, BG_SCREEN_SIZE); LoadBgTiles(bgId, tiles, 0x1000, tilesOffset); for (i = y; i < y + 8; i++) { @@ -603,7 +603,7 @@ static void UNUSED DrawBattlerOnBgDMA(u8 x, u8 y, u8 battlerPosition, u8 arg3, u { int i, j, offset; - DmaCopy16(3, gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE); + DmaCopy16(3, gMonSpritesGfxPtr->spritesGfx[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE); offset = (arg5 >> 5) - (arg7 << 9); for (i = y; i < y + 8; i++) { diff --git a/src/battle_main.c b/src/battle_main.c index c592eb6688..f0075340ea 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -2739,7 +2739,7 @@ static void SpriteCB_AnimFaintOpponent(struct Sprite *sprite) } else // Erase bottom part of the sprite to create a smooth illusion of mon falling down. { - u8 *dst = gMonSpritesGfxPtr->sprites.byte[GetBattlerPosition(sprite->sBattler)] + (sprite->data[3] << 8); + u8 *dst = &gMonSpritesGfxPtr->spritesGfx[GetBattlerPosition(sprite->sBattler)][(sprite->data[3] << 8)]; for (i = 0; i < 0x100; i++) *(dst++) = 0; diff --git a/src/battle_util.c b/src/battle_util.c index 143ebc5144..41b10b5d1e 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4123,7 +4123,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } break; } - + if (effect == 1) BattleScriptPushCursorAndCallback(BattleScript_OverworldStatusStarts); else if (effect == 2) @@ -4989,7 +4989,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 case ABILITYEFFECT_ABSORBING: // 3 if (move != MOVE_NONE) { - u8 statId; + u8 statId = 0; u8 statAmount = 1; switch (gLastUsedAbility) { diff --git a/src/contest.c b/src/contest.c index ba63b8073a..f0d0d527ed 100644 --- a/src/contest.c +++ b/src/contest.c @@ -3211,7 +3211,7 @@ static u8 CreateContestantSprite(u16 species, bool8 isShiny, u32 personality, u3 u8 spriteId; species = SanitizeSpecies(species); - HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[B_POSITION_PLAYER_LEFT], species, personality); + HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->spritesGfx[B_POSITION_PLAYER_LEFT], species, personality); LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_PLAYER_LEFT); diff --git a/src/contest_painting.c b/src/contest_painting.c index 529330a522..922b878531 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -368,18 +368,18 @@ static void InitContestMonPixels(u16 species, bool8 backPic) if (!backPic) { HandleLoadSpecialPokePic(TRUE, - gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], + gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_LEFT], species, gContestPaintingWinner->personality); - _InitContestMonPixels(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], gContestPaintingMonPalette, (void *)gContestMonPixels); + _InitContestMonPixels(gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_LEFT], gContestPaintingMonPalette, (void *)gContestMonPixels); } else { HandleLoadSpecialPokePic(FALSE, - gMonSpritesGfxPtr->sprites.ptr[B_POSITION_PLAYER_LEFT], + gMonSpritesGfxPtr->spritesGfx[B_POSITION_PLAYER_LEFT], species, gContestPaintingWinner->personality); - _InitContestMonPixels(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_PLAYER_LEFT], gContestPaintingMonPalette, (void *)gContestMonPixels); + _InitContestMonPixels(gMonSpritesGfxPtr->spritesGfx[B_POSITION_PLAYER_LEFT], gContestPaintingMonPalette, (void *)gContestMonPixels); } } diff --git a/src/contest_util.c b/src/contest_util.c index 7de4923037..7977f373c1 100644 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -893,7 +893,7 @@ static void Task_ShowWinnerMonBanner(u8 taskId) personality = gContestMons[i].personality; isShiny = gContestMons[i].isShiny; HandleLoadSpecialPokePic(TRUE, - gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], + gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_LEFT], species, personality); @@ -2570,7 +2570,7 @@ void ShowContestEntryMonPic(void) taskId = CreateTask(Task_ShowContestEntryMonPic, 0x50); gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = species; - HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], species, personality); + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_LEFT], species, personality); LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), species); SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_OPPONENT_LEFT); diff --git a/src/egg_hatch.c b/src/egg_hatch.c index abb7ca4e15..588563d5d2 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -442,7 +442,7 @@ static u8 EggHatchCreateMonSprite(u8 useAlt, u8 state, u8 partyId, u16 *speciesL { u32 pid = GetMonData(mon, MON_DATA_PERSONALITY); HandleLoadSpecialPokePic(TRUE, - gMonSpritesGfxPtr->sprites.ptr[(useAlt * 2) + B_POSITION_OPPONENT_LEFT], + gMonSpritesGfxPtr->spritesGfx[(useAlt * 2) + B_POSITION_OPPONENT_LEFT], species, pid); LoadCompressedSpritePaletteWithTag(GetMonFrontSpritePal(mon), species); *speciesLoc = species; diff --git a/src/evolution_scene.c b/src/evolution_scene.c index b254dab42a..c5d7e56f0b 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -258,7 +258,7 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u currSpecies = GetMonData(mon, MON_DATA_SPECIES); isShiny = GetMonData(mon, MON_DATA_IS_SHINY); personality = GetMonData(mon, MON_DATA_PERSONALITY); - LoadSpecialPokePic(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], + LoadSpecialPokePic(gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_LEFT], currSpecies, personality, TRUE); @@ -273,7 +273,7 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u gSprites[id].invisible = TRUE; // postEvo sprite - LoadSpecialPokePic(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT], + LoadSpecialPokePic(gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_RIGHT], postEvoSpecies, personality, TRUE); @@ -350,7 +350,7 @@ static void CB2_EvolutionSceneLoadGraphics(void) FreeAllSpritePalettes(); gReservedSpritePaletteCount = 4; - LoadSpecialPokePic(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT], + LoadSpecialPokePic(gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_RIGHT], postEvoSpecies, personality, TRUE); @@ -420,7 +420,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) { bool8 isShiny = GetMonData(mon, MON_DATA_IS_SHINY); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY); - LoadSpecialPokePic(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT], + LoadSpecialPokePic(gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_RIGHT], postEvoSpecies, personality, TRUE); @@ -484,7 +484,7 @@ void TradeEvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, u8 preEvoSprit sEvoStructPtr = AllocZeroed(sizeof(struct EvoInfo)); sEvoStructPtr->preEvoSpriteId = preEvoSpriteId; - LoadSpecialPokePic(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], + LoadSpecialPokePic(gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_LEFT], postEvoSpecies, personality, TRUE); diff --git a/src/librfu_sio32id.c b/src/librfu_sio32id.c index 1c02840e85..4f49fbd1b4 100644 --- a/src/librfu_sio32id.c +++ b/src/librfu_sio32id.c @@ -24,7 +24,7 @@ s32 AgbRFU_checkID(u8 maxTries) { u16 ieBak; vu16 *regTMCNTL; - s32 id; + s32 id = 0; // Interrupts must be enabled if (REG_IME == 0) diff --git a/src/option_menu.c b/src/option_menu.c index af10b75a20..273353c22b 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -545,7 +545,7 @@ static u8 FrameType_ProcessInput(u8 selection) static void FrameType_DrawChoices(u8 selection) { - u8 text[16]; + u8 text[16] = {EOS}; u8 n = selection + 1; u16 i; diff --git a/src/palette_util.c b/src/palette_util.c old mode 100755 new mode 100644 diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c index 61e1b7a6b3..59aed379d8 100644 --- a/src/pokeblock_feed.c +++ b/src/pokeblock_feed.c @@ -727,7 +727,7 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon) // Load mon gfx species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG); personality = GetMonData(mon, MON_DATA_PERSONALITY); - HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], species, personality); + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_LEFT], species, personality); sPokeblockFeed->loadGfxState++; break; case 1: diff --git a/src/pokemon.c b/src/pokemon.c index 4268515b65..9bb8772af2 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1643,7 +1643,7 @@ static void SetMonMoveSlot_KeepPP(struct Pokemon *mon, u16 move, u8 slot) u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES, NULL); u8 currPP = GetMonData(mon, MON_DATA_PP1 + slot, NULL); u8 newPP = CalculatePPWithBonus(move, ppBonuses, slot); - u8 finalPP = min(currPP, newPP); + u16 finalPP = min(currPP, newPP); SetMonData(mon, MON_DATA_MOVE1 + slot, &move); SetMonData(mon, MON_DATA_PP1 + slot, &finalPP); @@ -5607,7 +5607,7 @@ static inline bool32 CanFirstMonBoostHeldItemRarity(void) u32 ability; if (GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG)) return FALSE; - + ability = GetMonAbility(&gPlayerParty[0]); if ((OW_COMPOUND_EYES < GEN_9) && ability == ABILITY_COMPOUND_EYES) return TRUE; diff --git a/src/pokemon_debug.c b/src/pokemon_debug.c index f34afe278d..3f22911417 100644 --- a/src/pokemon_debug.c +++ b/src/pokemon_debug.c @@ -1114,7 +1114,7 @@ void CB2_Debug_Pokemon(void) palette = GetMonSpritePalStructCustom(species, data->isFemale, data->isShiny); LoadCompressedSpritePaletteWithTag(palette, species); //Front - HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[1], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->spritesGfx[1], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); data->isShiny = FALSE; data->isFemale = FALSE; BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 1); @@ -1129,7 +1129,7 @@ void CB2_Debug_Pokemon(void) LoadAndCreateEnemyShadowSpriteCustom(data, species); //Back - HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[2], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); + HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->spritesGfx[2], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 4); SetMultiuseSpriteTemplateToPokemon(species, 2); offset_y = gSpeciesInfo[species].backPicYOffset; @@ -1666,7 +1666,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) palette = GetMonSpritePalStructCustom(species, data->isFemale, data->isShiny); LoadCompressedSpritePaletteWithTag(palette, species); //Front - HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[1], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->spritesGfx[1], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 1); SetMultiuseSpriteTemplateToPokemon(species, 1); gMultiuseSpriteTemplate.paletteTag = species; @@ -1679,7 +1679,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) LoadAndCreateEnemyShadowSpriteCustom(data, species); //Back - HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[2], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); + HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->spritesGfx[2], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 5); SetMultiuseSpriteTemplateToPokemon(species, 2); offset_y = gSpeciesInfo[species].backPicYOffset; diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 2fa88b4db5..8f981ed854 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -5987,7 +5987,7 @@ static bool8 UpdateCursorPos(void) static void InitNewCursorPos(u8 newCursorArea, u8 newCursorPosition) { - u16 x, y; + u16 x = 0, y = 0; GetCursorCoordsByPos(newCursorArea, newCursorPosition, &x, &y); sStorage->newCursorArea = newCursorArea; diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index ca84d5b390..e3850e6b4e 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -4026,7 +4026,7 @@ static u8 LoadMonGfxAndSprite(struct Pokemon *mon, s16 *state) if (gMain.inBattle) { HandleLoadSpecialPokePic(TRUE, - gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], + gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_LEFT], summary->species2, summary->pid); } @@ -4035,7 +4035,7 @@ static u8 LoadMonGfxAndSprite(struct Pokemon *mon, s16 *state) if (gMonSpritesGfxPtr != NULL) { HandleLoadSpecialPokePic(TRUE, - gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], + gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_LEFT], summary->species2, summary->pid); } diff --git a/src/secret_base.c b/src/secret_base.c index a662acb36e..264cd9435a 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -470,7 +470,7 @@ static void EnterNewlyCreatedSecretBase_WaitFadeIn(u8 taskId) static void EnterNewlyCreatedSecretBase_StartFadeIn(void) { - s16 x, y; + s16 x = 0, y = 0; LockPlayerFieldControls(); HideMapNamePopUpWindow(); @@ -519,7 +519,7 @@ bool8 CurMapIsSecretBase(void) void InitSecretBaseAppearance(bool8 hidePC) { u16 secretBaseIdx; - s16 x, y; + s16 x, y = 0; u8 *decorations; u8 *decorPos; diff --git a/src/trade.c b/src/trade.c index d3345cb06e..04b1977c17 100644 --- a/src/trade.c +++ b/src/trade.c @@ -2788,7 +2788,7 @@ static void LoadTradeMonPic(u8 whichParty, u8 state) case 0: personality = GetMonData(mon, MON_DATA_PERSONALITY); - HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[whichParty * 2 + B_POSITION_OPPONENT_LEFT], species, personality); + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->spritesGfx[whichParty * 2 + B_POSITION_OPPONENT_LEFT], species, personality); LoadCompressedSpritePaletteWithTag(GetMonFrontSpritePal(mon), species); sTradeAnim->monSpecies[whichParty] = species; @@ -3784,7 +3784,7 @@ static bool8 DoTradeAnim_Cable(void) if (gSprites[sTradeAnim->bouncingPokeballSpriteId].callback == SpriteCallbackDummy) { HandleLoadSpecialPokePic(TRUE, - gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT], + gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_RIGHT], sTradeAnim->monSpecies[TRADE_PARTNER], sTradeAnim->monPersonalities[TRADE_PARTNER]); sTradeAnim->state++; @@ -4281,7 +4281,7 @@ static bool8 DoTradeAnim_Wireless(void) if (gSprites[sTradeAnim->bouncingPokeballSpriteId].callback == SpriteCallbackDummy) { HandleLoadSpecialPokePic(TRUE, - gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT], + gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_RIGHT], sTradeAnim->monSpecies[TRADE_PARTNER], sTradeAnim->monPersonalities[TRADE_PARTNER]); sTradeAnim->state++; From 95270e5400aa61876a836f190304f74c244c7577 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 6 Mar 2024 22:27:21 +0100 Subject: [PATCH 36/55] gHeap can go in the middle of ram (#4253) --- ld_script_modern.ld | 5 ----- 1 file changed, 5 deletions(-) diff --git a/ld_script_modern.ld b/ld_script_modern.ld index 6a077574c8..d5724ebf84 100644 --- a/ld_script_modern.ld +++ b/ld_script_modern.ld @@ -18,11 +18,6 @@ SECTIONS { ALIGN(4) { __ewram_start = .; - /* - We link malloc.o here to prevent `gHeap` from landing in the middle of EWRAM. - Otherwise this causes corruption issues on some ld versions - */ - gflib/malloc.o(ewram_data); *(.ewram*) __ewram_end = .; } > EWRAM From b7f5ef3cd7192f1f489ef2dde5608a5287823274 Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Fri, 8 Mar 2024 16:25:59 -0600 Subject: [PATCH 37/55] Add Paldean Wooper mini icon (#4260) --- graphics/pokemon/wooper/wooper_paldean/icon.png | Bin 0 -> 286 bytes src/data/graphics/pokemon.h | 2 +- src/data/pokemon/species_info/gen_2.h | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 graphics/pokemon/wooper/wooper_paldean/icon.png diff --git a/graphics/pokemon/wooper/wooper_paldean/icon.png b/graphics/pokemon/wooper/wooper_paldean/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..63aea3281918f41f9228871f91a5f255ea6e57ed GIT binary patch literal 286 zcmV+(0pb3MP)Px#Fi=cXMPi(TdwYAmy|n-T|8sNAq^$O|gIeyzi^Z%d_Vy|EVp5cQ&Bdh6y(yex zVp>5#LFq)aUjP6AoJmAMR7i>Kl+g;sFbG2{1N+co{{L?m9b*@6mAwucwx=9|T1abK z9~8jPmHBf(JEa){>&Fp=|Il)D;TXF*q>eo&a=ojx5NSgm3wZFCXQoBHYLf#cfajYni kx*tqY_Jgq>`uF Date: Fri, 8 Mar 2024 19:26:25 -0300 Subject: [PATCH 38/55] Made ScriptGiveMonParameterized recognize the state of P_FLAG_FORCE_SHINY and P_FLAG_FORCE_NO_SHINY (#4256) * Made ScriptGiveMonParameterized recognize the state of the P_FLAG_FORCE_SHINY * And made it respect P_FLAG_FORCE_NO_SHINY too --- src/script_pokemon_util.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c index abe3efe1a2..37f0336f11 100644 --- a/src/script_pokemon_util.c +++ b/src/script_pokemon_util.c @@ -313,6 +313,10 @@ u32 ScriptGiveMonParameterized(u16 species, u8 level, u16 item, u8 ball, u8 natu CreateMonWithNature(&mon, species, level, 32, nature); // shininess + if (P_FLAG_FORCE_SHINY != 0 && FlagGet(P_FLAG_FORCE_SHINY)) + isShiny = TRUE; + else if (P_FLAG_FORCE_NO_SHINY != 0 && FlagGet(P_FLAG_FORCE_NO_SHINY)) + isShiny = FALSE; SetMonData(&mon, MON_DATA_IS_SHINY, &isShiny); // gigantamax factor From 0dabcfc966ed466aa7d251606cfc4046786f2c89 Mon Sep 17 00:00:00 2001 From: ghoulslash <41651341+ghoulslash@users.noreply.github.com> Date: Sun, 10 Mar 2024 17:49:00 -0400 Subject: [PATCH 39/55] fix repeated quick claw/quick draw checks (#4266) * fix repeated quick claw/quick draw checks * fix field names --------- Co-authored-by: ghoulslash --- include/battle.h | 2 ++ src/battle_main.c | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/include/battle.h b/include/battle.h index 3a7a9071b4..fa818fb622 100644 --- a/include/battle.h +++ b/include/battle.h @@ -742,6 +742,8 @@ struct BattleStruct u8 intrepidSwordBoost[NUM_BATTLE_SIDES]; u8 dauntlessShieldBoost[NUM_BATTLE_SIDES]; u8 stickySyrupdBy[MAX_BATTLERS_COUNT]; + u8 quickClawRandom[MAX_BATTLERS_COUNT]; + u8 quickDrawRandom[MAX_BATTLERS_COUNT]; }; // The palaceFlags member of struct BattleStruct contains 1 flag per move to indicate which moves the AI should consider, diff --git a/src/battle_main.c b/src/battle_main.c index 19ee70f162..e3f2812753 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4867,6 +4867,8 @@ static void SetActionsAndBattlersTurnOrder(void) { gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[battler]; gBattlerByTurnOrder[turnOrderId] = battler; + gBattleStruct->quickClawRandom[battler] = RandomPercentage(RNG_QUICK_CLAW, GetBattlerHoldEffectParam(battler)); + gBattleStruct->quickDrawRandom[battler] = RandomPercentage(RNG_QUICK_DRAW, 30); turnOrderId++; } } @@ -5073,21 +5075,21 @@ static void TryChangingTurnOrderEffects(u32 battler1, u32 battler2) // Battler 1 // Quick Draw - if (ability1 == ABILITY_QUICK_DRAW && !IS_MOVE_STATUS(gChosenMoveByBattler[battler1]) && RandomPercentage(RNG_QUICK_DRAW, 30)) + if (ability1 == ABILITY_QUICK_DRAW && !IS_MOVE_STATUS(gChosenMoveByBattler[battler1]) && gBattleStruct->quickDrawRandom[battler1]) gProtectStructs[battler1].quickDraw = TRUE; // Quick Claw and Custap Berry if (!gProtectStructs[battler1].quickDraw - && ((holdEffectBattler1 == HOLD_EFFECT_QUICK_CLAW && RandomPercentage(RNG_QUICK_CLAW, GetBattlerHoldEffectParam(battler1))) + && ((holdEffectBattler1 == HOLD_EFFECT_QUICK_CLAW && gBattleStruct->quickClawRandom[battler1]) || (holdEffectBattler1 == HOLD_EFFECT_CUSTAP_BERRY && HasEnoughHpToEatBerry(battler1, 4, gBattleMons[battler1].item)))) gProtectStructs[battler1].usedCustapBerry = TRUE; // Battler 2 // Quick Draw - if (ability2 == ABILITY_QUICK_DRAW && !IS_MOVE_STATUS(gChosenMoveByBattler[battler2]) && RandomPercentage(RNG_QUICK_DRAW, 30)) + if (ability2 == ABILITY_QUICK_DRAW && !IS_MOVE_STATUS(gChosenMoveByBattler[battler2]) && gBattleStruct->quickDrawRandom[battler2]) gProtectStructs[battler2].quickDraw = TRUE; // Quick Claw and Custap Berry if (!gProtectStructs[battler2].quickDraw - && ((holdEffectBattler2 == HOLD_EFFECT_QUICK_CLAW && RandomPercentage(RNG_QUICK_CLAW, GetBattlerHoldEffectParam(battler2))) + && ((holdEffectBattler2 == HOLD_EFFECT_QUICK_CLAW && gBattleStruct->quickClawRandom[battler2]) || (holdEffectBattler2 == HOLD_EFFECT_CUSTAP_BERRY && HasEnoughHpToEatBerry(battler2, 4, gBattleMons[battler2].item)))) gProtectStructs[battler2].usedCustapBerry = TRUE; } From ec73e2850726ac49f94cecda60ff89e49c2e439a Mon Sep 17 00:00:00 2001 From: MartyKen <73791756+MartyKen@users.noreply.github.com> Date: Mon, 11 Mar 2024 11:46:16 +0100 Subject: [PATCH 40/55] Gen 6 level up learnset update (#4267) * Lvl up learnsets by generation I think the title sums it up pretty nicely * Update level_up_learnsets.h forgot some newer pokemon * divided the learnset file into generations * Separated learnsets by generation Separated the learnsets by generation, added a bit more documentation in the config file * Update src/pokemon.c Co-authored-by: Eduardo Quezada D'Ottone * Update include/config/pokemon.h Co-authored-by: Eduardo Quezada D'Ottone * PLA aux item sprites * Gen 6 lvl up Learnset update Updates gen 6's level up learnsets to ORAS (previously XY) * Revert "Merge branch 'upcoming' of https://github.com/MartyKen/pokeemerald-expansion into upcoming" This reverts commit 53462c4088926a813f216a7917b1dfeb5ef2ca25, reversing changes made to 051a93058c83c691f8476fbb97035e64fcee38aa. --------- Co-authored-by: Eduardo Quezada D'Ottone --- include/config/pokemon.h | 2 +- src/data/pokemon/level_up_learnsets/gen_6.h | 4747 ++++++++++--------- 2 files changed, 2456 insertions(+), 2293 deletions(-) diff --git a/include/config/pokemon.h b/include/config/pokemon.h index 819967309c..dde298c464 100644 --- a/include/config/pokemon.h +++ b/include/config/pokemon.h @@ -14,7 +14,7 @@ #define P_LVL_UP_LEARNSETS GEN_LATEST // Choose which set of Level Up Learnsets to use. // For generations that hadn't introduced a species yet, we use their first appearence (eg. Chikorita's Gen2 data if the config is set to GEN_1). // For generations that don't include a previously introduced species, we use their last apperance (eg. Snivy's Gen7 data if the config is set to GEN_8). - // GEN_1/2/3/4/5/6/7: Yellow, Crystal, RSE, HGSS, B2W2, XY, USUM learnsets respectively. + // GEN_1/2/3/4/5/6/7: Yellow, Crystal, RSE, HGSS, B2W2, ORAS, USUM learnsets respectively. // GEN_8: Use the following priority: BDSP for Gen1-4 Pokémon, then LA for species introduced in that game, then SwSh for species present in those games. Otherwise, use GEN_7. // GEN_9: SV For species present in those games. Otherwise use GEN_8. diff --git a/src/data/pokemon/level_up_learnsets/gen_6.h b/src/data/pokemon/level_up_learnsets/gen_6.h index 344d1bfff0..59b05f9605 100644 --- a/src/data/pokemon/level_up_learnsets/gen_6.h +++ b/src/data/pokemon/level_up_learnsets/gen_6.h @@ -492,12 +492,12 @@ static const struct LevelUpMove sArbokLevelUpLearnset[] = { #if P_FAMILY_PIKACHU #if P_GEN_2_CROSS_EVOS static const struct LevelUpMove sPichuLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CHARM), LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_CHARM), LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), LEVEL_UP_MOVE(10, MOVE_SWEET_KISS), - LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(18, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(13, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(18, MOVE_THUNDER_WAVE), LEVEL_UP_END }; #endif //P_GEN_2_CROSS_EVOS @@ -508,17 +508,19 @@ static const struct LevelUpMove sPikachuLevelUpLearnset[] = { LEVEL_UP_MOVE( 5, MOVE_GROWL), LEVEL_UP_MOVE( 7, MOVE_PLAY_NICE), LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(18, MOVE_ELECTRO_BALL), - LEVEL_UP_MOVE(21, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(23, MOVE_NUZZLE), - LEVEL_UP_MOVE(26, MOVE_SLAM), - LEVEL_UP_MOVE(29, MOVE_THUNDERBOLT), - LEVEL_UP_MOVE(34, MOVE_FEINT), - LEVEL_UP_MOVE(37, MOVE_AGILITY), - LEVEL_UP_MOVE(42, MOVE_DISCHARGE), - LEVEL_UP_MOVE(45, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(50, MOVE_THUNDER), + LEVEL_UP_MOVE(13, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(18, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(21, MOVE_FEINT), + LEVEL_UP_MOVE(23, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(26, MOVE_SPARK), + LEVEL_UP_MOVE(29, MOVE_NUZZLE), + LEVEL_UP_MOVE(34, MOVE_DISCHARGE), + LEVEL_UP_MOVE(37, MOVE_SLAM), + LEVEL_UP_MOVE(42, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(45, MOVE_AGILITY), + LEVEL_UP_MOVE(50, MOVE_WILD_CHARGE), + LEVEL_UP_MOVE(53, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(58, MOVE_THUNDER), LEVEL_UP_END }; @@ -552,9 +554,9 @@ static const struct LevelUpMove sSandshrewLevelUpLearnset[] = { LEVEL_UP_MOVE( 5, MOVE_POISON_STING), LEVEL_UP_MOVE( 7, MOVE_ROLLOUT), LEVEL_UP_MOVE( 9, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE(11, MOVE_SWIFT), - LEVEL_UP_MOVE(14, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(17, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(11, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(14, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(17, MOVE_SWIFT), LEVEL_UP_MOVE(20, MOVE_FURY_SWIPES), LEVEL_UP_MOVE(23, MOVE_SAND_TOMB), LEVEL_UP_MOVE(26, MOVE_SLASH), @@ -575,18 +577,18 @@ static const struct LevelUpMove sSandslashLevelUpLearnset[] = { LEVEL_UP_MOVE( 5, MOVE_POISON_STING), LEVEL_UP_MOVE( 7, MOVE_ROLLOUT), LEVEL_UP_MOVE( 9, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE(11, MOVE_SWIFT), - LEVEL_UP_MOVE(14, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(17, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(11, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(14, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(17, MOVE_SWIFT), LEVEL_UP_MOVE(20, MOVE_FURY_SWIPES), LEVEL_UP_MOVE(22, MOVE_CRUSH_CLAW), - LEVEL_UP_MOVE(23, MOVE_SAND_TOMB), - LEVEL_UP_MOVE(26, MOVE_SLASH), - LEVEL_UP_MOVE(30, MOVE_DIG), - LEVEL_UP_MOVE(34, MOVE_GYRO_BALL), - LEVEL_UP_MOVE(38, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(42, MOVE_SANDSTORM), - LEVEL_UP_MOVE(46, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(24, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(28, MOVE_SLASH), + LEVEL_UP_MOVE(33, MOVE_DIG), + LEVEL_UP_MOVE(38, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(43, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(48, MOVE_SANDSTORM), + LEVEL_UP_MOVE(53, MOVE_EARTHQUAKE), LEVEL_UP_END }; @@ -781,17 +783,17 @@ static const struct LevelUpMove sVulpixLevelUpLearnset[] = { LEVEL_UP_MOVE( 7, MOVE_ROAR), LEVEL_UP_MOVE( 9, MOVE_BABY_DOLL_EYES), LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(12, MOVE_FIRE_SPIN), - LEVEL_UP_MOVE(15, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(18, MOVE_IMPRISON), - LEVEL_UP_MOVE(20, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(23, MOVE_FLAME_BURST), - LEVEL_UP_MOVE(26, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(28, MOVE_HEX), - LEVEL_UP_MOVE(31, MOVE_PAYBACK), - LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(36, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(39, MOVE_EXTRASENSORY), + LEVEL_UP_MOVE(12, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(15, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(18, MOVE_PAYBACK), + LEVEL_UP_MOVE(20, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(23, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(26, MOVE_HEX), + LEVEL_UP_MOVE(28, MOVE_FLAME_BURST), + LEVEL_UP_MOVE(31, MOVE_EXTRASENSORY), + LEVEL_UP_MOVE(34, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(36, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(39, MOVE_IMPRISON), LEVEL_UP_MOVE(42, MOVE_FIRE_BLAST), LEVEL_UP_MOVE(44, MOVE_GRUDGE), LEVEL_UP_MOVE(47, MOVE_CAPTIVATE), @@ -851,33 +853,33 @@ static const struct LevelUpMove sNinetalesAlolanLevelUpLearnset[] = { #if P_FAMILY_JIGGLYPUFF #if P_GEN_2_CROSS_EVOS static const struct LevelUpMove sIgglybuffLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CHARM), LEVEL_UP_MOVE( 1, MOVE_SING), - LEVEL_UP_MOVE( 5, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 9, MOVE_POUND), - LEVEL_UP_MOVE(13, MOVE_SWEET_KISS), - LEVEL_UP_MOVE(17, MOVE_COPYCAT), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 3, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 5, MOVE_POUND), + LEVEL_UP_MOVE( 9, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(11, MOVE_COPYCAT), LEVEL_UP_END }; #endif //P_GEN_2_CROSS_EVOS static const struct LevelUpMove sJigglypuffLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SING), - LEVEL_UP_MOVE( 5, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 7, MOVE_POUND), - LEVEL_UP_MOVE(10, MOVE_PLAY_NICE), - LEVEL_UP_MOVE(13, MOVE_DISABLE), - LEVEL_UP_MOVE(17, MOVE_ROUND), + LEVEL_UP_MOVE( 3, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 5, MOVE_POUND), + LEVEL_UP_MOVE( 8, MOVE_PLAY_NICE), + LEVEL_UP_MOVE(11, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(15, MOVE_DISABLE), + LEVEL_UP_MOVE(18, MOVE_DOUBLE_SLAP), LEVEL_UP_MOVE(21, MOVE_ROLLOUT), - LEVEL_UP_MOVE(25, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE(29, MOVE_REST), - LEVEL_UP_MOVE(33, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(37, MOVE_GYRO_BALL), - LEVEL_UP_MOVE(41, MOVE_WAKE_UP_SLAP), - LEVEL_UP_MOVE(45, MOVE_MIMIC), - LEVEL_UP_MOVE(48, MOVE_HYPER_VOICE), - LEVEL_UP_MOVE(50, MOVE_DISARMING_VOICE), - LEVEL_UP_MOVE(53, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(24, MOVE_ROUND), + LEVEL_UP_MOVE(28, MOVE_WAKE_UP_SLAP), + LEVEL_UP_MOVE(32, MOVE_REST), + LEVEL_UP_MOVE(35, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(37, MOVE_MIMIC), + LEVEL_UP_MOVE(40, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(44, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), LEVEL_UP_END }; @@ -895,18 +897,20 @@ static const struct LevelUpMove sWigglytuffLevelUpLearnset[] = { #if P_FAMILY_ZUBAT static const struct LevelUpMove sZubatLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), - LEVEL_UP_MOVE( 4, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 8, MOVE_ASTONISH), - LEVEL_UP_MOVE(12, MOVE_BITE), - LEVEL_UP_MOVE(15, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(19, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(19, MOVE_AIR_CUTTER), LEVEL_UP_MOVE(23, MOVE_SWIFT), - LEVEL_UP_MOVE(26, MOVE_AIR_CUTTER), - LEVEL_UP_MOVE(30, MOVE_ACROBATICS), - LEVEL_UP_MOVE(34, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(37, MOVE_POISON_FANG), - LEVEL_UP_MOVE(41, MOVE_HAZE), - LEVEL_UP_MOVE(45, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(25, MOVE_POISON_FANG), + LEVEL_UP_MOVE(29, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(31, MOVE_ACROBATICS), + LEVEL_UP_MOVE(35, MOVE_HAZE), + LEVEL_UP_MOVE(37, MOVE_VENOSHOCK), + LEVEL_UP_MOVE(41, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(43, MOVE_QUICK_GUARD), LEVEL_UP_END }; @@ -915,40 +919,46 @@ static const struct LevelUpMove sGolbatLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 4, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 8, MOVE_ASTONISH), - LEVEL_UP_MOVE(12, MOVE_BITE), - LEVEL_UP_MOVE(15, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(19, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(19, MOVE_AIR_CUTTER), LEVEL_UP_MOVE(24, MOVE_SWIFT), - LEVEL_UP_MOVE(28, MOVE_AIR_CUTTER), - LEVEL_UP_MOVE(33, MOVE_ACROBATICS), - LEVEL_UP_MOVE(38, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(42, MOVE_POISON_FANG), - LEVEL_UP_MOVE(47, MOVE_HAZE), - LEVEL_UP_MOVE(52, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(27, MOVE_POISON_FANG), + LEVEL_UP_MOVE(32, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(35, MOVE_ACROBATICS), + LEVEL_UP_MOVE(40, MOVE_HAZE), + LEVEL_UP_MOVE(43, MOVE_VENOSHOCK), + LEVEL_UP_MOVE(48, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(51, MOVE_QUICK_GUARD), LEVEL_UP_END }; #if P_GEN_2_CROSS_EVOS static const struct LevelUpMove sCrobatLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_MOVE( 1, MOVE_CROSS_POISON), - LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 4, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 8, MOVE_ASTONISH), - LEVEL_UP_MOVE(12, MOVE_BITE), - LEVEL_UP_MOVE(15, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(19, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(19, MOVE_AIR_CUTTER), LEVEL_UP_MOVE(24, MOVE_SWIFT), - LEVEL_UP_MOVE(28, MOVE_AIR_CUTTER), - LEVEL_UP_MOVE(33, MOVE_ACROBATICS), - LEVEL_UP_MOVE(38, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(42, MOVE_POISON_FANG), - LEVEL_UP_MOVE(47, MOVE_HAZE), - LEVEL_UP_MOVE(52, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(27, MOVE_POISON_FANG), + LEVEL_UP_MOVE(32, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(35, MOVE_ACROBATICS), + LEVEL_UP_MOVE(40, MOVE_HAZE), + LEVEL_UP_MOVE(43, MOVE_VENOSHOCK), + LEVEL_UP_MOVE(48, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(51, MOVE_QUICK_GUARD), LEVEL_UP_END }; #endif //P_GEN_2_CROSS_EVOS @@ -960,15 +970,17 @@ static const struct LevelUpMove sOddishLevelUpLearnset[] = { LEVEL_UP_MOVE( 5, MOVE_SWEET_SCENT), LEVEL_UP_MOVE( 9, MOVE_ACID), LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(21, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(25, MOVE_LUCKY_CHANT), - LEVEL_UP_MOVE(29, MOVE_NATURAL_GIFT), - LEVEL_UP_MOVE(33, MOVE_MOONLIGHT), - LEVEL_UP_MOVE(37, MOVE_GIGA_DRAIN), - LEVEL_UP_MOVE(41, MOVE_PETAL_DANCE), - LEVEL_UP_MOVE(45, MOVE_GRASSY_TERRAIN), + LEVEL_UP_MOVE(14, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(19, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(23, MOVE_LUCKY_CHANT), + LEVEL_UP_MOVE(27, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(31, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(35, MOVE_TOXIC), + LEVEL_UP_MOVE(39, MOVE_NATURAL_GIFT), + LEVEL_UP_MOVE(43, MOVE_MOONBLAST), + LEVEL_UP_MOVE(47, MOVE_GRASSY_TERRAIN), + LEVEL_UP_MOVE(51, MOVE_PETAL_DANCE), LEVEL_UP_END }; @@ -979,16 +991,17 @@ static const struct LevelUpMove sGloomLevelUpLearnset[] = { LEVEL_UP_MOVE( 5, MOVE_SWEET_SCENT), LEVEL_UP_MOVE( 9, MOVE_ACID), LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(23, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(29, MOVE_LUCKY_CHANT), - LEVEL_UP_MOVE(35, MOVE_NATURAL_GIFT), - LEVEL_UP_MOVE(41, MOVE_MOONLIGHT), - LEVEL_UP_MOVE(47, MOVE_GIGA_DRAIN), - LEVEL_UP_MOVE(50, MOVE_PETAL_BLIZZARD), - LEVEL_UP_MOVE(53, MOVE_PETAL_DANCE), - LEVEL_UP_MOVE(56, MOVE_GRASSY_TERRAIN), + LEVEL_UP_MOVE(14, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(19, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(24, MOVE_LUCKY_CHANT), + LEVEL_UP_MOVE(29, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(34, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(39, MOVE_TOXIC), + LEVEL_UP_MOVE(44, MOVE_NATURAL_GIFT), + LEVEL_UP_MOVE(49, MOVE_PETAL_BLIZZARD), + LEVEL_UP_MOVE(54, MOVE_GRASSY_TERRAIN), + LEVEL_UP_MOVE(59, MOVE_PETAL_DANCE), LEVEL_UP_END }; @@ -997,9 +1010,9 @@ static const struct LevelUpMove sVileplumeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_AROMATHERAPY), LEVEL_UP_MOVE( 1, MOVE_POISON_POWDER), LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(50, MOVE_PETAL_BLIZZARD), - LEVEL_UP_MOVE(53, MOVE_PETAL_DANCE), - LEVEL_UP_MOVE(65, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(49, MOVE_PETAL_BLIZZARD), + LEVEL_UP_MOVE(59, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(64, MOVE_SOLAR_BEAM), LEVEL_UP_END }; @@ -1011,9 +1024,9 @@ static const struct LevelUpMove sBellossomLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), LEVEL_UP_MOVE( 1, MOVE_SUNNY_DAY), - LEVEL_UP_MOVE(23, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE(50, MOVE_PETAL_BLIZZARD), - LEVEL_UP_MOVE(53, MOVE_LEAF_STORM), + LEVEL_UP_MOVE(24, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(49, MOVE_PETAL_BLIZZARD), + LEVEL_UP_MOVE(64, MOVE_LEAF_STORM), LEVEL_UP_END }; #endif //P_GEN_2_CROSS_EVOS @@ -1329,13 +1342,13 @@ static const struct LevelUpMove sPsyduckLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), LEVEL_UP_MOVE( 8, MOVE_WATER_GUN), - LEVEL_UP_MOVE(11, MOVE_DISABLE), - LEVEL_UP_MOVE(15, MOVE_CONFUSION), + LEVEL_UP_MOVE(11, MOVE_CONFUSION), + LEVEL_UP_MOVE(15, MOVE_FURY_SWIPES), LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(22, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(22, MOVE_DISABLE), LEVEL_UP_MOVE(25, MOVE_SCREECH), - LEVEL_UP_MOVE(29, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(32, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(29, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(32, MOVE_ZEN_HEADBUTT), LEVEL_UP_MOVE(36, MOVE_SOAK), LEVEL_UP_MOVE(39, MOVE_PSYCH_UP), LEVEL_UP_MOVE(43, MOVE_AMNESIA), @@ -1352,12 +1365,12 @@ static const struct LevelUpMove sGolduckLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), LEVEL_UP_MOVE( 8, MOVE_WATER_GUN), - LEVEL_UP_MOVE(11, MOVE_DISABLE), - LEVEL_UP_MOVE(15, MOVE_CONFUSION), + LEVEL_UP_MOVE(11, MOVE_CONFUSION), + LEVEL_UP_MOVE(15, MOVE_FURY_SWIPES), LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(22, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(25, MOVE_SCREECH), - LEVEL_UP_MOVE(29, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(22, MOVE_DISABLE), + LEVEL_UP_MOVE(25, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(29, MOVE_SCREECH), LEVEL_UP_MOVE(32, MOVE_AQUA_TAIL), LEVEL_UP_MOVE(38, MOVE_SOAK), LEVEL_UP_MOVE(43, MOVE_PSYCH_UP), @@ -1573,17 +1586,17 @@ static const struct LevelUpMove sKadabraLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CONFUSION), LEVEL_UP_MOVE(16, MOVE_CONFUSION), LEVEL_UP_MOVE(18, MOVE_DISABLE), - LEVEL_UP_MOVE(22, MOVE_MIRACLE_EYE), - LEVEL_UP_MOVE(24, MOVE_ALLY_SWITCH), - LEVEL_UP_MOVE(28, MOVE_PSYBEAM), - LEVEL_UP_MOVE(30, MOVE_REFLECT), - LEVEL_UP_MOVE(34, MOVE_TELEKINESIS), - LEVEL_UP_MOVE(36, MOVE_RECOVER), - LEVEL_UP_MOVE(40, MOVE_PSYCHO_CUT), - LEVEL_UP_MOVE(42, MOVE_ROLE_PLAY), - LEVEL_UP_MOVE(46, MOVE_PSYCHIC), - LEVEL_UP_MOVE(48, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(50, MOVE_TRICK), + LEVEL_UP_MOVE(21, MOVE_PSYBEAM), + LEVEL_UP_MOVE(23, MOVE_MIRACLE_EYE), + LEVEL_UP_MOVE(26, MOVE_REFLECT), + LEVEL_UP_MOVE(28, MOVE_PSYCHO_CUT), + LEVEL_UP_MOVE(31, MOVE_RECOVER), + LEVEL_UP_MOVE(33, MOVE_TELEKINESIS), + LEVEL_UP_MOVE(36, MOVE_ALLY_SWITCH), + LEVEL_UP_MOVE(38, MOVE_PSYCHIC), + LEVEL_UP_MOVE(41, MOVE_ROLE_PLAY), + LEVEL_UP_MOVE(43, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(46, MOVE_TRICK), LEVEL_UP_END }; @@ -1593,17 +1606,17 @@ static const struct LevelUpMove sAlakazamLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CONFUSION), LEVEL_UP_MOVE(16, MOVE_CONFUSION), LEVEL_UP_MOVE(18, MOVE_DISABLE), - LEVEL_UP_MOVE(22, MOVE_MIRACLE_EYE), - LEVEL_UP_MOVE(24, MOVE_ALLY_SWITCH), - LEVEL_UP_MOVE(28, MOVE_PSYBEAM), - LEVEL_UP_MOVE(30, MOVE_REFLECT), - LEVEL_UP_MOVE(34, MOVE_TELEKINESIS), - LEVEL_UP_MOVE(36, MOVE_RECOVER), - LEVEL_UP_MOVE(40, MOVE_PSYCHO_CUT), - LEVEL_UP_MOVE(42, MOVE_CALM_MIND), - LEVEL_UP_MOVE(46, MOVE_PSYCHIC), - LEVEL_UP_MOVE(48, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(50, MOVE_TRICK), + LEVEL_UP_MOVE(21, MOVE_PSYBEAM), + LEVEL_UP_MOVE(23, MOVE_MIRACLE_EYE), + LEVEL_UP_MOVE(26, MOVE_REFLECT), + LEVEL_UP_MOVE(28, MOVE_PSYCHO_CUT), + LEVEL_UP_MOVE(31, MOVE_RECOVER), + LEVEL_UP_MOVE(33, MOVE_TELEKINESIS), + LEVEL_UP_MOVE(36, MOVE_ALLY_SWITCH), + LEVEL_UP_MOVE(38, MOVE_PSYCHIC), + LEVEL_UP_MOVE(41, MOVE_CALM_MIND), + LEVEL_UP_MOVE(43, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(46, MOVE_TRICK), LEVEL_UP_END }; #endif //P_FAMILY_ABRA @@ -1612,18 +1625,21 @@ static const struct LevelUpMove sAlakazamLevelUpLearnset[] = { static const struct LevelUpMove sMachopLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(10, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE( 3, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE( 9, MOVE_FORESIGHT), LEVEL_UP_MOVE(13, MOVE_LOW_SWEEP), - LEVEL_UP_MOVE(19, MOVE_FORESIGHT), - LEVEL_UP_MOVE(22, MOVE_SEISMIC_TOSS), - LEVEL_UP_MOVE(25, MOVE_REVENGE), - LEVEL_UP_MOVE(31, MOVE_VITAL_THROW), - LEVEL_UP_MOVE(34, MOVE_SUBMISSION), - LEVEL_UP_MOVE(37, MOVE_WAKE_UP_SLAP), - LEVEL_UP_MOVE(43, MOVE_CROSS_CHOP), - LEVEL_UP_MOVE(46, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(49, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_MOVE(15, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(19, MOVE_REVENGE), + LEVEL_UP_MOVE(21, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(25, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(27, MOVE_WAKE_UP_SLAP), + LEVEL_UP_MOVE(31, MOVE_DUAL_CHOP), + LEVEL_UP_MOVE(33, MOVE_SUBMISSION), + LEVEL_UP_MOVE(37, MOVE_BULK_UP), + LEVEL_UP_MOVE(39, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(43, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(45, MOVE_DYNAMIC_PUNCH), LEVEL_UP_END }; @@ -1632,18 +1648,21 @@ static const struct LevelUpMove sMachokeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), LEVEL_UP_MOVE( 1, MOVE_KARATE_CHOP), - LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(10, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE( 3, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE( 9, MOVE_FORESIGHT), LEVEL_UP_MOVE(13, MOVE_LOW_SWEEP), - LEVEL_UP_MOVE(19, MOVE_FORESIGHT), - LEVEL_UP_MOVE(22, MOVE_SEISMIC_TOSS), - LEVEL_UP_MOVE(25, MOVE_REVENGE), - LEVEL_UP_MOVE(32, MOVE_VITAL_THROW), - LEVEL_UP_MOVE(36, MOVE_SUBMISSION), - LEVEL_UP_MOVE(40, MOVE_WAKE_UP_SLAP), - LEVEL_UP_MOVE(44, MOVE_CROSS_CHOP), - LEVEL_UP_MOVE(51, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(55, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_MOVE(15, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(19, MOVE_REVENGE), + LEVEL_UP_MOVE(21, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(25, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(27, MOVE_WAKE_UP_SLAP), + LEVEL_UP_MOVE(33, MOVE_DUAL_CHOP), + LEVEL_UP_MOVE(37, MOVE_SUBMISSION), + LEVEL_UP_MOVE(43, MOVE_BULK_UP), + LEVEL_UP_MOVE(47, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(53, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(57, MOVE_DYNAMIC_PUNCH), LEVEL_UP_END }; @@ -1653,18 +1672,21 @@ static const struct LevelUpMove sMachampLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), LEVEL_UP_MOVE( 1, MOVE_KARATE_CHOP), - LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(10, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE( 3, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE( 9, MOVE_FORESIGHT), LEVEL_UP_MOVE(13, MOVE_LOW_SWEEP), - LEVEL_UP_MOVE(19, MOVE_FORESIGHT), - LEVEL_UP_MOVE(22, MOVE_SEISMIC_TOSS), - LEVEL_UP_MOVE(25, MOVE_REVENGE), - LEVEL_UP_MOVE(32, MOVE_VITAL_THROW), - LEVEL_UP_MOVE(36, MOVE_SUBMISSION), - LEVEL_UP_MOVE(40, MOVE_WAKE_UP_SLAP), - LEVEL_UP_MOVE(44, MOVE_CROSS_CHOP), - LEVEL_UP_MOVE(51, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(55, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_MOVE(15, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(19, MOVE_REVENGE), + LEVEL_UP_MOVE(21, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(25, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(27, MOVE_WAKE_UP_SLAP), + LEVEL_UP_MOVE(33, MOVE_DUAL_CHOP), + LEVEL_UP_MOVE(37, MOVE_SUBMISSION), + LEVEL_UP_MOVE(43, MOVE_BULK_UP), + LEVEL_UP_MOVE(47, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(53, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(57, MOVE_DYNAMIC_PUNCH), LEVEL_UP_END }; #endif //P_FAMILY_MACHOP @@ -1724,21 +1746,22 @@ static const struct LevelUpMove sVictreebelLevelUpLearnset[] = { #if P_FAMILY_TENTACOOL static const struct LevelUpMove sTentacoolLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 8, MOVE_CONSTRICT), - LEVEL_UP_MOVE(12, MOVE_ACID), - LEVEL_UP_MOVE(15, MOVE_TOXIC_SPIKES), - LEVEL_UP_MOVE(19, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(22, MOVE_WRAP), - LEVEL_UP_MOVE(26, MOVE_ACID_SPRAY), - LEVEL_UP_MOVE(29, MOVE_BARRIER), - LEVEL_UP_MOVE(33, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(36, MOVE_POISON_JAB), - LEVEL_UP_MOVE(40, MOVE_SCREECH), - LEVEL_UP_MOVE(43, MOVE_HEX), - LEVEL_UP_MOVE(47, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(50, MOVE_SLUDGE_WAVE), - LEVEL_UP_MOVE(54, MOVE_WRING_OUT), + LEVEL_UP_MOVE( 4, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 7, MOVE_CONSTRICT), + LEVEL_UP_MOVE(10, MOVE_ACID), + LEVEL_UP_MOVE(13, MOVE_TOXIC_SPIKES), + LEVEL_UP_MOVE(16, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(19, MOVE_WRAP), + LEVEL_UP_MOVE(22, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(28, MOVE_BARRIER), + LEVEL_UP_MOVE(31, MOVE_POISON_JAB), + LEVEL_UP_MOVE(34, MOVE_BRINE), + LEVEL_UP_MOVE(37, MOVE_SCREECH), + LEVEL_UP_MOVE(40, MOVE_HEX), + LEVEL_UP_MOVE(43, MOVE_SLUDGE_WAVE), + LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(49, MOVE_WRING_OUT), LEVEL_UP_END }; @@ -1748,21 +1771,23 @@ static const struct LevelUpMove sTentacruelLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POISON_STING), LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), - LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 8, MOVE_CONSTRICT), - LEVEL_UP_MOVE(12, MOVE_ACID), - LEVEL_UP_MOVE(15, MOVE_TOXIC_SPIKES), - LEVEL_UP_MOVE(19, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(22, MOVE_WRAP), - LEVEL_UP_MOVE(26, MOVE_ACID_SPRAY), - LEVEL_UP_MOVE(29, MOVE_BARRIER), - LEVEL_UP_MOVE(34, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(38, MOVE_POISON_JAB), - LEVEL_UP_MOVE(43, MOVE_SCREECH), - LEVEL_UP_MOVE(47, MOVE_HEX), + LEVEL_UP_MOVE( 1, MOVE_ACID), + LEVEL_UP_MOVE( 4, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 7, MOVE_CONSTRICT), + LEVEL_UP_MOVE(10, MOVE_ACID), + LEVEL_UP_MOVE(13, MOVE_TOXIC_SPIKES), + LEVEL_UP_MOVE(16, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(19, MOVE_WRAP), + LEVEL_UP_MOVE(22, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(28, MOVE_BARRIER), + LEVEL_UP_MOVE(32, MOVE_POISON_JAB), + LEVEL_UP_MOVE(36, MOVE_BRINE), + LEVEL_UP_MOVE(40, MOVE_SCREECH), + LEVEL_UP_MOVE(44, MOVE_HEX), + LEVEL_UP_MOVE(48, MOVE_SLUDGE_WAVE), LEVEL_UP_MOVE(52, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(56, MOVE_SLUDGE_WAVE), - LEVEL_UP_MOVE(61, MOVE_WRING_OUT), + LEVEL_UP_MOVE(56, MOVE_WRING_OUT), LEVEL_UP_END }; #endif //P_FAMILY_TENTACOOL @@ -1772,19 +1797,19 @@ static const struct LevelUpMove sGeodudeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), LEVEL_UP_MOVE( 4, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 8, MOVE_ROCK_POLISH), - LEVEL_UP_MOVE(11, MOVE_ROLLOUT), - LEVEL_UP_MOVE(15, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(18, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(22, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(25, MOVE_SMACK_DOWN), - LEVEL_UP_MOVE(29, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(32, MOVE_BULLDOZE), - LEVEL_UP_MOVE(36, MOVE_STEALTH_ROCK), - LEVEL_UP_MOVE(39, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(43, MOVE_EXPLOSION), - LEVEL_UP_MOVE(46, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(50, MOVE_STONE_EDGE), + LEVEL_UP_MOVE( 6, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE(10, MOVE_ROLLOUT), + LEVEL_UP_MOVE(12, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(16, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(18, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(22, MOVE_BULLDOZE), + LEVEL_UP_MOVE(24, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(28, MOVE_STEALTH_ROCK), + LEVEL_UP_MOVE(30, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(34, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(36, MOVE_EXPLOSION), + LEVEL_UP_MOVE(40, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(42, MOVE_STONE_EDGE), LEVEL_UP_END }; @@ -1794,19 +1819,19 @@ static const struct LevelUpMove sGravelerLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), LEVEL_UP_MOVE( 1, MOVE_ROCK_POLISH), LEVEL_UP_MOVE( 4, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 8, MOVE_ROCK_POLISH), - LEVEL_UP_MOVE(11, MOVE_ROLLOUT), - LEVEL_UP_MOVE(15, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(18, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(22, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(27, MOVE_SMACK_DOWN), - LEVEL_UP_MOVE(31, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(36, MOVE_BULLDOZE), - LEVEL_UP_MOVE(42, MOVE_STEALTH_ROCK), - LEVEL_UP_MOVE(47, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(53, MOVE_EXPLOSION), - LEVEL_UP_MOVE(58, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(64, MOVE_STONE_EDGE), + LEVEL_UP_MOVE( 6, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE(10, MOVE_ROLLOUT), + LEVEL_UP_MOVE(12, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(16, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(18, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(22, MOVE_BULLDOZE), + LEVEL_UP_MOVE(24, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(30, MOVE_STEALTH_ROCK), + LEVEL_UP_MOVE(34, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(40, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(44, MOVE_EXPLOSION), + LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(54, MOVE_STONE_EDGE), LEVEL_UP_END }; @@ -1817,20 +1842,20 @@ static const struct LevelUpMove sGolemLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), LEVEL_UP_MOVE( 1, MOVE_ROCK_POLISH), LEVEL_UP_MOVE( 4, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 8, MOVE_ROCK_POLISH), - LEVEL_UP_MOVE(11, MOVE_STEAMROLLER), - LEVEL_UP_MOVE(15, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(18, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(22, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(27, MOVE_SMACK_DOWN), - LEVEL_UP_MOVE(31, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(36, MOVE_BULLDOZE), - LEVEL_UP_MOVE(42, MOVE_STEALTH_ROCK), - LEVEL_UP_MOVE(47, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(53, MOVE_EXPLOSION), - LEVEL_UP_MOVE(58, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(64, MOVE_STONE_EDGE), - LEVEL_UP_MOVE(69, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE( 6, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE(10, MOVE_STEAMROLLER), + LEVEL_UP_MOVE(12, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(16, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(18, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(22, MOVE_BULLDOZE), + LEVEL_UP_MOVE(24, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(30, MOVE_STEALTH_ROCK), + LEVEL_UP_MOVE(34, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(40, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(44, MOVE_EXPLOSION), + LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(54, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(60, MOVE_HEAVY_SLAM), LEVEL_UP_END }; @@ -2134,76 +2159,79 @@ static const struct LevelUpMove sSlowkingGalarianLevelUpLearnset[] = { #if P_FAMILY_MAGNEMITE static const struct LevelUpMove sMagnemiteLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 4, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), LEVEL_UP_MOVE( 7, MOVE_THUNDER_SHOCK), LEVEL_UP_MOVE(11, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE(15, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(18, MOVE_MAGNET_BOMB), - LEVEL_UP_MOVE(21, MOVE_SPARK), - LEVEL_UP_MOVE(25, MOVE_MIRROR_SHOT), - LEVEL_UP_MOVE(29, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(32, MOVE_ELECTRO_BALL), - LEVEL_UP_MOVE(35, MOVE_FLASH_CANNON), - LEVEL_UP_MOVE(39, MOVE_SCREECH), - LEVEL_UP_MOVE(43, MOVE_DISCHARGE), - LEVEL_UP_MOVE(46, MOVE_LOCK_ON), - LEVEL_UP_MOVE(49, MOVE_MAGNET_RISE), - LEVEL_UP_MOVE(53, MOVE_GYRO_BALL), - LEVEL_UP_MOVE(57, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(17, MOVE_MAGNET_BOMB), + LEVEL_UP_MOVE(19, MOVE_SPARK), + LEVEL_UP_MOVE(23, MOVE_MIRROR_SHOT), + LEVEL_UP_MOVE(25, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(29, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(31, MOVE_FLASH_CANNON), + LEVEL_UP_MOVE(35, MOVE_SCREECH), + LEVEL_UP_MOVE(37, MOVE_DISCHARGE), + LEVEL_UP_MOVE(41, MOVE_LOCK_ON), + LEVEL_UP_MOVE(43, MOVE_MAGNET_RISE), + LEVEL_UP_MOVE(47, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON), LEVEL_UP_END }; static const struct LevelUpMove sMagnetonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 1, MOVE_TRI_ATTACK), LEVEL_UP_MOVE( 1, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE( 4, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), LEVEL_UP_MOVE( 7, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE(11, MOVE_ELECTRIC_TERRAIN), - LEVEL_UP_MOVE(15, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(18, MOVE_MAGNET_BOMB), - LEVEL_UP_MOVE(21, MOVE_SPARK), - LEVEL_UP_MOVE(25, MOVE_MIRROR_SHOT), - LEVEL_UP_MOVE(29, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(34, MOVE_ELECTRO_BALL), - LEVEL_UP_MOVE(39, MOVE_FLASH_CANNON), - LEVEL_UP_MOVE(45, MOVE_SCREECH), - LEVEL_UP_MOVE(51, MOVE_DISCHARGE), - LEVEL_UP_MOVE(56, MOVE_LOCK_ON), - LEVEL_UP_MOVE(62, MOVE_MAGNET_RISE), - LEVEL_UP_MOVE(67, MOVE_GYRO_BALL), - LEVEL_UP_MOVE(73, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(11, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(17, MOVE_MAGNET_BOMB), + LEVEL_UP_MOVE(19, MOVE_SPARK), + LEVEL_UP_MOVE(23, MOVE_MIRROR_SHOT), + LEVEL_UP_MOVE(25, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(29, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(30, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(33, MOVE_FLASH_CANNON), + LEVEL_UP_MOVE(39, MOVE_SCREECH), + LEVEL_UP_MOVE(43, MOVE_DISCHARGE), + LEVEL_UP_MOVE(49, MOVE_LOCK_ON), + LEVEL_UP_MOVE(53, MOVE_MAGNET_RISE), + LEVEL_UP_MOVE(59, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(63, MOVE_ZAP_CANNON), LEVEL_UP_END }; #if P_GEN_4_CROSS_EVOS static const struct LevelUpMove sMagnezoneLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BARRIER), + LEVEL_UP_MOVE( 1, MOVE_ZAP_CANNON), LEVEL_UP_MOVE( 1, MOVE_MAGNETIC_FLUX), LEVEL_UP_MOVE( 1, MOVE_MIRROR_COAT), - LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_BARRIER), + LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN), LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE( 4, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), LEVEL_UP_MOVE( 7, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE(11, MOVE_ELECTRIC_TERRAIN), - LEVEL_UP_MOVE(15, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(18, MOVE_MAGNET_BOMB), - LEVEL_UP_MOVE(21, MOVE_SPARK), - LEVEL_UP_MOVE(25, MOVE_MIRROR_SHOT), - LEVEL_UP_MOVE(29, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(34, MOVE_ELECTRO_BALL), - LEVEL_UP_MOVE(39, MOVE_FLASH_CANNON), - LEVEL_UP_MOVE(45, MOVE_SCREECH), - LEVEL_UP_MOVE(51, MOVE_DISCHARGE), - LEVEL_UP_MOVE(56, MOVE_LOCK_ON), - LEVEL_UP_MOVE(62, MOVE_MAGNET_RISE), - LEVEL_UP_MOVE(67, MOVE_GYRO_BALL), - LEVEL_UP_MOVE(73, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(11, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(17, MOVE_MAGNET_BOMB), + LEVEL_UP_MOVE(19, MOVE_SPARK), + LEVEL_UP_MOVE(23, MOVE_MIRROR_SHOT), + LEVEL_UP_MOVE(25, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(29, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(33, MOVE_FLASH_CANNON), + LEVEL_UP_MOVE(39, MOVE_SCREECH), + LEVEL_UP_MOVE(43, MOVE_DISCHARGE), + LEVEL_UP_MOVE(49, MOVE_LOCK_ON), + LEVEL_UP_MOVE(53, MOVE_MAGNET_RISE), + LEVEL_UP_MOVE(59, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(63, MOVE_ZAP_CANNON), LEVEL_UP_END }; #endif //P_GEN_4_CROSS_EVOS @@ -2283,36 +2311,37 @@ static const struct LevelUpMove sDoduoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 5, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(10, MOVE_RAGE), - LEVEL_UP_MOVE(14, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(19, MOVE_PURSUIT), - LEVEL_UP_MOVE(23, MOVE_UPROAR), - LEVEL_UP_MOVE(28, MOVE_ACUPRESSURE), - LEVEL_UP_MOVE(32, MOVE_DOUBLE_HIT), - LEVEL_UP_MOVE(37, MOVE_AGILITY), - LEVEL_UP_MOVE(41, MOVE_DRILL_PECK), - LEVEL_UP_MOVE(46, MOVE_ENDEAVOR), - LEVEL_UP_MOVE(50, MOVE_THRASH), + LEVEL_UP_MOVE( 9, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(17, MOVE_PURSUIT), + LEVEL_UP_MOVE(21, MOVE_PLUCK), + LEVEL_UP_MOVE(25, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(29, MOVE_ACUPRESSURE), + LEVEL_UP_MOVE(33, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(41, MOVE_UPROAR), + LEVEL_UP_MOVE(45, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(49, MOVE_THRASH), LEVEL_UP_END }; static const struct LevelUpMove sDodrioLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_PLUCK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), LEVEL_UP_MOVE( 1, MOVE_RAGE), LEVEL_UP_MOVE( 5, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(10, MOVE_RAGE), - LEVEL_UP_MOVE(14, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(19, MOVE_PURSUIT), - LEVEL_UP_MOVE(23, MOVE_UPROAR), - LEVEL_UP_MOVE(28, MOVE_ACUPRESSURE), - LEVEL_UP_MOVE(34, MOVE_TRI_ATTACK), - LEVEL_UP_MOVE(41, MOVE_AGILITY), - LEVEL_UP_MOVE(47, MOVE_DRILL_PECK), - LEVEL_UP_MOVE(54, MOVE_ENDEAVOR), - LEVEL_UP_MOVE(60, MOVE_THRASH), + LEVEL_UP_MOVE( 9, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(17, MOVE_PURSUIT), + LEVEL_UP_MOVE(21, MOVE_PLUCK), + LEVEL_UP_MOVE(25, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(29, MOVE_ACUPRESSURE), + LEVEL_UP_MOVE(35, MOVE_AGILITY), + LEVEL_UP_MOVE(41, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(47, MOVE_UPROAR), + LEVEL_UP_MOVE(53, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(59, MOVE_THRASH), LEVEL_UP_END }; #endif //P_FAMILY_DODUO @@ -2373,14 +2402,14 @@ static const struct LevelUpMove sGrimerLevelUpLearnset[] = { LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), LEVEL_UP_MOVE(12, MOVE_DISABLE), LEVEL_UP_MOVE(15, MOVE_SLUDGE), - LEVEL_UP_MOVE(18, MOVE_MINIMIZE), - LEVEL_UP_MOVE(21, MOVE_MUD_BOMB), - LEVEL_UP_MOVE(26, MOVE_SLUDGE_BOMB), - LEVEL_UP_MOVE(29, MOVE_FLING), - LEVEL_UP_MOVE(32, MOVE_SCREECH), - LEVEL_UP_MOVE(37, MOVE_SLUDGE_WAVE), - LEVEL_UP_MOVE(40, MOVE_ACID_ARMOR), - LEVEL_UP_MOVE(43, MOVE_GUNK_SHOT), + LEVEL_UP_MOVE(18, MOVE_MUD_BOMB), + LEVEL_UP_MOVE(21, MOVE_MINIMIZE), + LEVEL_UP_MOVE(26, MOVE_FLING), + LEVEL_UP_MOVE(29, MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE(32, MOVE_SLUDGE_WAVE), + LEVEL_UP_MOVE(37, MOVE_SCREECH), + LEVEL_UP_MOVE(40, MOVE_GUNK_SHOT), + LEVEL_UP_MOVE(43, MOVE_ACID_ARMOR), LEVEL_UP_MOVE(46, MOVE_BELCH), LEVEL_UP_MOVE(48, MOVE_MEMENTO), LEVEL_UP_END @@ -2395,15 +2424,16 @@ static const struct LevelUpMove sMukLevelUpLearnset[] = { LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), LEVEL_UP_MOVE(12, MOVE_DISABLE), LEVEL_UP_MOVE(15, MOVE_SLUDGE), - LEVEL_UP_MOVE(18, MOVE_MINIMIZE), - LEVEL_UP_MOVE(21, MOVE_MUD_BOMB), - LEVEL_UP_MOVE(26, MOVE_SLUDGE_BOMB), - LEVEL_UP_MOVE(29, MOVE_FLING), - LEVEL_UP_MOVE(32, MOVE_SCREECH), - LEVEL_UP_MOVE(37, MOVE_SLUDGE_WAVE), - LEVEL_UP_MOVE(43, MOVE_ACID_ARMOR), - LEVEL_UP_MOVE(49, MOVE_GUNK_SHOT), - LEVEL_UP_MOVE(53, MOVE_BELCH), + LEVEL_UP_MOVE(18, MOVE_MUD_BOMB), + LEVEL_UP_MOVE(21, MOVE_MINIMIZE), + LEVEL_UP_MOVE(26, MOVE_FLING), + LEVEL_UP_MOVE(29, MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE(32, MOVE_SLUDGE_WAVE), + LEVEL_UP_MOVE(37, MOVE_SCREECH), + LEVEL_UP_MOVE(38, MOVE_VENOM_DRENCH), + LEVEL_UP_MOVE(40, MOVE_GUNK_SHOT), + LEVEL_UP_MOVE(46, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(52, MOVE_BELCH), LEVEL_UP_MOVE(57, MOVE_MEMENTO), LEVEL_UP_END }; @@ -2707,44 +2737,46 @@ static const struct LevelUpMove sKinglerLevelUpLearnset[] = { #if P_FAMILY_VOLTORB static const struct LevelUpMove sVoltorbLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CHARGE), - LEVEL_UP_MOVE( 5, MOVE_TACKLE), - LEVEL_UP_MOVE( 8, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE(10, MOVE_EERIE_IMPULSE), - LEVEL_UP_MOVE(12, MOVE_SPARK), - LEVEL_UP_MOVE(15, MOVE_ROLLOUT), - LEVEL_UP_MOVE(19, MOVE_SCREECH), - LEVEL_UP_MOVE(22, MOVE_CHARGE_BEAM), - LEVEL_UP_MOVE(26, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(29, MOVE_ELECTRO_BALL), - LEVEL_UP_MOVE(33, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(36, MOVE_SWIFT), - LEVEL_UP_MOVE(40, MOVE_MAGNET_RISE), - LEVEL_UP_MOVE(43, MOVE_GYRO_BALL), - LEVEL_UP_MOVE(47, MOVE_EXPLOSION), - LEVEL_UP_MOVE(50, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE( 6, MOVE_EERIE_IMPULSE), + LEVEL_UP_MOVE( 9, MOVE_SPARK), + LEVEL_UP_MOVE(11, MOVE_ROLLOUT), + LEVEL_UP_MOVE(13, MOVE_SCREECH), + LEVEL_UP_MOVE(16, MOVE_CHARGE_BEAM), + LEVEL_UP_MOVE(20, MOVE_SWIFT), + LEVEL_UP_MOVE(22, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(26, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(29, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(34, MOVE_MAGNET_RISE), + LEVEL_UP_MOVE(37, MOVE_DISCHARGE), + LEVEL_UP_MOVE(41, MOVE_EXPLOSION), + LEVEL_UP_MOVE(46, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(48, MOVE_MIRROR_COAT), LEVEL_UP_END }; static const struct LevelUpMove sElectrodeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CHARGE), LEVEL_UP_MOVE( 1, MOVE_MAGNETIC_FLUX), + LEVEL_UP_MOVE( 1, MOVE_CHARGE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), LEVEL_UP_MOVE( 1, MOVE_SPARK), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_TACKLE), - LEVEL_UP_MOVE( 8, MOVE_EERIE_IMPULSE), - LEVEL_UP_MOVE(12, MOVE_SPARK), - LEVEL_UP_MOVE(15, MOVE_ROLLOUT), - LEVEL_UP_MOVE(19, MOVE_SCREECH), - LEVEL_UP_MOVE(22, MOVE_CHARGE_BEAM), - LEVEL_UP_MOVE(26, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(29, MOVE_ELECTRO_BALL), - LEVEL_UP_MOVE(35, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(40, MOVE_SWIFT), - LEVEL_UP_MOVE(46, MOVE_MAGNET_RISE), - LEVEL_UP_MOVE(51, MOVE_GYRO_BALL), - LEVEL_UP_MOVE(57, MOVE_EXPLOSION), - LEVEL_UP_MOVE(62, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 4, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE( 6, MOVE_EERIE_IMPULSE), + LEVEL_UP_MOVE( 9, MOVE_SPARK), + LEVEL_UP_MOVE(11, MOVE_ROLLOUT), + LEVEL_UP_MOVE(13, MOVE_SCREECH), + LEVEL_UP_MOVE(16, MOVE_CHARGE_BEAM), + LEVEL_UP_MOVE(20, MOVE_SWIFT), + LEVEL_UP_MOVE(22, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(26, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(29, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(36, MOVE_MAGNET_RISE), + LEVEL_UP_MOVE(41, MOVE_DISCHARGE), + LEVEL_UP_MOVE(47, MOVE_EXPLOSION), + LEVEL_UP_MOVE(54, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(58, MOVE_MIRROR_COAT), LEVEL_UP_END }; @@ -3060,8 +3092,8 @@ static const struct LevelUpMove sWeezingLevelUpLearnset[] = { LEVEL_UP_MOVE(34, MOVE_SLUDGE_BOMB), LEVEL_UP_MOVE(40, MOVE_EXPLOSION), LEVEL_UP_MOVE(46, MOVE_DESTINY_BOND), - LEVEL_UP_MOVE(50, MOVE_BELCH), - LEVEL_UP_MOVE(54, MOVE_MEMENTO), + LEVEL_UP_MOVE(51, MOVE_BELCH), + LEVEL_UP_MOVE(57, MOVE_MEMENTO), LEVEL_UP_END }; @@ -3100,67 +3132,69 @@ static const struct LevelUpMove sWeezingGalarianLevelUpLearnset[] = { static const struct LevelUpMove sRhyhornLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 8, MOVE_STOMP), - LEVEL_UP_MOVE(12, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(19, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(23, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(30, MOVE_BULLDOZE), - LEVEL_UP_MOVE(34, MOVE_CHIP_AWAY), - LEVEL_UP_MOVE(41, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(45, MOVE_DRILL_RUN), - LEVEL_UP_MOVE(52, MOVE_STONE_EDGE), - LEVEL_UP_MOVE(56, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(63, MOVE_HORN_DRILL), - LEVEL_UP_MOVE(67, MOVE_MEGAHORN), + LEVEL_UP_MOVE( 5, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(13, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(17, MOVE_STOMP), + LEVEL_UP_MOVE(21, MOVE_BULLDOZE), + LEVEL_UP_MOVE(25, MOVE_CHIP_AWAY), + LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(33, MOVE_DRILL_RUN), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(45, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(49, MOVE_MEGAHORN), + LEVEL_UP_MOVE(53, MOVE_HORN_DRILL), LEVEL_UP_END }; static const struct LevelUpMove sRhydonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), LEVEL_UP_MOVE( 1, MOVE_HORN_DRILL), - LEVEL_UP_MOVE( 1, MOVE_MEGAHORN), - LEVEL_UP_MOVE( 1, MOVE_STOMP), + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 9, MOVE_STOMP), - LEVEL_UP_MOVE(12, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(19, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(23, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(30, MOVE_BULLDOZE), - LEVEL_UP_MOVE(34, MOVE_CHIP_AWAY), - LEVEL_UP_MOVE(41, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 5, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(13, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(17, MOVE_STOMP), + LEVEL_UP_MOVE(21, MOVE_BULLDOZE), + LEVEL_UP_MOVE(25, MOVE_CHIP_AWAY), + LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(33, MOVE_DRILL_RUN), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_STONE_EDGE), LEVEL_UP_MOVE(42, MOVE_HAMMER_ARM), - LEVEL_UP_MOVE(47, MOVE_DRILL_RUN), - LEVEL_UP_MOVE(56, MOVE_STONE_EDGE), - LEVEL_UP_MOVE(62, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(71, MOVE_HORN_DRILL), - LEVEL_UP_MOVE(77, MOVE_MEGAHORN), + LEVEL_UP_MOVE(48, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(55, MOVE_MEGAHORN), + LEVEL_UP_MOVE(62, MOVE_HORN_DRILL), LEVEL_UP_END }; #if P_GEN_4_CROSS_EVOS static const struct LevelUpMove sRhyperiorLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_HORN_DRILL), - LEVEL_UP_MOVE( 1, MOVE_MEGAHORN), - LEVEL_UP_MOVE( 1, MOVE_POISON_JAB), LEVEL_UP_MOVE( 1, MOVE_ROCK_WRECKER), - LEVEL_UP_MOVE( 1, MOVE_STOMP), + LEVEL_UP_MOVE( 1, MOVE_HORN_DRILL), + LEVEL_UP_MOVE( 1, MOVE_POISON_JAB), + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 9, MOVE_STOMP), - LEVEL_UP_MOVE(19, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(19, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(23, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(30, MOVE_CHIP_AWAY), - LEVEL_UP_MOVE(41, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 5, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(13, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(17, MOVE_STOMP), + LEVEL_UP_MOVE(21, MOVE_BULLDOZE), + LEVEL_UP_MOVE(25, MOVE_CHIP_AWAY), + LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(33, MOVE_DRILL_RUN), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_STONE_EDGE), LEVEL_UP_MOVE(42, MOVE_HAMMER_ARM), - LEVEL_UP_MOVE(47, MOVE_DRILL_RUN), - LEVEL_UP_MOVE(56, MOVE_STONE_EDGE), - LEVEL_UP_MOVE(62, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(71, MOVE_HORN_DRILL), - LEVEL_UP_MOVE(77, MOVE_MEGAHORN), - LEVEL_UP_MOVE(86, MOVE_ROCK_WRECKER), + LEVEL_UP_MOVE(48, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(55, MOVE_MEGAHORN), + LEVEL_UP_MOVE(62, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(69, MOVE_ROCK_WRECKER), LEVEL_UP_END }; #endif //P_GEN_4_CROSS_EVOS @@ -3300,59 +3334,60 @@ static const struct LevelUpMove sKangaskhanLevelUpLearnset[] = { #if P_FAMILY_HORSEA static const struct LevelUpMove sHorseaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 4, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE( 8, MOVE_LEER), - LEVEL_UP_MOVE(11, MOVE_BUBBLE), - LEVEL_UP_MOVE(14, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(18, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(23, MOVE_AGILITY), - LEVEL_UP_MOVE(26, MOVE_TWISTER), - LEVEL_UP_MOVE(30, MOVE_BRINE), - LEVEL_UP_MOVE(35, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(38, MOVE_DRAGON_DANCE), - LEVEL_UP_MOVE(42, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 5, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(17, MOVE_TWISTER), + LEVEL_UP_MOVE(21, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(26, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(31, MOVE_BRINE), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(41, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(46, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(52, MOVE_HYDRO_PUMP), LEVEL_UP_END }; static const struct LevelUpMove sSeadraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HYDRO_PUMP), LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 4, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE( 8, MOVE_LEER), - LEVEL_UP_MOVE(11, MOVE_BUBBLE), - LEVEL_UP_MOVE(14, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(18, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(23, MOVE_AGILITY), - LEVEL_UP_MOVE(26, MOVE_TWISTER), - LEVEL_UP_MOVE(30, MOVE_BRINE), - LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(48, MOVE_DRAGON_DANCE), - LEVEL_UP_MOVE(57, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE( 5, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(17, MOVE_TWISTER), + LEVEL_UP_MOVE(21, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(26, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(31, MOVE_BRINE), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(45, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(52, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(60, MOVE_HYDRO_PUMP), LEVEL_UP_END }; #if P_GEN_2_CROSS_EVOS static const struct LevelUpMove sKingdraLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE( 1, MOVE_HYDRO_PUMP), LEVEL_UP_MOVE( 1, MOVE_YAWN), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 4, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE( 8, MOVE_LEER), - LEVEL_UP_MOVE(11, MOVE_BUBBLE), - LEVEL_UP_MOVE(14, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(18, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(23, MOVE_AGILITY), - LEVEL_UP_MOVE(26, MOVE_TWISTER), - LEVEL_UP_MOVE(30, MOVE_BRINE), - LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(48, MOVE_DRAGON_DANCE), - LEVEL_UP_MOVE(57, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE( 5, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(17, MOVE_TWISTER), + LEVEL_UP_MOVE(21, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(26, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(31, MOVE_BRINE), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(45, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(52, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(60, MOVE_HYDRO_PUMP), LEVEL_UP_END }; #endif //P_GEN_2_CROSS_EVOS @@ -3363,70 +3398,73 @@ static const struct LevelUpMove sGoldeenLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(11, MOVE_HORN_ATTACK), - LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(21, MOVE_FLAIL), - LEVEL_UP_MOVE(27, MOVE_AQUA_RING), - LEVEL_UP_MOVE(31, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(37, MOVE_WATERFALL), - LEVEL_UP_MOVE(41, MOVE_HORN_DRILL), - LEVEL_UP_MOVE(47, MOVE_AGILITY), - LEVEL_UP_MOVE(50, MOVE_SOAK), - LEVEL_UP_MOVE(57, MOVE_MEGAHORN), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 8, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(13, MOVE_FLAIL), + LEVEL_UP_MOVE(16, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(21, MOVE_AQUA_RING), + LEVEL_UP_MOVE(24, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(29, MOVE_AGILITY), + LEVEL_UP_MOVE(32, MOVE_WATERFALL), + LEVEL_UP_MOVE(37, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(40, MOVE_SOAK), + LEVEL_UP_MOVE(45, MOVE_MEGAHORN), LEVEL_UP_END }; static const struct LevelUpMove sSeakingLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MEGAHORN), - LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_POISON_JAB), - LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(11, MOVE_HORN_ATTACK), - LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(21, MOVE_FLAIL), - LEVEL_UP_MOVE(27, MOVE_AQUA_RING), - LEVEL_UP_MOVE(31, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(40, MOVE_WATERFALL), - LEVEL_UP_MOVE(47, MOVE_HORN_DRILL), - LEVEL_UP_MOVE(56, MOVE_AGILITY), - LEVEL_UP_MOVE(63, MOVE_SOAK), - LEVEL_UP_MOVE(72, MOVE_MEGAHORN), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 8, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(13, MOVE_FLAIL), + LEVEL_UP_MOVE(16, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(21, MOVE_AQUA_RING), + LEVEL_UP_MOVE(24, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(29, MOVE_AGILITY), + LEVEL_UP_MOVE(32, MOVE_WATERFALL), + LEVEL_UP_MOVE(40, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(46, MOVE_SOAK), + LEVEL_UP_MOVE(54, MOVE_MEGAHORN), LEVEL_UP_END }; #endif //P_FAMILY_GOLDEEN #if P_FAMILY_STARYU static const struct LevelUpMove sStaryuLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HARDEN), LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 6, MOVE_WATER_GUN), - LEVEL_UP_MOVE(10, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE(12, MOVE_RECOVER), - LEVEL_UP_MOVE(15, MOVE_CAMOUFLAGE), - LEVEL_UP_MOVE(18, MOVE_SWIFT), - LEVEL_UP_MOVE(22, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(25, MOVE_MINIMIZE), - LEVEL_UP_MOVE(30, MOVE_GYRO_BALL), - LEVEL_UP_MOVE(33, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(36, MOVE_BRINE), - LEVEL_UP_MOVE(40, MOVE_REFLECT_TYPE), - LEVEL_UP_MOVE(43, MOVE_POWER_GEM), - LEVEL_UP_MOVE(48, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(52, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 4, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(10, MOVE_RECOVER), + LEVEL_UP_MOVE(13, MOVE_PSYWAVE), + LEVEL_UP_MOVE(16, MOVE_SWIFT), + LEVEL_UP_MOVE(18, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(22, MOVE_CAMOUFLAGE), + LEVEL_UP_MOVE(24, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(28, MOVE_BRINE), + LEVEL_UP_MOVE(31, MOVE_MINIMIZE), + LEVEL_UP_MOVE(35, MOVE_REFLECT_TYPE), + LEVEL_UP_MOVE(37, MOVE_POWER_GEM), + LEVEL_UP_MOVE(40, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(42, MOVE_PSYCHIC), + LEVEL_UP_MOVE(46, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(49, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(53, MOVE_HYDRO_PUMP), LEVEL_UP_END }; static const struct LevelUpMove sStarmieLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), LEVEL_UP_MOVE( 1, MOVE_RECOVER), LEVEL_UP_MOVE( 1, MOVE_SWIFT), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE(22, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(40, MOVE_CONFUSE_RAY), LEVEL_UP_END }; #endif //P_FAMILY_STARYU @@ -3798,21 +3836,22 @@ static const struct LevelUpMove sMagmortarLevelUpLearnset[] = { #if P_FAMILY_PINSIR static const struct LevelUpMove sPinsirLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), LEVEL_UP_MOVE( 1, MOVE_VISE_GRIP), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), LEVEL_UP_MOVE( 4, MOVE_BIND), LEVEL_UP_MOVE( 8, MOVE_SEISMIC_TOSS), LEVEL_UP_MOVE(11, MOVE_HARDEN), LEVEL_UP_MOVE(15, MOVE_REVENGE), - LEVEL_UP_MOVE(18, MOVE_BRICK_BREAK), - LEVEL_UP_MOVE(22, MOVE_VITAL_THROW), - LEVEL_UP_MOVE(26, MOVE_SUBMISSION), - LEVEL_UP_MOVE(29, MOVE_X_SCISSOR), - LEVEL_UP_MOVE(33, MOVE_STORM_THROW), - LEVEL_UP_MOVE(36, MOVE_THRASH), + LEVEL_UP_MOVE(18, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(22, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(26, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(29, MOVE_SUBMISSION), + LEVEL_UP_MOVE(33, MOVE_X_SCISSOR), + LEVEL_UP_MOVE(36, MOVE_STORM_THROW), LEVEL_UP_MOVE(40, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(43, MOVE_SUPERPOWER), - LEVEL_UP_MOVE(47, MOVE_GUILLOTINE), + LEVEL_UP_MOVE(43, MOVE_THRASH), + LEVEL_UP_MOVE(47, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(50, MOVE_GUILLOTINE), LEVEL_UP_END }; #endif //P_FAMILY_PINSIR @@ -3910,9 +3949,10 @@ static const struct LevelUpMove sGyaradosLevelUpLearnset[] = { LEVEL_UP_MOVE(32, MOVE_ICE_FANG), LEVEL_UP_MOVE(35, MOVE_AQUA_TAIL), LEVEL_UP_MOVE(38, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(41, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(44, MOVE_DRAGON_DANCE), - LEVEL_UP_MOVE(47, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(41, MOVE_CRUNCH), + LEVEL_UP_MOVE(44, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(47, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(50, MOVE_HYPER_BEAM), LEVEL_UP_END }; #endif //P_FAMILY_MAGIKARP @@ -4298,10 +4338,10 @@ static const struct LevelUpMove sAerodactylLevelUpLearnset[] = { #if P_GEN_4_CROSS_EVOS static const struct LevelUpMove sMunchlaxLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LAST_RESORT), + LEVEL_UP_MOVE( 1, MOVE_RECYCLE), LEVEL_UP_MOVE( 1, MOVE_LICK), LEVEL_UP_MOVE( 1, MOVE_METRONOME), LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE( 1, MOVE_SNATCH), LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), LEVEL_UP_MOVE( 9, MOVE_AMNESIA), @@ -4315,7 +4355,7 @@ static const struct LevelUpMove sMunchlaxLevelUpLearnset[] = { LEVEL_UP_MOVE(41, MOVE_FLING), LEVEL_UP_MOVE(44, MOVE_BELLY_DRUM), LEVEL_UP_MOVE(49, MOVE_NATURAL_GIFT), - LEVEL_UP_MOVE(52, MOVE_SNATCH), + LEVEL_UP_MOVE(50, MOVE_SNATCH), LEVEL_UP_MOVE(57, MOVE_LAST_RESORT), LEVEL_UP_END }; @@ -4976,18 +5016,18 @@ static const struct LevelUpMove sAriadosLevelUpLearnset[] = { #if P_FAMILY_CHINCHOU static const struct LevelUpMove sChinchouLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), LEVEL_UP_MOVE( 6, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 9, MOVE_FLAIL), - LEVEL_UP_MOVE(12, MOVE_BUBBLE), + LEVEL_UP_MOVE( 9, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(12, MOVE_WATER_GUN), LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(20, MOVE_SPARK), - LEVEL_UP_MOVE(23, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(28, MOVE_ELECTRO_BALL), - LEVEL_UP_MOVE(31, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(34, MOVE_SIGNAL_BEAM), - LEVEL_UP_MOVE(39, MOVE_DISCHARGE), + LEVEL_UP_MOVE(20, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(23, MOVE_SPARK), + LEVEL_UP_MOVE(28, MOVE_SIGNAL_BEAM), + LEVEL_UP_MOVE(31, MOVE_FLAIL), + LEVEL_UP_MOVE(34, MOVE_DISCHARGE), + LEVEL_UP_MOVE(39, MOVE_TAKE_DOWN), LEVEL_UP_MOVE(42, MOVE_AQUA_RING), LEVEL_UP_MOVE(45, MOVE_HYDRO_PUMP), LEVEL_UP_MOVE(47, MOVE_ION_DELUGE), @@ -4997,26 +5037,27 @@ static const struct LevelUpMove sChinchouLevelUpLearnset[] = { static const struct LevelUpMove sLanturnLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_EERIE_IMPULSE), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ELECTRO_BALL), LEVEL_UP_MOVE( 6, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 9, MOVE_FLAIL), - LEVEL_UP_MOVE(12, MOVE_BUBBLE), + LEVEL_UP_MOVE( 9, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(12, MOVE_WATER_GUN), LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(20, MOVE_SPARK), - LEVEL_UP_MOVE(23, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(27, MOVE_SPIT_UP), + LEVEL_UP_MOVE(20, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(23, MOVE_SPARK), LEVEL_UP_MOVE(27, MOVE_STOCKPILE), + LEVEL_UP_MOVE(27, MOVE_SPIT_UP), LEVEL_UP_MOVE(27, MOVE_SWALLOW), - LEVEL_UP_MOVE(30, MOVE_ELECTRO_BALL), - LEVEL_UP_MOVE(35, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(40, MOVE_SIGNAL_BEAM), - LEVEL_UP_MOVE(47, MOVE_DISCHARGE), - LEVEL_UP_MOVE(52, MOVE_AQUA_RING), - LEVEL_UP_MOVE(57, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(60, MOVE_ION_DELUGE), - LEVEL_UP_MOVE(64, MOVE_CHARGE), + LEVEL_UP_MOVE(29, MOVE_SIGNAL_BEAM), + LEVEL_UP_MOVE(33, MOVE_FLAIL), + LEVEL_UP_MOVE(37, MOVE_DISCHARGE), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(47, MOVE_AQUA_RING), + LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(54, MOVE_ION_DELUGE), + LEVEL_UP_MOVE(58, MOVE_CHARGE), LEVEL_UP_END }; #endif //P_FAMILY_CHINCHOU @@ -5078,43 +5119,46 @@ static const struct LevelUpMove sTogekissLevelUpLearnset[] = { #if P_FAMILY_NATU static const struct LevelUpMove sNatuLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 6, MOVE_NIGHT_SHADE), LEVEL_UP_MOVE( 9, MOVE_TELEPORT), LEVEL_UP_MOVE(12, MOVE_LUCKY_CHANT), - LEVEL_UP_MOVE(17, MOVE_MIRACLE_EYE), - LEVEL_UP_MOVE(20, MOVE_ME_FIRST), + LEVEL_UP_MOVE(17, MOVE_STORED_POWER), + LEVEL_UP_MOVE(20, MOVE_OMINOUS_WIND), LEVEL_UP_MOVE(23, MOVE_CONFUSE_RAY), LEVEL_UP_MOVE(28, MOVE_WISH), - LEVEL_UP_MOVE(33, MOVE_PSYCHO_SHIFT), - LEVEL_UP_MOVE(36, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(39, MOVE_STORED_POWER), - LEVEL_UP_MOVE(44, MOVE_OMINOUS_WIND), - LEVEL_UP_MOVE(47, MOVE_GUARD_SWAP), + LEVEL_UP_MOVE(33, MOVE_PSYCHIC), + LEVEL_UP_MOVE(36, MOVE_MIRACLE_EYE), + LEVEL_UP_MOVE(39, MOVE_PSYCHO_SHIFT), + LEVEL_UP_MOVE(44, MOVE_FUTURE_SIGHT), LEVEL_UP_MOVE(47, MOVE_POWER_SWAP), - LEVEL_UP_MOVE(50, MOVE_PSYCHIC), + LEVEL_UP_MOVE(47, MOVE_GUARD_SWAP), + LEVEL_UP_MOVE(50, MOVE_ME_FIRST), LEVEL_UP_END }; static const struct LevelUpMove sXatuLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_TAILWIND), LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), LEVEL_UP_MOVE( 6, MOVE_NIGHT_SHADE), LEVEL_UP_MOVE( 9, MOVE_TELEPORT), LEVEL_UP_MOVE(12, MOVE_LUCKY_CHANT), - LEVEL_UP_MOVE(17, MOVE_MIRACLE_EYE), - LEVEL_UP_MOVE(20, MOVE_ME_FIRST), + LEVEL_UP_MOVE(17, MOVE_STORED_POWER), + LEVEL_UP_MOVE(20, MOVE_OMINOUS_WIND), LEVEL_UP_MOVE(23, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(27, MOVE_TAILWIND), - LEVEL_UP_MOVE(30, MOVE_WISH), - LEVEL_UP_MOVE(37, MOVE_PSYCHO_SHIFT), - LEVEL_UP_MOVE(42, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(47, MOVE_STORED_POWER), - LEVEL_UP_MOVE(54, MOVE_OMINOUS_WIND), - LEVEL_UP_MOVE(54, MOVE_POWER_SWAP), - LEVEL_UP_MOVE(59, MOVE_GUARD_SWAP), - LEVEL_UP_MOVE(66, MOVE_PSYCHIC), + LEVEL_UP_MOVE(25, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(29, MOVE_WISH), + LEVEL_UP_MOVE(35, MOVE_PSYCHIC), + LEVEL_UP_MOVE(39, MOVE_MIRACLE_EYE), + LEVEL_UP_MOVE(43, MOVE_PSYCHO_SHIFT), + LEVEL_UP_MOVE(49, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(53, MOVE_POWER_SWAP), + LEVEL_UP_MOVE(53, MOVE_GUARD_SWAP), + LEVEL_UP_MOVE(57, MOVE_ME_FIRST), LEVEL_UP_END }; #endif //P_FAMILY_NATU @@ -5217,12 +5261,12 @@ static const struct LevelUpMove sMarillLevelUpLearnset[] = { LEVEL_UP_MOVE(13, MOVE_BUBBLE_BEAM), LEVEL_UP_MOVE(16, MOVE_HELPING_HAND), LEVEL_UP_MOVE(20, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(23, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(23, MOVE_PLAY_ROUGH), LEVEL_UP_MOVE(28, MOVE_AQUA_RING), LEVEL_UP_MOVE(31, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(37, MOVE_SUPERPOWER), - LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(45, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(40, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(47, MOVE_HYDRO_PUMP), LEVEL_UP_END }; @@ -5239,12 +5283,12 @@ static const struct LevelUpMove sAzumarillLevelUpLearnset[] = { LEVEL_UP_MOVE(13, MOVE_BUBBLE_BEAM), LEVEL_UP_MOVE(16, MOVE_HELPING_HAND), LEVEL_UP_MOVE(21, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(25, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(25, MOVE_PLAY_ROUGH), LEVEL_UP_MOVE(31, MOVE_AQUA_RING), LEVEL_UP_MOVE(35, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(42, MOVE_SUPERPOWER), - LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(50, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(42, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(46, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), LEVEL_UP_END }; #endif //P_FAMILY_MARILL @@ -5639,14 +5683,15 @@ static const struct LevelUpMove sMisdreavusLevelUpLearnset[] = { #if P_GEN_4_CROSS_EVOS static const struct LevelUpMove sMismagiusLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_MYSTICAL_FIRE), + LEVEL_UP_MOVE( 1, MOVE_POWER_GEM), + LEVEL_UP_MOVE( 1, MOVE_PHANTOM_FORCE), LEVEL_UP_MOVE( 1, MOVE_LUCKY_CHANT), LEVEL_UP_MOVE( 1, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE( 1, MOVE_PHANTOM_FORCE), - LEVEL_UP_MOVE( 1, MOVE_POWER_GEM), + LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), LEVEL_UP_MOVE( 1, MOVE_SPITE), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_END }; #endif //P_GEN_4_CROSS_EVOS @@ -5691,15 +5736,16 @@ static const struct LevelUpMove sGirafarigLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_CONFUSION), LEVEL_UP_MOVE( 5, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(10, MOVE_STOMP), - LEVEL_UP_MOVE(14, MOVE_AGILITY), + LEVEL_UP_MOVE(10, MOVE_ASSURANCE), + LEVEL_UP_MOVE(14, MOVE_STOMP), LEVEL_UP_MOVE(19, MOVE_PSYBEAM), - LEVEL_UP_MOVE(23, MOVE_BATON_PASS), - LEVEL_UP_MOVE(28, MOVE_ASSURANCE), - LEVEL_UP_MOVE(32, MOVE_DOUBLE_HIT), - LEVEL_UP_MOVE(37, MOVE_PSYCHIC), - LEVEL_UP_MOVE(41, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(46, MOVE_CRUNCH), + LEVEL_UP_MOVE(23, MOVE_AGILITY), + LEVEL_UP_MOVE(28, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(32, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(37, MOVE_CRUNCH), + LEVEL_UP_MOVE(41, MOVE_BATON_PASS), + LEVEL_UP_MOVE(46, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(50, MOVE_PSYCHIC), LEVEL_UP_END }; @@ -6005,17 +6051,17 @@ static const struct LevelUpMove sHeracrossLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), LEVEL_UP_MOVE( 1, MOVE_ENDURE), - LEVEL_UP_MOVE( 7, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 7, MOVE_FEINT), LEVEL_UP_MOVE(10, MOVE_AERIAL_ACE), LEVEL_UP_MOVE(16, MOVE_CHIP_AWAY), LEVEL_UP_MOVE(19, MOVE_COUNTER), - LEVEL_UP_MOVE(25, MOVE_BRICK_BREAK), - LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(25, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(28, MOVE_BRICK_BREAK), LEVEL_UP_MOVE(31, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(34, MOVE_CLOSE_COMBAT), - LEVEL_UP_MOVE(37, MOVE_FEINT), - LEVEL_UP_MOVE(43, MOVE_REVERSAL), - LEVEL_UP_MOVE(46, MOVE_MEGAHORN), + LEVEL_UP_MOVE(34, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_MEGAHORN), + LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(46, MOVE_REVERSAL), LEVEL_UP_END }; #endif //P_FAMILY_HERACROSS @@ -6173,18 +6219,20 @@ static const struct LevelUpMove sUrsalunaBloodmoonLevelUpLearnset[] = { static const struct LevelUpMove sSlugmaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_YAWN), LEVEL_UP_MOVE( 1, MOVE_SMOG), - LEVEL_UP_MOVE( 5, MOVE_EMBER), - LEVEL_UP_MOVE(10, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(14, MOVE_HARDEN), - LEVEL_UP_MOVE(19, MOVE_RECOVER), - LEVEL_UP_MOVE(23, MOVE_FLAME_BURST), - LEVEL_UP_MOVE(28, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(32, MOVE_AMNESIA), - LEVEL_UP_MOVE(37, MOVE_LAVA_PLUME), - LEVEL_UP_MOVE(41, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(46, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(50, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(55, MOVE_EARTH_POWER), + LEVEL_UP_MOVE( 6, MOVE_EMBER), + LEVEL_UP_MOVE( 8, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(13, MOVE_HARDEN), + LEVEL_UP_MOVE(15, MOVE_INCINERATE), + LEVEL_UP_MOVE(20, MOVE_CLEAR_SMOG), + LEVEL_UP_MOVE(22, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(27, MOVE_FLAME_BURST), + LEVEL_UP_MOVE(29, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(34, MOVE_LAVA_PLUME), + LEVEL_UP_MOVE(36, MOVE_AMNESIA), + LEVEL_UP_MOVE(41, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(43, MOVE_RECOVER), + LEVEL_UP_MOVE(48, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(50, MOVE_EARTH_POWER), LEVEL_UP_END }; @@ -6194,19 +6242,21 @@ static const struct LevelUpMove sMagcargoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SMOG), LEVEL_UP_MOVE( 1, MOVE_EMBER), LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), - LEVEL_UP_MOVE( 5, MOVE_EMBER), - LEVEL_UP_MOVE(10, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(14, MOVE_HARDEN), - LEVEL_UP_MOVE(19, MOVE_RECOVER), - LEVEL_UP_MOVE(23, MOVE_FLAME_BURST), - LEVEL_UP_MOVE(28, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(32, MOVE_AMNESIA), - LEVEL_UP_MOVE(37, MOVE_LAVA_PLUME), + LEVEL_UP_MOVE( 6, MOVE_EMBER), + LEVEL_UP_MOVE( 8, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(13, MOVE_HARDEN), + LEVEL_UP_MOVE(15, MOVE_INCINERATE), + LEVEL_UP_MOVE(20, MOVE_CLEAR_SMOG), + LEVEL_UP_MOVE(22, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(27, MOVE_FLAME_BURST), + LEVEL_UP_MOVE(29, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(34, MOVE_LAVA_PLUME), + LEVEL_UP_MOVE(36, MOVE_AMNESIA), LEVEL_UP_MOVE(38, MOVE_SHELL_SMASH), - LEVEL_UP_MOVE(44, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(52, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(59, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(67, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(43, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(47, MOVE_RECOVER), + LEVEL_UP_MOVE(54, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(58, MOVE_EARTH_POWER), LEVEL_UP_END }; #endif //P_FAMILY_SLUGMA @@ -6284,14 +6334,15 @@ static const struct LevelUpMove sMamoswineLevelUpLearnset[] = { #if P_FAMILY_CORSOLA static const struct LevelUpMove sCorsolaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 4, MOVE_HARDEN), - LEVEL_UP_MOVE( 8, MOVE_BUBBLE), - LEVEL_UP_MOVE(10, MOVE_RECOVER), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 4, MOVE_BUBBLE), + LEVEL_UP_MOVE( 8, MOVE_RECOVER), + LEVEL_UP_MOVE(10, MOVE_BUBBLE_BEAM), LEVEL_UP_MOVE(13, MOVE_REFRESH), - LEVEL_UP_MOVE(17, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(20, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(17, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(20, MOVE_SPIKE_CANNON), LEVEL_UP_MOVE(23, MOVE_LUCKY_CHANT), - LEVEL_UP_MOVE(27, MOVE_SPIKE_CANNON), + LEVEL_UP_MOVE(27, MOVE_BRINE), LEVEL_UP_MOVE(29, MOVE_IRON_DEFENSE), LEVEL_UP_MOVE(31, MOVE_ROCK_BLAST), LEVEL_UP_MOVE(35, MOVE_ENDURE), @@ -6442,18 +6493,19 @@ static const struct LevelUpMove sSkarmoryLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 6, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 9, MOVE_SWIFT), - LEVEL_UP_MOVE(12, MOVE_AGILITY), + LEVEL_UP_MOVE( 9, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(12, MOVE_AIR_CUTTER), LEVEL_UP_MOVE(17, MOVE_FURY_ATTACK), LEVEL_UP_MOVE(20, MOVE_FEINT), - LEVEL_UP_MOVE(23, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(23, MOVE_SWIFT), LEVEL_UP_MOVE(28, MOVE_SPIKES), - LEVEL_UP_MOVE(31, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(31, MOVE_AGILITY), LEVEL_UP_MOVE(34, MOVE_STEEL_WING), - LEVEL_UP_MOVE(39, MOVE_AUTOTOMIZE), - LEVEL_UP_MOVE(42, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(45, MOVE_SLASH), - LEVEL_UP_MOVE(50, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(39, MOVE_SLASH), + LEVEL_UP_MOVE(42, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(45, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(50, MOVE_AUTOTOMIZE), + LEVEL_UP_MOVE(53, MOVE_NIGHT_SLASH), LEVEL_UP_END }; #endif //P_FAMILY_SKARMORY @@ -6512,11 +6564,11 @@ static const struct LevelUpMove sPhanpyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), LEVEL_UP_MOVE( 6, MOVE_FLAIL), - LEVEL_UP_MOVE(10, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(15, MOVE_ROLLOUT), - LEVEL_UP_MOVE(19, MOVE_NATURAL_GIFT), + LEVEL_UP_MOVE(10, MOVE_ROLLOUT), + LEVEL_UP_MOVE(15, MOVE_NATURAL_GIFT), + LEVEL_UP_MOVE(19, MOVE_ENDURE), LEVEL_UP_MOVE(24, MOVE_SLAM), - LEVEL_UP_MOVE(28, MOVE_ENDURE), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), LEVEL_UP_MOVE(33, MOVE_CHARM), LEVEL_UP_MOVE(37, MOVE_LAST_RESORT), LEVEL_UP_MOVE(42, MOVE_DOUBLE_EDGE), @@ -6531,15 +6583,15 @@ static const struct LevelUpMove sDonphanLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), LEVEL_UP_MOVE( 1, MOVE_BULLDOZE), LEVEL_UP_MOVE( 6, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE(10, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(15, MOVE_ROLLOUT), - LEVEL_UP_MOVE(19, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(10, MOVE_ROLLOUT), + LEVEL_UP_MOVE(15, MOVE_ASSURANCE), + LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), LEVEL_UP_MOVE(24, MOVE_SLAM), LEVEL_UP_MOVE(25, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(31, MOVE_ASSURANCE), - LEVEL_UP_MOVE(39, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(46, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(54, MOVE_GIGA_IMPACT), + LEVEL_UP_MOVE(30, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(37, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(43, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(50, MOVE_GIGA_IMPACT), LEVEL_UP_END }; #endif //P_FAMILY_PHANPY @@ -6816,16 +6868,18 @@ static const struct LevelUpMove sCelebiLevelUpLearnset[] = { static const struct LevelUpMove sTreeckoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 6, MOVE_ABSORB), - LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(16, MOVE_PURSUIT), - LEVEL_UP_MOVE(21, MOVE_SCREECH), - LEVEL_UP_MOVE(26, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(31, MOVE_AGILITY), - LEVEL_UP_MOVE(36, MOVE_SLAM), - LEVEL_UP_MOVE(41, MOVE_DETECT), - LEVEL_UP_MOVE(46, MOVE_GIGA_DRAIN), - LEVEL_UP_MOVE(50, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(17, MOVE_PURSUIT), + LEVEL_UP_MOVE(21, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(25, MOVE_AGILITY), + LEVEL_UP_MOVE(29, MOVE_SLAM), + LEVEL_UP_MOVE(33, MOVE_DETECT), + LEVEL_UP_MOVE(37, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(41, MOVE_QUICK_GUARD), + LEVEL_UP_MOVE(45, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(49, MOVE_SCREECH), LEVEL_UP_END }; @@ -6834,17 +6888,20 @@ static const struct LevelUpMove sGrovyleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_ABSORB), LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_ABSORB), - LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_MEGA_DRAIN), LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(17, MOVE_PURSUIT), - LEVEL_UP_MOVE(23, MOVE_SCREECH), - LEVEL_UP_MOVE(29, MOVE_LEAF_BLADE), - LEVEL_UP_MOVE(35, MOVE_AGILITY), - LEVEL_UP_MOVE(41, MOVE_SLAM), - LEVEL_UP_MOVE(47, MOVE_DETECT), - LEVEL_UP_MOVE(53, MOVE_FALSE_SWIPE), - LEVEL_UP_MOVE(59, MOVE_LEAF_STORM), + LEVEL_UP_MOVE(18, MOVE_PURSUIT), + LEVEL_UP_MOVE(23, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(28, MOVE_AGILITY), + LEVEL_UP_MOVE(33, MOVE_SLAM), + LEVEL_UP_MOVE(38, MOVE_DETECT), + LEVEL_UP_MOVE(43, MOVE_X_SCISSOR), + LEVEL_UP_MOVE(48, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(53, MOVE_QUICK_GUARD), + LEVEL_UP_MOVE(58, MOVE_LEAF_STORM), + LEVEL_UP_MOVE(63, MOVE_SCREECH), LEVEL_UP_END }; @@ -6855,17 +6912,21 @@ static const struct LevelUpMove sSceptileLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_ABSORB), LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_ABSORB), - LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(16, MOVE_X_SCISSOR), - LEVEL_UP_MOVE(17, MOVE_PURSUIT), - LEVEL_UP_MOVE(23, MOVE_SCREECH), - LEVEL_UP_MOVE(29, MOVE_LEAF_BLADE), - LEVEL_UP_MOVE(35, MOVE_AGILITY), - LEVEL_UP_MOVE(43, MOVE_SLAM), - LEVEL_UP_MOVE(51, MOVE_DETECT), - LEVEL_UP_MOVE(59, MOVE_FALSE_SWIPE), - LEVEL_UP_MOVE(67, MOVE_LEAF_STORM), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(18, MOVE_PURSUIT), + LEVEL_UP_MOVE(23, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(28, MOVE_AGILITY), + LEVEL_UP_MOVE(33, MOVE_SLAM), + LEVEL_UP_MOVE(36, MOVE_DUAL_CHOP), + LEVEL_UP_MOVE(39, MOVE_DETECT), + LEVEL_UP_MOVE(45, MOVE_X_SCISSOR), + LEVEL_UP_MOVE(51, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(57, MOVE_QUICK_GUARD), + LEVEL_UP_MOVE(63, MOVE_LEAF_STORM), + LEVEL_UP_MOVE(69, MOVE_SCREECH), LEVEL_UP_END }; #endif //P_FAMILY_TREECKO @@ -6874,34 +6935,36 @@ static const struct LevelUpMove sSceptileLevelUpLearnset[] = { static const struct LevelUpMove sTorchicLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(10, MOVE_EMBER), - LEVEL_UP_MOVE(16, MOVE_PECK), - LEVEL_UP_MOVE(19, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN), - LEVEL_UP_MOVE(28, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(34, MOVE_SLASH), - LEVEL_UP_MOVE(37, MOVE_MIRROR_MOVE), - LEVEL_UP_MOVE(43, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 5, MOVE_EMBER), + LEVEL_UP_MOVE(10, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(14, MOVE_PECK), + LEVEL_UP_MOVE(19, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(28, MOVE_FLAME_BURST), + LEVEL_UP_MOVE(32, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(41, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(46, MOVE_FLAMETHROWER), LEVEL_UP_END }; static const struct LevelUpMove sCombuskenLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(13, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_EMBER), + LEVEL_UP_MOVE(10, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(14, MOVE_PECK), LEVEL_UP_MOVE(16, MOVE_DOUBLE_KICK), - LEVEL_UP_MOVE(17, MOVE_PECK), - LEVEL_UP_MOVE(21, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(28, MOVE_BULK_UP), - LEVEL_UP_MOVE(32, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(39, MOVE_SLASH), - LEVEL_UP_MOVE(43, MOVE_MIRROR_MOVE), - LEVEL_UP_MOVE(50, MOVE_SKY_UPPERCUT), - LEVEL_UP_MOVE(54, MOVE_FLARE_BLITZ), + LEVEL_UP_MOVE(20, MOVE_FLAME_CHARGE), + LEVEL_UP_MOVE(25, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(31, MOVE_BULK_UP), + LEVEL_UP_MOVE(36, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(42, MOVE_SLASH), + LEVEL_UP_MOVE(47, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(53, MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE(58, MOVE_FLARE_BLITZ), LEVEL_UP_END }; @@ -6911,78 +6974,82 @@ static const struct LevelUpMove sBlazikenLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HIGH_JUMP_KICK), LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(13, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_EMBER), + LEVEL_UP_MOVE(10, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(14, MOVE_PECK), LEVEL_UP_MOVE(16, MOVE_DOUBLE_KICK), - LEVEL_UP_MOVE(17, MOVE_PECK), - LEVEL_UP_MOVE(21, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(28, MOVE_BULK_UP), - LEVEL_UP_MOVE(32, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_FLAME_CHARGE), + LEVEL_UP_MOVE(25, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(31, MOVE_BULK_UP), LEVEL_UP_MOVE(36, MOVE_BLAZE_KICK), - LEVEL_UP_MOVE(42, MOVE_SLASH), - LEVEL_UP_MOVE(49, MOVE_BRAVE_BIRD), - LEVEL_UP_MOVE(59, MOVE_SKY_UPPERCUT), - LEVEL_UP_MOVE(66, MOVE_FLARE_BLITZ), + LEVEL_UP_MOVE(37, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(44, MOVE_SLASH), + LEVEL_UP_MOVE(50, MOVE_BRAVE_BIRD), + LEVEL_UP_MOVE(57, MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE(63, MOVE_FLARE_BLITZ), LEVEL_UP_END }; #endif //P_FAMILY_TORCHIC #if P_FAMILY_MUDKIP static const struct LevelUpMove sMudkipLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(10, MOVE_WATER_GUN), - LEVEL_UP_MOVE(15, MOVE_BIDE), - LEVEL_UP_MOVE(19, MOVE_FORESIGHT), - LEVEL_UP_MOVE(24, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 9, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(12, MOVE_FORESIGHT), + LEVEL_UP_MOVE(17, MOVE_BIDE), + LEVEL_UP_MOVE(20, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(25, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(28, MOVE_PROTECT), LEVEL_UP_MOVE(33, MOVE_WHIRLPOOL), - LEVEL_UP_MOVE(37, MOVE_PROTECT), - LEVEL_UP_MOVE(42, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(46, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(36, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(44, MOVE_ENDEAVOR), LEVEL_UP_END }; static const struct LevelUpMove sMarshtompLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(10, MOVE_WATER_GUN), - LEVEL_UP_MOVE(15, MOVE_BIDE), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 4, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 9, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(12, MOVE_FORESIGHT), LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), - LEVEL_UP_MOVE(20, MOVE_FORESIGHT), - LEVEL_UP_MOVE(25, MOVE_MUD_BOMB), - LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(37, MOVE_MUDDY_WATER), - LEVEL_UP_MOVE(42, MOVE_PROTECT), - LEVEL_UP_MOVE(46, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(53, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(18, MOVE_BIDE), + LEVEL_UP_MOVE(22, MOVE_MUD_BOMB), + LEVEL_UP_MOVE(28, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(32, MOVE_PROTECT), + LEVEL_UP_MOVE(38, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(48, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(52, MOVE_ENDEAVOR), LEVEL_UP_END }; static const struct LevelUpMove sSwampertLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_HAMMER_ARM), - LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(10, MOVE_WATER_GUN), - LEVEL_UP_MOVE(15, MOVE_BIDE), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 4, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 9, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(12, MOVE_FORESIGHT), LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), - LEVEL_UP_MOVE(20, MOVE_FORESIGHT), - LEVEL_UP_MOVE(25, MOVE_MUD_BOMB), - LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(18, MOVE_BIDE), + LEVEL_UP_MOVE(22, MOVE_MUD_BOMB), + LEVEL_UP_MOVE(28, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(32, MOVE_PROTECT), LEVEL_UP_MOVE(39, MOVE_MUDDY_WATER), - LEVEL_UP_MOVE(46, MOVE_PROTECT), - LEVEL_UP_MOVE(52, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(61, MOVE_ENDEAVOR), - LEVEL_UP_MOVE(69, MOVE_HAMMER_ARM), + LEVEL_UP_MOVE(44, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(51, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(56, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(63, MOVE_HAMMER_ARM), LEVEL_UP_END }; #endif //P_FAMILY_MUDKIP @@ -6990,42 +7057,43 @@ static const struct LevelUpMove sSwampertLevelUpLearnset[] = { #if P_FAMILY_POOCHYENA static const struct LevelUpMove sPoochyenaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_HOWL), - LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(13, MOVE_BITE), - LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(21, MOVE_ROAR), - LEVEL_UP_MOVE(25, MOVE_SWAGGER), - LEVEL_UP_MOVE(29, MOVE_ASSURANCE), - LEVEL_UP_MOVE(33, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(37, MOVE_TAUNT), - LEVEL_UP_MOVE(41, MOVE_EMBARGO), - LEVEL_UP_MOVE(45, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(49, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(53, MOVE_CRUNCH), + LEVEL_UP_MOVE( 4, MOVE_HOWL), + LEVEL_UP_MOVE( 7, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(16, MOVE_ROAR), + LEVEL_UP_MOVE(19, MOVE_SWAGGER), + LEVEL_UP_MOVE(22, MOVE_ASSURANCE), + LEVEL_UP_MOVE(25, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(28, MOVE_EMBARGO), + LEVEL_UP_MOVE(31, MOVE_TAUNT), + LEVEL_UP_MOVE(34, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_CRUNCH), + LEVEL_UP_MOVE(40, MOVE_SUCKER_PUNCH), LEVEL_UP_END }; static const struct LevelUpMove sMightyenaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), LEVEL_UP_MOVE( 1, MOVE_CRUNCH), + LEVEL_UP_MOVE( 1, MOVE_THIEF), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_HOWL), LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_HOWL), - LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(13, MOVE_BITE), - LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(22, MOVE_ROAR), - LEVEL_UP_MOVE(27, MOVE_SWAGGER), - LEVEL_UP_MOVE(32, MOVE_ASSURANCE), - LEVEL_UP_MOVE(37, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(42, MOVE_TAUNT), - LEVEL_UP_MOVE(47, MOVE_EMBARGO), - LEVEL_UP_MOVE(52, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(57, MOVE_THIEF), - LEVEL_UP_MOVE(62, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(65, MOVE_CRUNCH), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 4, MOVE_HOWL), + LEVEL_UP_MOVE( 7, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(16, MOVE_ROAR), + LEVEL_UP_MOVE(18, MOVE_SNARL), + LEVEL_UP_MOVE(20, MOVE_SWAGGER), + LEVEL_UP_MOVE(24, MOVE_ASSURANCE), + LEVEL_UP_MOVE(28, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(32, MOVE_EMBARGO), + LEVEL_UP_MOVE(36, MOVE_TAUNT), + LEVEL_UP_MOVE(40, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(44, MOVE_CRUNCH), + LEVEL_UP_MOVE(48, MOVE_SUCKER_PUNCH), LEVEL_UP_END }; #endif //P_FAMILY_POOCHYENA @@ -7035,41 +7103,43 @@ static const struct LevelUpMove sZigzagoonLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 9, MOVE_HEADBUTT), - LEVEL_UP_MOVE(11, MOVE_BABY_DOLL_EYES), - LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(21, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(25, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(29, MOVE_COVET), - LEVEL_UP_MOVE(33, MOVE_BESTOW), - LEVEL_UP_MOVE(37, MOVE_FLAIL), - LEVEL_UP_MOVE(41, MOVE_REST), - LEVEL_UP_MOVE(45, MOVE_BELLY_DRUM), - LEVEL_UP_MOVE(49, MOVE_FLING), + LEVEL_UP_MOVE( 7, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(11, MOVE_HEADBUTT), + LEVEL_UP_MOVE(12, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE(13, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(17, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(19, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(23, MOVE_COVET), + LEVEL_UP_MOVE(25, MOVE_BESTOW), + LEVEL_UP_MOVE(29, MOVE_FLAIL), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(35, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(41, MOVE_FLING), LEVEL_UP_END }; static const struct LevelUpMove sLinooneLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), LEVEL_UP_MOVE( 1, MOVE_PLAY_ROUGH), LEVEL_UP_MOVE( 1, MOVE_ROTOTILLER), LEVEL_UP_MOVE( 1, MOVE_SWITCHEROO), LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 9, MOVE_HEADBUTT), - LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(23, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(29, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(35, MOVE_COVET), - LEVEL_UP_MOVE(41, MOVE_BESTOW), - LEVEL_UP_MOVE(47, MOVE_SLASH), - LEVEL_UP_MOVE(53, MOVE_REST), - LEVEL_UP_MOVE(59, MOVE_BELLY_DRUM), - LEVEL_UP_MOVE(65, MOVE_FLING), + LEVEL_UP_MOVE( 7, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(11, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(17, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(19, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(24, MOVE_COVET), + LEVEL_UP_MOVE(27, MOVE_BESTOW), + LEVEL_UP_MOVE(32, MOVE_SLASH), + LEVEL_UP_MOVE(35, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(40, MOVE_REST), + LEVEL_UP_MOVE(43, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(48, MOVE_FLING), LEVEL_UP_END }; @@ -7159,18 +7229,20 @@ static const struct LevelUpMove sSilcoonLevelUpLearnset[] = { }; static const struct LevelUpMove sBeautiflyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE(10, MOVE_ABSORB), - LEVEL_UP_MOVE(13, MOVE_GUST), - LEVEL_UP_MOVE(17, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(20, MOVE_MORNING_SUN), - LEVEL_UP_MOVE(24, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(31, MOVE_ATTRACT), - LEVEL_UP_MOVE(34, MOVE_SILVER_WIND), - LEVEL_UP_MOVE(38, MOVE_GIGA_DRAIN), - LEVEL_UP_MOVE(41, MOVE_BUG_BUZZ), - LEVEL_UP_MOVE(45, MOVE_QUIVER_DANCE), + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE(10, MOVE_GUST), + LEVEL_UP_MOVE(12, MOVE_ABSORB), + LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_MORNING_SUN), + LEVEL_UP_MOVE(20, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(22, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(25, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(27, MOVE_ATTRACT), + LEVEL_UP_MOVE(30, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(32, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(35, MOVE_BUG_BUZZ), + LEVEL_UP_MOVE(37, MOVE_RAGE), + LEVEL_UP_MOVE(40, MOVE_QUIVER_DANCE), LEVEL_UP_END }; @@ -7181,18 +7253,20 @@ static const struct LevelUpMove sCascoonLevelUpLearnset[] = { }; static const struct LevelUpMove sDustoxLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE(10, MOVE_CONFUSION), - LEVEL_UP_MOVE(13, MOVE_GUST), - LEVEL_UP_MOVE(17, MOVE_PROTECT), - LEVEL_UP_MOVE(20, MOVE_MOONLIGHT), - LEVEL_UP_MOVE(24, MOVE_PSYBEAM), - LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(31, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(34, MOVE_SILVER_WIND), - LEVEL_UP_MOVE(38, MOVE_TOXIC), - LEVEL_UP_MOVE(41, MOVE_BUG_BUZZ), - LEVEL_UP_MOVE(45, MOVE_QUIVER_DANCE), + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE(10, MOVE_GUST), + LEVEL_UP_MOVE(12, MOVE_CONFUSION), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(17, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(20, MOVE_VENOSHOCK), + LEVEL_UP_MOVE(22, MOVE_PSYBEAM), + LEVEL_UP_MOVE(25, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(27, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(30, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(32, MOVE_TOXIC), + LEVEL_UP_MOVE(35, MOVE_BUG_BUZZ), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(40, MOVE_QUIVER_DANCE), LEVEL_UP_END }; #endif //P_FAMILY_WURMPLE @@ -7201,30 +7275,34 @@ static const struct LevelUpMove sDustoxLevelUpLearnset[] = { static const struct LevelUpMove sLotadLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_MOVE( 3, MOVE_GROWL), - LEVEL_UP_MOVE( 5, MOVE_ABSORB), - LEVEL_UP_MOVE( 7, MOVE_NATURE_POWER), - LEVEL_UP_MOVE(11, MOVE_MIST), - LEVEL_UP_MOVE(15, MOVE_NATURAL_GIFT), - LEVEL_UP_MOVE(19, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(31, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(37, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(45, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE( 6, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_BUBBLE), + LEVEL_UP_MOVE(12, MOVE_NATURAL_GIFT), + LEVEL_UP_MOVE(15, MOVE_MIST), + LEVEL_UP_MOVE(18, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(21, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(24, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(27, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(30, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(33, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(36, MOVE_ENERGY_BALL), LEVEL_UP_END }; static const struct LevelUpMove sLombreLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_MOVE( 3, MOVE_GROWL), - LEVEL_UP_MOVE( 5, MOVE_ABSORB), - LEVEL_UP_MOVE( 7, MOVE_NATURE_POWER), - LEVEL_UP_MOVE(11, MOVE_FAKE_OUT), - LEVEL_UP_MOVE(15, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(19, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(31, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(37, MOVE_UPROAR), - LEVEL_UP_MOVE(45, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 6, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_BUBBLE), + LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(16, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(20, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(24, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(28, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(32, MOVE_UPROAR), + LEVEL_UP_MOVE(36, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(40, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(44, MOVE_HYDRO_PUMP), LEVEL_UP_END }; @@ -7241,26 +7319,27 @@ static const struct LevelUpMove sLudicoloLevelUpLearnset[] = { static const struct LevelUpMove sSeedotLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BIDE), LEVEL_UP_MOVE( 3, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_GROWTH), - LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE( 9, MOVE_GROWTH), + LEVEL_UP_MOVE(15, MOVE_NATURE_POWER), LEVEL_UP_MOVE(21, MOVE_SYNTHESIS), - LEVEL_UP_MOVE(31, MOVE_SUNNY_DAY), - LEVEL_UP_MOVE(43, MOVE_EXPLOSION), + LEVEL_UP_MOVE(27, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(33, MOVE_EXPLOSION), LEVEL_UP_END }; static const struct LevelUpMove sNuzleafLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), LEVEL_UP_MOVE( 3, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_GROWTH), - LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), - LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), - LEVEL_UP_MOVE(25, MOVE_TORMENT), - LEVEL_UP_MOVE(31, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(37, MOVE_RAZOR_WIND), - LEVEL_UP_MOVE(43, MOVE_SWAGGER), - LEVEL_UP_MOVE(49, MOVE_EXTRASENSORY), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE( 9, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(12, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(14, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(16, MOVE_TORMENT), + LEVEL_UP_MOVE(20, MOVE_RAZOR_WIND), + LEVEL_UP_MOVE(24, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(28, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(32, MOVE_SWAGGER), + LEVEL_UP_MOVE(36, MOVE_EXTRASENSORY), LEVEL_UP_END }; @@ -7269,8 +7348,9 @@ static const struct LevelUpMove sShiftryLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), LEVEL_UP_MOVE( 1, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE(19, MOVE_LEAF_TORNADO), - LEVEL_UP_MOVE(49, MOVE_LEAF_STORM), + LEVEL_UP_MOVE(20, MOVE_LEAF_TORNADO), + LEVEL_UP_MOVE(32, MOVE_HURRICANE), + LEVEL_UP_MOVE(44, MOVE_LEAF_STORM), LEVEL_UP_END }; #endif //P_FAMILY_SEEDOT @@ -7279,32 +7359,37 @@ static const struct LevelUpMove sShiftryLevelUpLearnset[] = { static const struct LevelUpMove sTaillowLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 4, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 9, MOVE_QUICK_ATTACK), LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(26, MOVE_ENDEAVOR), - LEVEL_UP_MOVE(34, MOVE_AERIAL_ACE), - LEVEL_UP_MOVE(43, MOVE_AGILITY), - LEVEL_UP_MOVE(53, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(17, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(21, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(25, MOVE_QUICK_GUARD), + LEVEL_UP_MOVE(29, MOVE_AGILITY), + LEVEL_UP_MOVE(33, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(37, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(41, MOVE_BRAVE_BIRD), LEVEL_UP_END }; static const struct LevelUpMove sSwellowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BRAVE_BIRD), LEVEL_UP_MOVE( 1, MOVE_AIR_SLASH), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_PLUCK), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 4, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 9, MOVE_QUICK_ATTACK), LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(28, MOVE_ENDEAVOR), - LEVEL_UP_MOVE(38, MOVE_AERIAL_ACE), - LEVEL_UP_MOVE(49, MOVE_AGILITY), - LEVEL_UP_MOVE(61, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(17, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(21, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(27, MOVE_QUICK_GUARD), + LEVEL_UP_MOVE(33, MOVE_AGILITY), + LEVEL_UP_MOVE(39, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(45, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(51, MOVE_BRAVE_BIRD), LEVEL_UP_END }; #endif //P_FAMILY_TAILLOW @@ -7313,44 +7398,45 @@ static const struct LevelUpMove sSwellowLevelUpLearnset[] = { static const struct LevelUpMove sWingullLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 9, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(14, MOVE_MIST), - LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(22, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(26, MOVE_ROOST), - LEVEL_UP_MOVE(30, MOVE_PURSUIT), - LEVEL_UP_MOVE(33, MOVE_AIR_CUTTER), - LEVEL_UP_MOVE(38, MOVE_AGILITY), - LEVEL_UP_MOVE(42, MOVE_AERIAL_ACE), - LEVEL_UP_MOVE(46, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(49, MOVE_HURRICANE), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 8, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(12, MOVE_MIST), + LEVEL_UP_MOVE(15, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(19, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(22, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(26, MOVE_PURSUIT), + LEVEL_UP_MOVE(29, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(33, MOVE_ROOST), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(40, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(43, MOVE_HURRICANE), LEVEL_UP_END }; static const struct LevelUpMove sPelipperLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_HURRICANE), LEVEL_UP_MOVE( 1, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE( 1, MOVE_SOAK), LEVEL_UP_MOVE( 1, MOVE_TAILWIND), + LEVEL_UP_MOVE( 1, MOVE_SOAK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 9, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(14, MOVE_MIST), - LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(22, MOVE_PAYBACK), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 8, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(12, MOVE_MIST), + LEVEL_UP_MOVE(15, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(19, MOVE_PAYBACK), + LEVEL_UP_MOVE(22, MOVE_ROOST), LEVEL_UP_MOVE(25, MOVE_PROTECT), - LEVEL_UP_MOVE(28, MOVE_ROOST), - LEVEL_UP_MOVE(34, MOVE_BRINE), - LEVEL_UP_MOVE(39, MOVE_SPIT_UP), - LEVEL_UP_MOVE(39, MOVE_STOCKPILE), - LEVEL_UP_MOVE(39, MOVE_SWALLOW), - LEVEL_UP_MOVE(46, MOVE_FLING), - LEVEL_UP_MOVE(52, MOVE_TAILWIND), - LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(63, MOVE_HURRICANE), + LEVEL_UP_MOVE(28, MOVE_BRINE), + LEVEL_UP_MOVE(33, MOVE_STOCKPILE), + LEVEL_UP_MOVE(33, MOVE_SWALLOW), + LEVEL_UP_MOVE(33, MOVE_SPIT_UP), + LEVEL_UP_MOVE(39, MOVE_FLING), + LEVEL_UP_MOVE(44, MOVE_TAILWIND), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(55, MOVE_HURRICANE), LEVEL_UP_END }; #endif //P_FAMILY_WINGULL @@ -7358,96 +7444,104 @@ static const struct LevelUpMove sPelipperLevelUpLearnset[] = { #if P_FAMILY_RALTS static const struct LevelUpMove sRaltsLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 6, MOVE_CONFUSION), - LEVEL_UP_MOVE(10, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(12, MOVE_TELEPORT), - LEVEL_UP_MOVE(17, MOVE_LUCKY_CHANT), - LEVEL_UP_MOVE(21, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE(23, MOVE_HEAL_PULSE), - LEVEL_UP_MOVE(28, MOVE_CALM_MIND), - LEVEL_UP_MOVE(32, MOVE_PSYCHIC), - LEVEL_UP_MOVE(34, MOVE_IMPRISON), - LEVEL_UP_MOVE(39, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(43, MOVE_CHARM), - LEVEL_UP_MOVE(45, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(49, MOVE_DREAM_EATER), - LEVEL_UP_MOVE(54, MOVE_STORED_POWER), + LEVEL_UP_MOVE( 4, MOVE_CONFUSION), + LEVEL_UP_MOVE( 6, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 9, MOVE_TELEPORT), + LEVEL_UP_MOVE(11, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(14, MOVE_LUCKY_CHANT), + LEVEL_UP_MOVE(17, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(19, MOVE_HEAL_PULSE), + LEVEL_UP_MOVE(22, MOVE_DRAINING_KISS), + LEVEL_UP_MOVE(24, MOVE_CALM_MIND), + LEVEL_UP_MOVE(27, MOVE_PSYCHIC), + LEVEL_UP_MOVE(29, MOVE_IMPRISON), + LEVEL_UP_MOVE(32, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(34, MOVE_CHARM), + LEVEL_UP_MOVE(37, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(39, MOVE_DREAM_EATER), + LEVEL_UP_MOVE(42, MOVE_STORED_POWER), LEVEL_UP_END }; static const struct LevelUpMove sKirliaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_CONFUSION), LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_TELEPORT), - LEVEL_UP_MOVE( 6, MOVE_CONFUSION), - LEVEL_UP_MOVE(10, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(12, MOVE_TELEPORT), - LEVEL_UP_MOVE(17, MOVE_LUCKY_CHANT), - LEVEL_UP_MOVE(22, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE(25, MOVE_HEAL_PULSE), - LEVEL_UP_MOVE(31, MOVE_CALM_MIND), - LEVEL_UP_MOVE(36, MOVE_PSYCHIC), - LEVEL_UP_MOVE(39, MOVE_IMPRISON), - LEVEL_UP_MOVE(45, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(50, MOVE_CHARM), - LEVEL_UP_MOVE(53, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(59, MOVE_DREAM_EATER), - LEVEL_UP_MOVE(64, MOVE_STORED_POWER), + LEVEL_UP_MOVE( 4, MOVE_CONFUSION), + LEVEL_UP_MOVE( 6, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 9, MOVE_TELEPORT), + LEVEL_UP_MOVE(11, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(14, MOVE_LUCKY_CHANT), + LEVEL_UP_MOVE(17, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(19, MOVE_HEAL_PULSE), + LEVEL_UP_MOVE(23, MOVE_DRAINING_KISS), + LEVEL_UP_MOVE(26, MOVE_CALM_MIND), + LEVEL_UP_MOVE(30, MOVE_PSYCHIC), + LEVEL_UP_MOVE(33, MOVE_IMPRISON), + LEVEL_UP_MOVE(37, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(40, MOVE_CHARM), + LEVEL_UP_MOVE(44, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(47, MOVE_DREAM_EATER), + LEVEL_UP_MOVE(51, MOVE_STORED_POWER), LEVEL_UP_END }; static const struct LevelUpMove sGardevoirLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_HEALING_WISH), - LEVEL_UP_MOVE( 1, MOVE_MISTY_TERRAIN), LEVEL_UP_MOVE( 1, MOVE_MOONBLAST), LEVEL_UP_MOVE( 1, MOVE_STORED_POWER), + LEVEL_UP_MOVE( 1, MOVE_MISTY_TERRAIN), + LEVEL_UP_MOVE( 1, MOVE_HEALING_WISH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), LEVEL_UP_MOVE( 1, MOVE_TELEPORT), - LEVEL_UP_MOVE( 6, MOVE_CONFUSION), - LEVEL_UP_MOVE(10, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(12, MOVE_TELEPORT), - LEVEL_UP_MOVE(17, MOVE_WISH), - LEVEL_UP_MOVE(22, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE(25, MOVE_HEAL_PULSE), - LEVEL_UP_MOVE(33, MOVE_CALM_MIND), - LEVEL_UP_MOVE(40, MOVE_PSYCHIC), - LEVEL_UP_MOVE(45, MOVE_IMPRISON), - LEVEL_UP_MOVE(53, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(60, MOVE_CAPTIVATE), - LEVEL_UP_MOVE(65, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(73, MOVE_DREAM_EATER), - LEVEL_UP_MOVE(80, MOVE_STORED_POWER), - LEVEL_UP_MOVE(85, MOVE_MOONBLAST), + LEVEL_UP_MOVE( 4, MOVE_CONFUSION), + LEVEL_UP_MOVE( 6, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 9, MOVE_TELEPORT), + LEVEL_UP_MOVE(11, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(14, MOVE_WISH), + LEVEL_UP_MOVE(17, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(19, MOVE_HEAL_PULSE), + LEVEL_UP_MOVE(23, MOVE_DRAINING_KISS), + LEVEL_UP_MOVE(26, MOVE_CALM_MIND), + LEVEL_UP_MOVE(31, MOVE_PSYCHIC), + LEVEL_UP_MOVE(35, MOVE_IMPRISON), + LEVEL_UP_MOVE(40, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(44, MOVE_CAPTIVATE), + LEVEL_UP_MOVE(49, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(53, MOVE_DREAM_EATER), + LEVEL_UP_MOVE(58, MOVE_STORED_POWER), + LEVEL_UP_MOVE(62, MOVE_MOONBLAST), LEVEL_UP_END }; #if P_GEN_4_CROSS_EVOS static const struct LevelUpMove sGalladeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_STORED_POWER), LEVEL_UP_MOVE( 1, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE( 1, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_CONFUSION), LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 1, MOVE_LEAF_BLADE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE( 1, MOVE_STORED_POWER), LEVEL_UP_MOVE( 1, MOVE_TELEPORT), - LEVEL_UP_MOVE( 6, MOVE_CONFUSION), - LEVEL_UP_MOVE(10, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(12, MOVE_TELEPORT), - LEVEL_UP_MOVE(17, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(22, MOVE_SLASH), - LEVEL_UP_MOVE(25, MOVE_HEAL_PULSE), - LEVEL_UP_MOVE(31, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(36, MOVE_PSYCHO_CUT), - LEVEL_UP_MOVE(39, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(45, MOVE_FEINT), - LEVEL_UP_MOVE(50, MOVE_FALSE_SWIPE), - LEVEL_UP_MOVE(53, MOVE_PROTECT), - LEVEL_UP_MOVE(59, MOVE_CLOSE_COMBAT), - LEVEL_UP_MOVE(64, MOVE_STORED_POWER), + LEVEL_UP_MOVE( 4, MOVE_CONFUSION), + LEVEL_UP_MOVE( 6, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 9, MOVE_TELEPORT), + LEVEL_UP_MOVE(11, MOVE_QUICK_GUARD), + LEVEL_UP_MOVE(14, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(17, MOVE_SLASH), + LEVEL_UP_MOVE(19, MOVE_HEAL_PULSE), + LEVEL_UP_MOVE(23, MOVE_WIDE_GUARD), + LEVEL_UP_MOVE(26, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(31, MOVE_PSYCHO_CUT), + LEVEL_UP_MOVE(35, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(40, MOVE_FEINT), + LEVEL_UP_MOVE(44, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(49, MOVE_PROTECT), + LEVEL_UP_MOVE(53, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(58, MOVE_STORED_POWER), LEVEL_UP_END }; #endif //P_GEN_4_CROSS_EVOS @@ -7456,38 +7550,40 @@ static const struct LevelUpMove sGalladeLevelUpLearnset[] = { #if P_FAMILY_SURSKIT static const struct LevelUpMove sSurskitLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(19, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(31, MOVE_AGILITY), - LEVEL_UP_MOVE(37, MOVE_HAZE), - LEVEL_UP_MOVE(37, MOVE_MIST), - LEVEL_UP_MOVE(43, MOVE_BATON_PASS), - LEVEL_UP_MOVE(46, MOVE_STICKY_WEB), + LEVEL_UP_MOVE( 6, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(14, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(17, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(22, MOVE_AGILITY), + LEVEL_UP_MOVE(25, MOVE_MIST), + LEVEL_UP_MOVE(25, MOVE_HAZE), + LEVEL_UP_MOVE(30, MOVE_AQUA_JET), + LEVEL_UP_MOVE(35, MOVE_BATON_PASS), + LEVEL_UP_MOVE(38, MOVE_STICKY_WEB), LEVEL_UP_END }; static const struct LevelUpMove sMasquerainLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 1, MOVE_BUG_BUZZ), - LEVEL_UP_MOVE( 1, MOVE_OMINOUS_WIND), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), LEVEL_UP_MOVE( 1, MOVE_QUIVER_DANCE), + LEVEL_UP_MOVE( 1, MOVE_BUG_BUZZ), + LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), + LEVEL_UP_MOVE( 1, MOVE_OMINOUS_WIND), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), - LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(19, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(22, MOVE_GUST), - LEVEL_UP_MOVE(26, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(33, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(40, MOVE_SILVER_WIND), - LEVEL_UP_MOVE(47, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(54, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(61, MOVE_BUG_BUZZ), - LEVEL_UP_MOVE(68, MOVE_QUIVER_DANCE), + LEVEL_UP_MOVE( 6, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(14, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(17, MOVE_GUST), + LEVEL_UP_MOVE(22, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(22, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(26, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(32, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(38, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(42, MOVE_BUG_BUZZ), + LEVEL_UP_MOVE(48, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(52, MOVE_QUIVER_DANCE), LEVEL_UP_END }; #endif //P_FAMILY_SURSKIT @@ -7495,37 +7591,38 @@ static const struct LevelUpMove sMasquerainLevelUpLearnset[] = { #if P_FAMILY_SHROOMISH static const struct LevelUpMove sShroomishLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 5, MOVE_TACKLE), - LEVEL_UP_MOVE( 9, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(17, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(21, MOVE_HEADBUTT), - LEVEL_UP_MOVE(25, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(29, MOVE_WORRY_SEED), - LEVEL_UP_MOVE(33, MOVE_GROWTH), - LEVEL_UP_MOVE(37, MOVE_GIGA_DRAIN), - LEVEL_UP_MOVE(41, MOVE_SEED_BOMB), - LEVEL_UP_MOVE(45, MOVE_SPORE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 8, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(12, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(15, MOVE_HEADBUTT), + LEVEL_UP_MOVE(19, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(22, MOVE_WORRY_SEED), + LEVEL_UP_MOVE(26, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(29, MOVE_GROWTH), + LEVEL_UP_MOVE(33, MOVE_TOXIC), + LEVEL_UP_MOVE(36, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(40, MOVE_SPORE), LEVEL_UP_END }; static const struct LevelUpMove sBreloomLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), - LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_TACKLE), - LEVEL_UP_MOVE( 9, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(17, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(21, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 5, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 8, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(12, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(15, MOVE_HEADBUTT), + LEVEL_UP_MOVE(19, MOVE_FEINT), + LEVEL_UP_MOVE(22, MOVE_COUNTER), LEVEL_UP_MOVE(23, MOVE_MACH_PUNCH), - LEVEL_UP_MOVE(25, MOVE_COUNTER), - LEVEL_UP_MOVE(29, MOVE_FORCE_PALM), - LEVEL_UP_MOVE(33, MOVE_SKY_UPPERCUT), - LEVEL_UP_MOVE(37, MOVE_MIND_READER), - LEVEL_UP_MOVE(41, MOVE_SEED_BOMB), - LEVEL_UP_MOVE(45, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_MOVE(28, MOVE_FORCE_PALM), + LEVEL_UP_MOVE(33, MOVE_MIND_READER), + LEVEL_UP_MOVE(39, MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE(44, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(50, MOVE_DYNAMIC_PUNCH), LEVEL_UP_END }; #endif //P_FAMILY_SHROOMISH @@ -7534,55 +7631,56 @@ static const struct LevelUpMove sBreloomLevelUpLearnset[] = { static const struct LevelUpMove sSlakothLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_YAWN), - LEVEL_UP_MOVE( 7, MOVE_ENCORE), - LEVEL_UP_MOVE(13, MOVE_SLACK_OFF), - LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(25, MOVE_AMNESIA), - LEVEL_UP_MOVE(31, MOVE_COVET), - LEVEL_UP_MOVE(37, MOVE_CHIP_AWAY), - LEVEL_UP_MOVE(43, MOVE_COUNTER), - LEVEL_UP_MOVE(49, MOVE_FLAIL), + LEVEL_UP_MOVE( 6, MOVE_ENCORE), + LEVEL_UP_MOVE( 9, MOVE_SLACK_OFF), + LEVEL_UP_MOVE(14, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(17, MOVE_AMNESIA), + LEVEL_UP_MOVE(22, MOVE_COVET), + LEVEL_UP_MOVE(25, MOVE_CHIP_AWAY), + LEVEL_UP_MOVE(30, MOVE_COUNTER), + LEVEL_UP_MOVE(33, MOVE_FLAIL), + LEVEL_UP_MOVE(38, MOVE_PLAY_ROUGH), LEVEL_UP_END }; static const struct LevelUpMove sVigorothLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ENCORE), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), LEVEL_UP_MOVE( 1, MOVE_REVERSAL), LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), LEVEL_UP_MOVE( 1, MOVE_UPROAR), - LEVEL_UP_MOVE( 7, MOVE_ENCORE), - LEVEL_UP_MOVE(13, MOVE_UPROAR), - LEVEL_UP_MOVE(19, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(25, MOVE_ENDURE), - LEVEL_UP_MOVE(31, MOVE_SLASH), - LEVEL_UP_MOVE(37, MOVE_COUNTER), - LEVEL_UP_MOVE(43, MOVE_CHIP_AWAY), - LEVEL_UP_MOVE(49, MOVE_FOCUS_PUNCH), - LEVEL_UP_MOVE(55, MOVE_REVERSAL), + LEVEL_UP_MOVE( 6, MOVE_ENCORE), + LEVEL_UP_MOVE( 9, MOVE_UPROAR), + LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_ENDURE), + LEVEL_UP_MOVE(23, MOVE_SLASH), + LEVEL_UP_MOVE(27, MOVE_CHIP_AWAY), + LEVEL_UP_MOVE(33, MOVE_COUNTER), + LEVEL_UP_MOVE(37, MOVE_FOCUS_PUNCH), + LEVEL_UP_MOVE(43, MOVE_REVERSAL), LEVEL_UP_END }; static const struct LevelUpMove sSlakingLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ENCORE), - LEVEL_UP_MOVE( 1, MOVE_FLING), LEVEL_UP_MOVE( 1, MOVE_HAMMER_ARM), LEVEL_UP_MOVE( 1, MOVE_PUNISHMENT), + LEVEL_UP_MOVE( 1, MOVE_FLING), LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_SLACK_OFF), LEVEL_UP_MOVE( 1, MOVE_YAWN), - LEVEL_UP_MOVE( 7, MOVE_ENCORE), - LEVEL_UP_MOVE(13, MOVE_SLACK_OFF), - LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(25, MOVE_AMNESIA), - LEVEL_UP_MOVE(31, MOVE_COVET), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 1, MOVE_SLACK_OFF), + LEVEL_UP_MOVE( 6, MOVE_ENCORE), + LEVEL_UP_MOVE( 9, MOVE_SLACK_OFF), + LEVEL_UP_MOVE(14, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(17, MOVE_AMNESIA), + LEVEL_UP_MOVE(23, MOVE_COVET), + LEVEL_UP_MOVE(27, MOVE_CHIP_AWAY), + LEVEL_UP_MOVE(33, MOVE_COUNTER), LEVEL_UP_MOVE(36, MOVE_SWAGGER), - LEVEL_UP_MOVE(37, MOVE_CHIP_AWAY), - LEVEL_UP_MOVE(43, MOVE_COUNTER), - LEVEL_UP_MOVE(49, MOVE_FLAIL), - LEVEL_UP_MOVE(55, MOVE_FLING), - LEVEL_UP_MOVE(61, MOVE_PUNISHMENT), - LEVEL_UP_MOVE(67, MOVE_HAMMER_ARM), + LEVEL_UP_MOVE(39, MOVE_FLAIL), + LEVEL_UP_MOVE(47, MOVE_FLING), + LEVEL_UP_MOVE(53, MOVE_PUNISHMENT), + LEVEL_UP_MOVE(61, MOVE_HAMMER_ARM), LEVEL_UP_END }; #endif //P_FAMILY_SLAKOTH @@ -7593,12 +7691,13 @@ static const struct LevelUpMove sNincadaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HARDEN), LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(19, MOVE_MIND_READER), - LEVEL_UP_MOVE(25, MOVE_FALSE_SWIPE), - LEVEL_UP_MOVE(31, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(38, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(45, MOVE_DIG), + LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(21, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(25, MOVE_MIND_READER), + LEVEL_UP_MOVE(29, MOVE_BIDE), + LEVEL_UP_MOVE(33, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(37, MOVE_DIG), LEVEL_UP_END }; @@ -7610,16 +7709,16 @@ static const struct LevelUpMove sNinjaskLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(19, MOVE_MIND_READER), + LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_AGILITY), LEVEL_UP_MOVE(20, MOVE_DOUBLE_TEAM), LEVEL_UP_MOVE(20, MOVE_FURY_CUTTER), LEVEL_UP_MOVE(20, MOVE_SCREECH), - LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(31, MOVE_SLASH), - LEVEL_UP_MOVE(38, MOVE_AGILITY), - LEVEL_UP_MOVE(45, MOVE_BATON_PASS), - LEVEL_UP_MOVE(52, MOVE_X_SCISSOR), + LEVEL_UP_MOVE(23, MOVE_SLASH), + LEVEL_UP_MOVE(29, MOVE_MIND_READER), + LEVEL_UP_MOVE(35, MOVE_BATON_PASS), + LEVEL_UP_MOVE(41, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(47, MOVE_X_SCISSOR), LEVEL_UP_END }; @@ -7628,15 +7727,15 @@ static const struct LevelUpMove sShedinjaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HARDEN), LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(19, MOVE_MIND_READER), - LEVEL_UP_MOVE(25, MOVE_SPITE), - LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(38, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(43, MOVE_GRUDGE), - LEVEL_UP_MOVE(47, MOVE_PHANTOM_FORCE), - LEVEL_UP_MOVE(50, MOVE_HEAL_BLOCK), - LEVEL_UP_MOVE(59, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_SPITE), + LEVEL_UP_MOVE(21, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(25, MOVE_MIND_READER), + LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(33, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(37, MOVE_GRUDGE), + LEVEL_UP_MOVE(41, MOVE_HEAL_BLOCK), + LEVEL_UP_MOVE(45, MOVE_PHANTOM_FORCE), LEVEL_UP_END }; #endif //P_FAMILY_NINCADA @@ -7644,81 +7743,84 @@ static const struct LevelUpMove sShedinjaLevelUpLearnset[] = { #if P_FAMILY_WHISMUR static const struct LevelUpMove sWhismurLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 5, MOVE_UPROAR), - LEVEL_UP_MOVE(11, MOVE_ASTONISH), - LEVEL_UP_MOVE(15, MOVE_HOWL), - LEVEL_UP_MOVE(21, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(25, MOVE_STOMP), - LEVEL_UP_MOVE(31, MOVE_SCREECH), - LEVEL_UP_MOVE(35, MOVE_ROAR), - LEVEL_UP_MOVE(41, MOVE_SYNCHRONOISE), - LEVEL_UP_MOVE(45, MOVE_REST), - LEVEL_UP_MOVE(45, MOVE_SLEEP_TALK), - LEVEL_UP_MOVE(50, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE( 4, MOVE_ECHOED_VOICE), + LEVEL_UP_MOVE( 8, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_HOWL), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(18, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(22, MOVE_STOMP), + LEVEL_UP_MOVE(25, MOVE_UPROAR), + LEVEL_UP_MOVE(29, MOVE_ROAR), + LEVEL_UP_MOVE(32, MOVE_REST), + LEVEL_UP_MOVE(36, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(39, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(43, MOVE_SYNCHRONOISE), LEVEL_UP_END }; static const struct LevelUpMove sLoudredLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 1, MOVE_ECHOED_VOICE), LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_MOVE( 1, MOVE_HOWL), - LEVEL_UP_MOVE( 5, MOVE_UPROAR), - LEVEL_UP_MOVE(11, MOVE_ASTONISH), - LEVEL_UP_MOVE(15, MOVE_HOWL), + LEVEL_UP_MOVE( 4, MOVE_ECHOED_VOICE), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_HOWL), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(18, MOVE_SUPERSONIC), LEVEL_UP_MOVE(20, MOVE_BITE), - LEVEL_UP_MOVE(23, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(29, MOVE_STOMP), - LEVEL_UP_MOVE(37, MOVE_SCREECH), - LEVEL_UP_MOVE(43, MOVE_ROAR), - LEVEL_UP_MOVE(51, MOVE_SYNCHRONOISE), - LEVEL_UP_MOVE(57, MOVE_REST), - LEVEL_UP_MOVE(57, MOVE_SLEEP_TALK), - LEVEL_UP_MOVE(65, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(23, MOVE_STOMP), + LEVEL_UP_MOVE(27, MOVE_UPROAR), + LEVEL_UP_MOVE(32, MOVE_ROAR), + LEVEL_UP_MOVE(36, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(45, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(50, MOVE_SYNCHRONOISE), LEVEL_UP_END }; static const struct LevelUpMove sExploudLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_MOVE( 1, MOVE_BOOMBURST), - LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), - LEVEL_UP_MOVE( 1, MOVE_HOWL), LEVEL_UP_MOVE( 1, MOVE_ICE_FANG), - LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), LEVEL_UP_MOVE( 1, MOVE_THUNDER_FANG), - LEVEL_UP_MOVE( 1, MOVE_UPROAR), - LEVEL_UP_MOVE( 5, MOVE_UPROAR), - LEVEL_UP_MOVE(11, MOVE_ASTONISH), - LEVEL_UP_MOVE(15, MOVE_HOWL), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_ECHOED_VOICE), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 4, MOVE_ECHOED_VOICE), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_HOWL), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(18, MOVE_SUPERSONIC), LEVEL_UP_MOVE(20, MOVE_BITE), - LEVEL_UP_MOVE(23, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(29, MOVE_STOMP), - LEVEL_UP_MOVE(37, MOVE_SCREECH), + LEVEL_UP_MOVE(23, MOVE_STOMP), + LEVEL_UP_MOVE(27, MOVE_UPROAR), + LEVEL_UP_MOVE(32, MOVE_ROAR), + LEVEL_UP_MOVE(36, MOVE_REST), LEVEL_UP_MOVE(40, MOVE_CRUNCH), - LEVEL_UP_MOVE(45, MOVE_ROAR), - LEVEL_UP_MOVE(55, MOVE_REST), - LEVEL_UP_MOVE(55, MOVE_SYNCHRONOISE), - LEVEL_UP_MOVE(63, MOVE_SLEEP_TALK), - LEVEL_UP_MOVE(71, MOVE_HYPER_VOICE), - LEVEL_UP_MOVE(79, MOVE_HYPER_BEAM), - LEVEL_UP_MOVE(85, MOVE_BOOMBURST), + LEVEL_UP_MOVE(42, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(47, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(53, MOVE_SYNCHRONOISE), + LEVEL_UP_MOVE(58, MOVE_BOOMBURST), + LEVEL_UP_MOVE(64, MOVE_HYPER_BEAM), LEVEL_UP_END }; #endif //P_FAMILY_WHISMUR #if P_FAMILY_MAKUHITA static const struct LevelUpMove sMakuhitaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), LEVEL_UP_MOVE( 7, MOVE_ARM_THRUST), - LEVEL_UP_MOVE(10, MOVE_VITAL_THROW), - LEVEL_UP_MOVE(13, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(10, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(13, MOVE_FORCE_PALM), LEVEL_UP_MOVE(16, MOVE_WHIRLWIND), LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(22, MOVE_SMELLING_SALTS), + LEVEL_UP_MOVE(22, MOVE_VITAL_THROW), LEVEL_UP_MOVE(25, MOVE_BELLY_DRUM), - LEVEL_UP_MOVE(28, MOVE_FORCE_PALM), + LEVEL_UP_MOVE(28, MOVE_SMELLING_SALTS), LEVEL_UP_MOVE(31, MOVE_SEISMIC_TOSS), LEVEL_UP_MOVE(34, MOVE_WAKE_UP_SLAP), LEVEL_UP_MOVE(37, MOVE_ENDURE), @@ -7729,26 +7831,26 @@ static const struct LevelUpMove sMakuhitaLevelUpLearnset[] = { }; static const struct LevelUpMove sHariyamaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ARM_THRUST), LEVEL_UP_MOVE( 1, MOVE_BRINE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_ARM_THRUST), LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), LEVEL_UP_MOVE( 7, MOVE_ARM_THRUST), - LEVEL_UP_MOVE(10, MOVE_VITAL_THROW), - LEVEL_UP_MOVE(13, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(10, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(13, MOVE_FORCE_PALM), LEVEL_UP_MOVE(16, MOVE_WHIRLWIND), LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(22, MOVE_SMELLING_SALTS), - LEVEL_UP_MOVE(27, MOVE_BELLY_DRUM), - LEVEL_UP_MOVE(32, MOVE_FORCE_PALM), - LEVEL_UP_MOVE(37, MOVE_SEISMIC_TOSS), - LEVEL_UP_MOVE(42, MOVE_WAKE_UP_SLAP), - LEVEL_UP_MOVE(47, MOVE_ENDURE), - LEVEL_UP_MOVE(52, MOVE_CLOSE_COMBAT), - LEVEL_UP_MOVE(57, MOVE_REVERSAL), - LEVEL_UP_MOVE(62, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE(22, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(26, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(30, MOVE_SMELLING_SALTS), + LEVEL_UP_MOVE(34, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(38, MOVE_WAKE_UP_SLAP), + LEVEL_UP_MOVE(42, MOVE_ENDURE), + LEVEL_UP_MOVE(46, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(50, MOVE_REVERSAL), + LEVEL_UP_MOVE(54, MOVE_HEAVY_SLAM), LEVEL_UP_END }; #endif //P_FAMILY_MAKUHITA @@ -7757,46 +7859,47 @@ static const struct LevelUpMove sHariyamaLevelUpLearnset[] = { static const struct LevelUpMove sNosepassLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 4, MOVE_HARDEN), - LEVEL_UP_MOVE( 8, MOVE_BLOCK), - LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(15, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(18, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(22, MOVE_REST), - LEVEL_UP_MOVE(25, MOVE_SPARK), - LEVEL_UP_MOVE(29, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(32, MOVE_POWER_GEM), - LEVEL_UP_MOVE(36, MOVE_SANDSTORM), - LEVEL_UP_MOVE(39, MOVE_DISCHARGE), - LEVEL_UP_MOVE(43, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(46, MOVE_STONE_EDGE), - LEVEL_UP_MOVE(50, MOVE_LOCK_ON), - LEVEL_UP_MOVE(50, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 7, MOVE_BLOCK), + LEVEL_UP_MOVE(10, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(16, MOVE_REST), + LEVEL_UP_MOVE(19, MOVE_SPARK), + LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(25, MOVE_POWER_GEM), + LEVEL_UP_MOVE(28, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(31, MOVE_DISCHARGE), + LEVEL_UP_MOVE(34, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(40, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(43, MOVE_LOCK_ON), + LEVEL_UP_MOVE(43, MOVE_ZAP_CANNON), LEVEL_UP_END }; #if P_GEN_4_CROSS_EVOS static const struct LevelUpMove sProbopassLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BLOCK), - LEVEL_UP_MOVE( 1, MOVE_GRAVITY), - LEVEL_UP_MOVE( 1, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE( 1, MOVE_MAGNET_BOMB), LEVEL_UP_MOVE( 1, MOVE_MAGNET_RISE), + LEVEL_UP_MOVE( 1, MOVE_GRAVITY), + LEVEL_UP_MOVE( 1, MOVE_WIDE_GUARD), LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 1, MOVE_BLOCK), + LEVEL_UP_MOVE( 1, MOVE_MAGNET_BOMB), LEVEL_UP_MOVE( 4, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE( 8, MOVE_BLOCK), - LEVEL_UP_MOVE(11, MOVE_MAGNET_BOMB), - LEVEL_UP_MOVE(15, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(18, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(22, MOVE_REST), - LEVEL_UP_MOVE(25, MOVE_SPARK), - LEVEL_UP_MOVE(29, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(32, MOVE_POWER_GEM), - LEVEL_UP_MOVE(36, MOVE_SANDSTORM), - LEVEL_UP_MOVE(39, MOVE_DISCHARGE), - LEVEL_UP_MOVE(43, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(46, MOVE_STONE_EDGE), - LEVEL_UP_MOVE(50, MOVE_LOCK_ON), - LEVEL_UP_MOVE(50, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 7, MOVE_BLOCK), + LEVEL_UP_MOVE(10, MOVE_MAGNET_BOMB), + LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(16, MOVE_REST), + LEVEL_UP_MOVE(19, MOVE_SPARK), + LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(25, MOVE_POWER_GEM), + LEVEL_UP_MOVE(28, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(31, MOVE_DISCHARGE), + LEVEL_UP_MOVE(34, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(40, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(43, MOVE_LOCK_ON), + LEVEL_UP_MOVE(43, MOVE_ZAP_CANNON), LEVEL_UP_END }; #endif //P_GEN_4_CROSS_EVOS @@ -7806,22 +7909,23 @@ static const struct LevelUpMove sProbopassLevelUpLearnset[] = { static const struct LevelUpMove sSkittyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FAKE_OUT), LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 4, MOVE_FORESIGHT), - LEVEL_UP_MOVE( 8, MOVE_ATTRACT), - LEVEL_UP_MOVE(11, MOVE_SING), - LEVEL_UP_MOVE(15, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE(18, MOVE_COPYCAT), - LEVEL_UP_MOVE(22, MOVE_ASSIST), + LEVEL_UP_MOVE( 7, MOVE_SING), + LEVEL_UP_MOVE(10, MOVE_ATTRACT), + LEVEL_UP_MOVE(13, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(16, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(19, MOVE_COPYCAT), + LEVEL_UP_MOVE(22, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(25, MOVE_CHARM), - LEVEL_UP_MOVE(29, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(32, MOVE_WAKE_UP_SLAP), - LEVEL_UP_MOVE(36, MOVE_COVET), - LEVEL_UP_MOVE(39, MOVE_HEAL_BELL), - LEVEL_UP_MOVE(42, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(46, MOVE_CAPTIVATE), - LEVEL_UP_MOVE(49, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(28, MOVE_WAKE_UP_SLAP), + LEVEL_UP_MOVE(31, MOVE_ASSIST), + LEVEL_UP_MOVE(34, MOVE_COVET), + LEVEL_UP_MOVE(37, MOVE_HEAL_BELL), + LEVEL_UP_MOVE(40, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(43, MOVE_CAPTIVATE), + LEVEL_UP_MOVE(46, MOVE_PLAY_ROUGH), LEVEL_UP_END }; @@ -7837,118 +7941,123 @@ static const struct LevelUpMove sDelcattyLevelUpLearnset[] = { #if P_FAMILY_SABLEYE static const struct LevelUpMove sSableyeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_MEAN_LOOK), LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_ZEN_HEADBUTT), LEVEL_UP_MOVE( 4, MOVE_FORESIGHT), - LEVEL_UP_MOVE( 8, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(11, MOVE_ASTONISH), - LEVEL_UP_MOVE(15, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(18, MOVE_FAKE_OUT), - LEVEL_UP_MOVE(22, MOVE_DETECT), - LEVEL_UP_MOVE(25, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(29, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(32, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(36, MOVE_PUNISHMENT), - LEVEL_UP_MOVE(39, MOVE_SHADOW_CLAW), - LEVEL_UP_MOVE(43, MOVE_POWER_GEM), - LEVEL_UP_MOVE(46, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(50, MOVE_FOUL_PLAY), - LEVEL_UP_MOVE(53, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(57, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(60, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 6, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(14, MOVE_DETECT), + LEVEL_UP_MOVE(16, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(21, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(24, MOVE_PUNISHMENT), + LEVEL_UP_MOVE(26, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(29, MOVE_SHADOW_CLAW), + LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(34, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(36, MOVE_POWER_GEM), + LEVEL_UP_MOVE(39, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(41, MOVE_FOUL_PLAY), + LEVEL_UP_MOVE(44, MOVE_QUASH), + LEVEL_UP_MOVE(46, MOVE_MEAN_LOOK), LEVEL_UP_END }; #endif //P_FAMILY_SABLEYE #if P_FAMILY_MAWILE static const struct LevelUpMove sMawileLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_IRON_HEAD), LEVEL_UP_MOVE( 1, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE( 1, MOVE_IRON_HEAD), LEVEL_UP_MOVE( 1, MOVE_TAUNT), - LEVEL_UP_MOVE( 6, MOVE_FAKE_TEARS), - LEVEL_UP_MOVE(11, MOVE_BITE), - LEVEL_UP_MOVE(16, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(21, MOVE_VISE_GRIP), - LEVEL_UP_MOVE(26, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(31, MOVE_BATON_PASS), - LEVEL_UP_MOVE(36, MOVE_CRUNCH), - LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(46, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(50, MOVE_SPIT_UP), - LEVEL_UP_MOVE(50, MOVE_STOCKPILE), - LEVEL_UP_MOVE(50, MOVE_SWALLOW), - LEVEL_UP_MOVE(56, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(60, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 5, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE( 9, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(17, MOVE_VISE_GRIP), + LEVEL_UP_MOVE(21, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_BATON_PASS), + LEVEL_UP_MOVE(29, MOVE_CRUNCH), + LEVEL_UP_MOVE(33, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(37, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(41, MOVE_STOCKPILE), + LEVEL_UP_MOVE(41, MOVE_SWALLOW), + LEVEL_UP_MOVE(41, MOVE_SPIT_UP), + LEVEL_UP_MOVE(45, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(49, MOVE_PLAY_ROUGH), LEVEL_UP_END }; #endif //P_FAMILY_MAWILE #if P_FAMILY_ARON static const struct LevelUpMove sAronLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HARDEN), LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), LEVEL_UP_MOVE( 4, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 8, MOVE_HEADBUTT), - LEVEL_UP_MOVE(11, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(15, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(18, MOVE_ROAR), - LEVEL_UP_MOVE(22, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(25, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(29, MOVE_PROTECT), - LEVEL_UP_MOVE(32, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(36, MOVE_IRON_TAIL), - LEVEL_UP_MOVE(39, MOVE_AUTOTOMIZE), - LEVEL_UP_MOVE(43, MOVE_HEAVY_SLAM), - LEVEL_UP_MOVE(46, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(50, MOVE_METAL_BURST), + LEVEL_UP_MOVE( 7, MOVE_HEADBUTT), + LEVEL_UP_MOVE(10, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(13, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(16, MOVE_PROTECT), + LEVEL_UP_MOVE(19, MOVE_ROAR), + LEVEL_UP_MOVE(22, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(34, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(37, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(40, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(43, MOVE_AUTOTOMIZE), + LEVEL_UP_MOVE(46, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE(49, MOVE_METAL_BURST), LEVEL_UP_END }; static const struct LevelUpMove sLaironLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), - LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), LEVEL_UP_MOVE( 4, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 8, MOVE_HEADBUTT), - LEVEL_UP_MOVE(11, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(15, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(18, MOVE_ROAR), - LEVEL_UP_MOVE(22, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(25, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(29, MOVE_PROTECT), - LEVEL_UP_MOVE(34, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(40, MOVE_IRON_TAIL), - LEVEL_UP_MOVE(45, MOVE_AUTOTOMIZE), + LEVEL_UP_MOVE( 7, MOVE_HEADBUTT), + LEVEL_UP_MOVE(10, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(13, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(16, MOVE_PROTECT), + LEVEL_UP_MOVE(19, MOVE_ROAR), + LEVEL_UP_MOVE(22, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(35, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(39, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(47, MOVE_AUTOTOMIZE), LEVEL_UP_MOVE(51, MOVE_HEAVY_SLAM), - LEVEL_UP_MOVE(56, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(62, MOVE_METAL_BURST), + LEVEL_UP_MOVE(55, MOVE_METAL_BURST), LEVEL_UP_END }; static const struct LevelUpMove sAggronLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), - LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), LEVEL_UP_MOVE( 4, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 8, MOVE_HEADBUTT), - LEVEL_UP_MOVE(11, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(15, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(18, MOVE_ROAR), - LEVEL_UP_MOVE(22, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(25, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(29, MOVE_PROTECT), - LEVEL_UP_MOVE(34, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(40, MOVE_IRON_TAIL), - LEVEL_UP_MOVE(48, MOVE_AUTOTOMIZE), + LEVEL_UP_MOVE( 7, MOVE_HEADBUTT), + LEVEL_UP_MOVE(10, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(13, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(16, MOVE_PROTECT), + LEVEL_UP_MOVE(19, MOVE_ROAR), + LEVEL_UP_MOVE(22, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(35, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(39, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(45, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(51, MOVE_AUTOTOMIZE), LEVEL_UP_MOVE(57, MOVE_HEAVY_SLAM), - LEVEL_UP_MOVE(65, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(74, MOVE_METAL_BURST), + LEVEL_UP_MOVE(63, MOVE_METAL_BURST), LEVEL_UP_END }; #endif //P_FAMILY_ARON @@ -7957,45 +8066,49 @@ static const struct LevelUpMove sAggronLevelUpLearnset[] = { static const struct LevelUpMove sMedititeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BIDE), LEVEL_UP_MOVE( 4, MOVE_MEDITATE), - LEVEL_UP_MOVE( 8, MOVE_CONFUSION), - LEVEL_UP_MOVE(11, MOVE_DETECT), - LEVEL_UP_MOVE(15, MOVE_HIDDEN_POWER), - LEVEL_UP_MOVE(18, MOVE_MIND_READER), - LEVEL_UP_MOVE(22, MOVE_FEINT), - LEVEL_UP_MOVE(25, MOVE_CALM_MIND), - LEVEL_UP_MOVE(29, MOVE_FORCE_PALM), - LEVEL_UP_MOVE(32, MOVE_HIGH_JUMP_KICK), - LEVEL_UP_MOVE(36, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(39, MOVE_ACUPRESSURE), - LEVEL_UP_MOVE(43, MOVE_POWER_TRICK), - LEVEL_UP_MOVE(46, MOVE_REVERSAL), - LEVEL_UP_MOVE(50, MOVE_RECOVER), + LEVEL_UP_MOVE( 7, MOVE_CONFUSION), + LEVEL_UP_MOVE( 9, MOVE_DETECT), + LEVEL_UP_MOVE(12, MOVE_ENDURE), + LEVEL_UP_MOVE(15, MOVE_FEINT), + LEVEL_UP_MOVE(17, MOVE_FORCE_PALM), + LEVEL_UP_MOVE(20, MOVE_HIDDEN_POWER), + LEVEL_UP_MOVE(23, MOVE_CALM_MIND), + LEVEL_UP_MOVE(25, MOVE_MIND_READER), + LEVEL_UP_MOVE(28, MOVE_HIGH_JUMP_KICK), + LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(33, MOVE_ACUPRESSURE), + LEVEL_UP_MOVE(36, MOVE_POWER_TRICK), + LEVEL_UP_MOVE(39, MOVE_REVERSAL), + LEVEL_UP_MOVE(41, MOVE_RECOVER), + LEVEL_UP_MOVE(44, MOVE_COUNTER), LEVEL_UP_END }; static const struct LevelUpMove sMedichamLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_ICE_PUNCH), LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 1, MOVE_MEDITATE), LEVEL_UP_MOVE( 1, MOVE_CONFUSION), LEVEL_UP_MOVE( 1, MOVE_DETECT), - LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_ICE_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_MEDITATE), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_ZEN_HEADBUTT), LEVEL_UP_MOVE( 4, MOVE_MEDITATE), - LEVEL_UP_MOVE( 8, MOVE_CONFUSION), - LEVEL_UP_MOVE(11, MOVE_DETECT), - LEVEL_UP_MOVE(15, MOVE_HIDDEN_POWER), - LEVEL_UP_MOVE(18, MOVE_MIND_READER), - LEVEL_UP_MOVE(22, MOVE_FEINT), - LEVEL_UP_MOVE(25, MOVE_CALM_MIND), - LEVEL_UP_MOVE(29, MOVE_FORCE_PALM), - LEVEL_UP_MOVE(32, MOVE_HIGH_JUMP_KICK), - LEVEL_UP_MOVE(36, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(42, MOVE_ACUPRESSURE), - LEVEL_UP_MOVE(49, MOVE_POWER_TRICK), - LEVEL_UP_MOVE(55, MOVE_REVERSAL), - LEVEL_UP_MOVE(62, MOVE_RECOVER), + LEVEL_UP_MOVE( 7, MOVE_CONFUSION), + LEVEL_UP_MOVE( 9, MOVE_DETECT), + LEVEL_UP_MOVE(12, MOVE_ENDURE), + LEVEL_UP_MOVE(15, MOVE_FEINT), + LEVEL_UP_MOVE(17, MOVE_FORCE_PALM), + LEVEL_UP_MOVE(20, MOVE_HIDDEN_POWER), + LEVEL_UP_MOVE(23, MOVE_CALM_MIND), + LEVEL_UP_MOVE(25, MOVE_MIND_READER), + LEVEL_UP_MOVE(28, MOVE_HIGH_JUMP_KICK), + LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(33, MOVE_ACUPRESSURE), + LEVEL_UP_MOVE(36, MOVE_POWER_TRICK), + LEVEL_UP_MOVE(42, MOVE_REVERSAL), + LEVEL_UP_MOVE(47, MOVE_RECOVER), + LEVEL_UP_MOVE(53, MOVE_COUNTER), LEVEL_UP_END }; #endif //P_FAMILY_MEDITITE @@ -8003,99 +8116,96 @@ static const struct LevelUpMove sMedichamLevelUpLearnset[] = { #if P_FAMILY_ELECTRIKE static const struct LevelUpMove sElectrikeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 9, MOVE_LEER), - LEVEL_UP_MOVE(12, MOVE_HOWL), - LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(20, MOVE_SPARK), - LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(28, MOVE_BITE), - LEVEL_UP_MOVE(33, MOVE_THUNDER_FANG), - LEVEL_UP_MOVE(36, MOVE_ROAR), - LEVEL_UP_MOVE(41, MOVE_DISCHARGE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 4, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_HOWL), + LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_SPARK), + LEVEL_UP_MOVE(16, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(19, MOVE_THUNDER_FANG), + LEVEL_UP_MOVE(24, MOVE_BITE), + LEVEL_UP_MOVE(29, MOVE_DISCHARGE), + LEVEL_UP_MOVE(34, MOVE_ROAR), + LEVEL_UP_MOVE(39, MOVE_WILD_CHARGE), LEVEL_UP_MOVE(44, MOVE_CHARGE), - LEVEL_UP_MOVE(49, MOVE_WILD_CHARGE), - LEVEL_UP_MOVE(52, MOVE_THUNDER), + LEVEL_UP_MOVE(49, MOVE_THUNDER), LEVEL_UP_END }; static const struct LevelUpMove sManectricLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN), LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), - LEVEL_UP_MOVE( 1, MOVE_HOWL), - LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 9, MOVE_LEER), - LEVEL_UP_MOVE(12, MOVE_HOWL), - LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(20, MOVE_SPARK), - LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(30, MOVE_BITE), - LEVEL_UP_MOVE(37, MOVE_THUNDER_FANG), - LEVEL_UP_MOVE(42, MOVE_ROAR), - LEVEL_UP_MOVE(49, MOVE_DISCHARGE), - LEVEL_UP_MOVE(54, MOVE_CHARGE), - LEVEL_UP_MOVE(61, MOVE_WILD_CHARGE), - LEVEL_UP_MOVE(66, MOVE_THUNDER), - LEVEL_UP_MOVE(70, MOVE_ELECTRIC_TERRAIN), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 4, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_HOWL), + LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_SPARK), + LEVEL_UP_MOVE(16, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(19, MOVE_THUNDER_FANG), + LEVEL_UP_MOVE(24, MOVE_BITE), + LEVEL_UP_MOVE(30, MOVE_DISCHARGE), + LEVEL_UP_MOVE(36, MOVE_ROAR), + LEVEL_UP_MOVE(42, MOVE_WILD_CHARGE), + LEVEL_UP_MOVE(48, MOVE_CHARGE), + LEVEL_UP_MOVE(54, MOVE_THUNDER), + LEVEL_UP_MOVE(60, MOVE_ELECTRIC_TERRAIN), LEVEL_UP_END }; #endif //P_FAMILY_ELECTRIKE #if P_FAMILY_PLUSLE static const struct LevelUpMove sPlusleLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ENTRAINMENT), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_NASTY_PLOT), LEVEL_UP_MOVE( 1, MOVE_NUZZLE), LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), - LEVEL_UP_MOVE( 3, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(10, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(15, MOVE_SPARK), - LEVEL_UP_MOVE(17, MOVE_ENCORE), - LEVEL_UP_MOVE(21, MOVE_PLAY_NICE), - LEVEL_UP_MOVE(24, MOVE_COPYCAT), - LEVEL_UP_MOVE(29, MOVE_ELECTRO_BALL), - LEVEL_UP_MOVE(31, MOVE_SWIFT), - LEVEL_UP_MOVE(35, MOVE_FAKE_TEARS), - LEVEL_UP_MOVE(38, MOVE_CHARGE), - LEVEL_UP_MOVE(42, MOVE_THUNDER), - LEVEL_UP_MOVE(44, MOVE_BATON_PASS), - LEVEL_UP_MOVE(48, MOVE_AGILITY), - LEVEL_UP_MOVE(50, MOVE_LAST_RESORT), - LEVEL_UP_MOVE(56, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE(63, MOVE_ENTRAINMENT), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 4, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 7, MOVE_SPARK), + LEVEL_UP_MOVE(10, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_BESTOW), + LEVEL_UP_MOVE(16, MOVE_SWIFT), + LEVEL_UP_MOVE(19, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(22, MOVE_COPYCAT), + LEVEL_UP_MOVE(25, MOVE_CHARM), + LEVEL_UP_MOVE(28, MOVE_CHARGE), + LEVEL_UP_MOVE(31, MOVE_DISCHARGE), + LEVEL_UP_MOVE(34, MOVE_BATON_PASS), + LEVEL_UP_MOVE(37, MOVE_AGILITY), + LEVEL_UP_MOVE(40, MOVE_LAST_RESORT), + LEVEL_UP_MOVE(43, MOVE_THUNDER), + LEVEL_UP_MOVE(46, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(49, MOVE_ENTRAINMENT), LEVEL_UP_END }; #endif //P_FAMILY_PLUSLE #if P_FAMILY_MINUN static const struct LevelUpMove sMinunLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ENTRAINMENT), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_NASTY_PLOT), LEVEL_UP_MOVE( 1, MOVE_NUZZLE), LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), - LEVEL_UP_MOVE( 3, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(10, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(15, MOVE_SPARK), - LEVEL_UP_MOVE(17, MOVE_ENCORE), - LEVEL_UP_MOVE(21, MOVE_CHARM), - LEVEL_UP_MOVE(24, MOVE_COPYCAT), - LEVEL_UP_MOVE(29, MOVE_ELECTRO_BALL), - LEVEL_UP_MOVE(31, MOVE_SWIFT), - LEVEL_UP_MOVE(35, MOVE_FAKE_TEARS), - LEVEL_UP_MOVE(38, MOVE_CHARGE), - LEVEL_UP_MOVE(42, MOVE_THUNDER), - LEVEL_UP_MOVE(44, MOVE_BATON_PASS), - LEVEL_UP_MOVE(48, MOVE_AGILITY), - LEVEL_UP_MOVE(51, MOVE_TRUMP_CARD), - LEVEL_UP_MOVE(56, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE(63, MOVE_ENTRAINMENT), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 4, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 7, MOVE_SPARK), + LEVEL_UP_MOVE(10, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_SWITCHEROO), + LEVEL_UP_MOVE(16, MOVE_SWIFT), + LEVEL_UP_MOVE(19, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(22, MOVE_COPYCAT), + LEVEL_UP_MOVE(25, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(28, MOVE_CHARGE), + LEVEL_UP_MOVE(31, MOVE_DISCHARGE), + LEVEL_UP_MOVE(34, MOVE_BATON_PASS), + LEVEL_UP_MOVE(37, MOVE_AGILITY), + LEVEL_UP_MOVE(40, MOVE_TRUMP_CARD), + LEVEL_UP_MOVE(43, MOVE_THUNDER), + LEVEL_UP_MOVE(46, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(49, MOVE_ENTRAINMENT), LEVEL_UP_END }; #endif //P_FAMILY_MINUN @@ -8105,33 +8215,37 @@ static const struct LevelUpMove sVolbeatLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FLASH), LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 5, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 9, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(13, MOVE_MOONLIGHT), - LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(21, MOVE_TAIL_GLOW), - LEVEL_UP_MOVE(25, MOVE_SIGNAL_BEAM), + LEVEL_UP_MOVE( 8, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(12, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(15, MOVE_STRUGGLE_BUG), + LEVEL_UP_MOVE(19, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(22, MOVE_TAIL_GLOW), + LEVEL_UP_MOVE(26, MOVE_SIGNAL_BEAM), LEVEL_UP_MOVE(29, MOVE_PROTECT), - LEVEL_UP_MOVE(33, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(37, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(41, MOVE_BUG_BUZZ), - LEVEL_UP_MOVE(45, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(33, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(36, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(40, MOVE_BUG_BUZZ), + LEVEL_UP_MOVE(43, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), LEVEL_UP_END }; static const struct LevelUpMove sIllumiseLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), LEVEL_UP_MOVE( 5, MOVE_SWEET_SCENT), LEVEL_UP_MOVE( 9, MOVE_CHARM), - LEVEL_UP_MOVE(13, MOVE_MOONLIGHT), - LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(21, MOVE_WISH), - LEVEL_UP_MOVE(25, MOVE_ENCORE), + LEVEL_UP_MOVE(12, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(15, MOVE_STRUGGLE_BUG), + LEVEL_UP_MOVE(19, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(22, MOVE_WISH), + LEVEL_UP_MOVE(26, MOVE_ENCORE), LEVEL_UP_MOVE(29, MOVE_FLATTER), - LEVEL_UP_MOVE(33, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(37, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(41, MOVE_BUG_BUZZ), - LEVEL_UP_MOVE(45, MOVE_COVET), + LEVEL_UP_MOVE(33, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(36, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(40, MOVE_BUG_BUZZ), + LEVEL_UP_MOVE(43, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(47, MOVE_COVET), LEVEL_UP_END }; #endif //P_FAMILY_VOLBEAT_ILLUMISE @@ -8162,11 +8276,11 @@ static const struct LevelUpMove sRoseliaLevelUpLearnset[] = { LEVEL_UP_MOVE(28, MOVE_TOXIC_SPIKES), LEVEL_UP_MOVE(31, MOVE_SWEET_SCENT), LEVEL_UP_MOVE(34, MOVE_INGRAIN), - LEVEL_UP_MOVE(37, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(37, MOVE_PETAL_BLIZZARD), LEVEL_UP_MOVE(40, MOVE_TOXIC), LEVEL_UP_MOVE(43, MOVE_AROMATHERAPY), LEVEL_UP_MOVE(46, MOVE_SYNTHESIS), - LEVEL_UP_MOVE(50, MOVE_PETAL_BLIZZARD), + LEVEL_UP_MOVE(50, MOVE_PETAL_DANCE), LEVEL_UP_END }; @@ -8187,90 +8301,92 @@ static const struct LevelUpMove sRoseradeLevelUpLearnset[] = { #if P_FAMILY_GULPIN static const struct LevelUpMove sGulpinLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 6, MOVE_YAWN), - LEVEL_UP_MOVE( 9, MOVE_POISON_GAS), - LEVEL_UP_MOVE(14, MOVE_SLUDGE), - LEVEL_UP_MOVE(17, MOVE_AMNESIA), - LEVEL_UP_MOVE(23, MOVE_ENCORE), - LEVEL_UP_MOVE(28, MOVE_TOXIC), - LEVEL_UP_MOVE(34, MOVE_ACID_SPRAY), - LEVEL_UP_MOVE(39, MOVE_SPIT_UP), - LEVEL_UP_MOVE(39, MOVE_STOCKPILE), - LEVEL_UP_MOVE(39, MOVE_SWALLOW), - LEVEL_UP_MOVE(40, MOVE_BELCH), - LEVEL_UP_MOVE(44, MOVE_SLUDGE_BOMB), - LEVEL_UP_MOVE(49, MOVE_GASTRO_ACID), - LEVEL_UP_MOVE(54, MOVE_WRING_OUT), - LEVEL_UP_MOVE(59, MOVE_GUNK_SHOT), + LEVEL_UP_MOVE( 5, MOVE_YAWN), + LEVEL_UP_MOVE( 8, MOVE_POISON_GAS), + LEVEL_UP_MOVE(10, MOVE_SLUDGE), + LEVEL_UP_MOVE(12, MOVE_AMNESIA), + LEVEL_UP_MOVE(17, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE(20, MOVE_ENCORE), + LEVEL_UP_MOVE(25, MOVE_TOXIC), + LEVEL_UP_MOVE(28, MOVE_STOCKPILE), + LEVEL_UP_MOVE(28, MOVE_SPIT_UP), + LEVEL_UP_MOVE(28, MOVE_SWALLOW), + LEVEL_UP_MOVE(33, MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE(36, MOVE_GASTRO_ACID), + LEVEL_UP_MOVE(41, MOVE_BELCH), + LEVEL_UP_MOVE(44, MOVE_WRING_OUT), + LEVEL_UP_MOVE(49, MOVE_GUNK_SHOT), LEVEL_UP_END }; static const struct LevelUpMove sSwalotLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GUNK_SHOT), - LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_SLUDGE), LEVEL_UP_MOVE( 1, MOVE_WRING_OUT), + LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 1, MOVE_YAWN), - LEVEL_UP_MOVE( 6, MOVE_YAWN), - LEVEL_UP_MOVE( 9, MOVE_POISON_GAS), - LEVEL_UP_MOVE(14, MOVE_SLUDGE), - LEVEL_UP_MOVE(17, MOVE_AMNESIA), - LEVEL_UP_MOVE(23, MOVE_ENCORE), + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_SLUDGE), + LEVEL_UP_MOVE( 5, MOVE_YAWN), + LEVEL_UP_MOVE( 8, MOVE_POISON_GAS), + LEVEL_UP_MOVE(10, MOVE_SLUDGE), + LEVEL_UP_MOVE(12, MOVE_AMNESIA), + LEVEL_UP_MOVE(17, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE(20, MOVE_ENCORE), + LEVEL_UP_MOVE(25, MOVE_TOXIC), LEVEL_UP_MOVE(26, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(30, MOVE_TOXIC), - LEVEL_UP_MOVE(38, MOVE_ACID_SPRAY), - LEVEL_UP_MOVE(45, MOVE_SPIT_UP), - LEVEL_UP_MOVE(45, MOVE_STOCKPILE), - LEVEL_UP_MOVE(45, MOVE_SWALLOW), - LEVEL_UP_MOVE(46, MOVE_BELCH), - LEVEL_UP_MOVE(52, MOVE_SLUDGE_BOMB), - LEVEL_UP_MOVE(59, MOVE_GASTRO_ACID), - LEVEL_UP_MOVE(66, MOVE_WRING_OUT), - LEVEL_UP_MOVE(73, MOVE_GUNK_SHOT), + LEVEL_UP_MOVE(30, MOVE_STOCKPILE), + LEVEL_UP_MOVE(30, MOVE_SPIT_UP), + LEVEL_UP_MOVE(30, MOVE_SWALLOW), + LEVEL_UP_MOVE(37, MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE(42, MOVE_GASTRO_ACID), + LEVEL_UP_MOVE(49, MOVE_BELCH), + LEVEL_UP_MOVE(54, MOVE_WRING_OUT), + LEVEL_UP_MOVE(61, MOVE_GUNK_SHOT), LEVEL_UP_END }; #endif //P_FAMILY_GULPIN #if P_FAMILY_CARVANHA static const struct LevelUpMove sCarvanhaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 6, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 4, MOVE_RAGE), LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(11, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(16, MOVE_ICE_FANG), + LEVEL_UP_MOVE(11, MOVE_AQUA_JET), + LEVEL_UP_MOVE(15, MOVE_ASSURANCE), LEVEL_UP_MOVE(18, MOVE_SCREECH), - LEVEL_UP_MOVE(21, MOVE_SWAGGER), - LEVEL_UP_MOVE(26, MOVE_ASSURANCE), - LEVEL_UP_MOVE(28, MOVE_CRUNCH), - LEVEL_UP_MOVE(31, MOVE_AQUA_JET), - LEVEL_UP_MOVE(36, MOVE_AGILITY), - LEVEL_UP_MOVE(38, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(22, MOVE_SWAGGER), + LEVEL_UP_MOVE(25, MOVE_ICE_FANG), + LEVEL_UP_MOVE(29, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(32, MOVE_POISON_FANG), + LEVEL_UP_MOVE(36, MOVE_CRUNCH), + LEVEL_UP_MOVE(39, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), LEVEL_UP_END }; static const struct LevelUpMove sSharpedoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_FEINT), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 1, MOVE_FEINT), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_BITE), LEVEL_UP_MOVE( 1, MOVE_RAGE), - LEVEL_UP_MOVE( 6, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 4, MOVE_RAGE), LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(11, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(16, MOVE_ICE_FANG), + LEVEL_UP_MOVE(11, MOVE_AQUA_JET), + LEVEL_UP_MOVE(15, MOVE_ASSURANCE), LEVEL_UP_MOVE(18, MOVE_SCREECH), - LEVEL_UP_MOVE(21, MOVE_SWAGGER), - LEVEL_UP_MOVE(26, MOVE_ASSURANCE), - LEVEL_UP_MOVE(28, MOVE_CRUNCH), + LEVEL_UP_MOVE(22, MOVE_SWAGGER), + LEVEL_UP_MOVE(25, MOVE_ICE_FANG), + LEVEL_UP_MOVE(29, MOVE_SCARY_FACE), LEVEL_UP_MOVE(30, MOVE_SLASH), - LEVEL_UP_MOVE(34, MOVE_AQUA_JET), - LEVEL_UP_MOVE(40, MOVE_TAUNT), + LEVEL_UP_MOVE(34, MOVE_POISON_FANG), + LEVEL_UP_MOVE(40, MOVE_CRUNCH), LEVEL_UP_MOVE(45, MOVE_AGILITY), - LEVEL_UP_MOVE(50, MOVE_SKULL_BASH), - LEVEL_UP_MOVE(56, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(51, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(56, MOVE_TAUNT), + LEVEL_UP_MOVE(62, MOVE_NIGHT_SLASH), LEVEL_UP_END }; #endif //P_FAMILY_CARVANHA @@ -8280,42 +8396,43 @@ static const struct LevelUpMove sWailmerLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SPLASH), LEVEL_UP_MOVE( 4, MOVE_GROWL), LEVEL_UP_MOVE( 7, MOVE_WATER_GUN), - LEVEL_UP_MOVE(11, MOVE_ROLLOUT), - LEVEL_UP_MOVE(14, MOVE_WHIRLPOOL), - LEVEL_UP_MOVE(17, MOVE_ASTONISH), - LEVEL_UP_MOVE(21, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(24, MOVE_MIST), - LEVEL_UP_MOVE(27, MOVE_REST), - LEVEL_UP_MOVE(31, MOVE_BRINE), - LEVEL_UP_MOVE(34, MOVE_WATER_SPOUT), + LEVEL_UP_MOVE(10, MOVE_ROLLOUT), + LEVEL_UP_MOVE(13, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(16, MOVE_ASTONISH), + LEVEL_UP_MOVE(19, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(22, MOVE_MIST), + LEVEL_UP_MOVE(25, MOVE_BRINE), + LEVEL_UP_MOVE(29, MOVE_REST), + LEVEL_UP_MOVE(33, MOVE_DIVE), LEVEL_UP_MOVE(37, MOVE_AMNESIA), - LEVEL_UP_MOVE(41, MOVE_DIVE), - LEVEL_UP_MOVE(44, MOVE_BOUNCE), - LEVEL_UP_MOVE(47, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(50, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE(41, MOVE_WATER_SPOUT), + LEVEL_UP_MOVE(45, MOVE_BOUNCE), + LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(53, MOVE_HEAVY_SLAM), LEVEL_UP_END }; static const struct LevelUpMove sWailordLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_ROLLOUT), + LEVEL_UP_MOVE( 1, MOVE_HEAVY_SLAM), LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ROLLOUT), LEVEL_UP_MOVE( 4, MOVE_GROWL), LEVEL_UP_MOVE( 7, MOVE_WATER_GUN), - LEVEL_UP_MOVE(11, MOVE_ROLLOUT), - LEVEL_UP_MOVE(14, MOVE_WHIRLPOOL), - LEVEL_UP_MOVE(17, MOVE_ASTONISH), - LEVEL_UP_MOVE(21, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(24, MOVE_MIST), - LEVEL_UP_MOVE(27, MOVE_REST), - LEVEL_UP_MOVE(31, MOVE_BRINE), - LEVEL_UP_MOVE(34, MOVE_WATER_SPOUT), + LEVEL_UP_MOVE(10, MOVE_ROLLOUT), + LEVEL_UP_MOVE(13, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(16, MOVE_ASTONISH), + LEVEL_UP_MOVE(19, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(22, MOVE_MIST), + LEVEL_UP_MOVE(25, MOVE_REST), + LEVEL_UP_MOVE(29, MOVE_BRINE), + LEVEL_UP_MOVE(33, MOVE_WATER_SPOUT), LEVEL_UP_MOVE(37, MOVE_AMNESIA), - LEVEL_UP_MOVE(46, MOVE_DIVE), - LEVEL_UP_MOVE(54, MOVE_BOUNCE), - LEVEL_UP_MOVE(62, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(70, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE(44, MOVE_DIVE), + LEVEL_UP_MOVE(51, MOVE_BOUNCE), + LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(65, MOVE_HEAVY_SLAM), LEVEL_UP_END }; #endif //P_FAMILY_WAILMER @@ -8325,8 +8442,8 @@ static const struct LevelUpMove sNumelLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 5, MOVE_EMBER), - LEVEL_UP_MOVE( 8, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(12, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(12, MOVE_MAGNITUDE), LEVEL_UP_MOVE(15, MOVE_FLAME_BURST), LEVEL_UP_MOVE(19, MOVE_AMNESIA), LEVEL_UP_MOVE(22, MOVE_LAVA_PLUME), @@ -8341,15 +8458,15 @@ static const struct LevelUpMove sNumelLevelUpLearnset[] = { }; static const struct LevelUpMove sCameruptLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 1, MOVE_ERUPTION), LEVEL_UP_MOVE( 1, MOVE_FISSURE), + LEVEL_UP_MOVE( 1, MOVE_ERUPTION), LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_MAGNITUDE), LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), LEVEL_UP_MOVE( 5, MOVE_EMBER), - LEVEL_UP_MOVE( 8, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(12, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(12, MOVE_MAGNITUDE), LEVEL_UP_MOVE(15, MOVE_FLAME_BURST), LEVEL_UP_MOVE(19, MOVE_AMNESIA), LEVEL_UP_MOVE(22, MOVE_LAVA_PLUME), @@ -8367,29 +8484,24 @@ static const struct LevelUpMove sCameruptLevelUpLearnset[] = { #if P_FAMILY_TORKOAL static const struct LevelUpMove sTorkoalLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_INFERNO), - LEVEL_UP_MOVE( 1, MOVE_HEAT_WAVE), - LEVEL_UP_MOVE( 1, MOVE_PROTECT), - LEVEL_UP_MOVE( 1, MOVE_FLAIL), - LEVEL_UP_MOVE( 1, MOVE_SHELL_SMASH), LEVEL_UP_MOVE( 1, MOVE_EMBER), LEVEL_UP_MOVE( 4, MOVE_SMOG), LEVEL_UP_MOVE( 7, MOVE_WITHDRAW), - LEVEL_UP_MOVE(12, MOVE_CURSE), - LEVEL_UP_MOVE(17, MOVE_FIRE_SPIN), - LEVEL_UP_MOVE(20, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(23, MOVE_FLAME_WHEEL), - LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE(28, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(33, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(36, MOVE_PROTECT), - LEVEL_UP_MOVE(39, MOVE_LAVA_PLUME), - LEVEL_UP_MOVE(44, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(49, MOVE_AMNESIA), - LEVEL_UP_MOVE(52, MOVE_FLAIL), - LEVEL_UP_MOVE(55, MOVE_HEAT_WAVE), - LEVEL_UP_MOVE(60, MOVE_INFERNO), - LEVEL_UP_MOVE(65, MOVE_SHELL_SMASH), + LEVEL_UP_MOVE(10, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(13, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(15, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(18, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(22, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_LAVA_PLUME), + LEVEL_UP_MOVE(27, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(30, MOVE_PROTECT), + LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(38, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(40, MOVE_AMNESIA), + LEVEL_UP_MOVE(42, MOVE_FLAIL), + LEVEL_UP_MOVE(45, MOVE_HEAT_WAVE), + LEVEL_UP_MOVE(47, MOVE_SHELL_SMASH), + LEVEL_UP_MOVE(50, MOVE_INFERNO), LEVEL_UP_END }; #endif //P_FAMILY_TORKOAL @@ -8404,9 +8516,9 @@ static const struct LevelUpMove sSpoinkLevelUpLearnset[] = { LEVEL_UP_MOVE(18, MOVE_CONFUSE_RAY), LEVEL_UP_MOVE(21, MOVE_MAGIC_COAT), LEVEL_UP_MOVE(26, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(29, MOVE_POWER_GEM), LEVEL_UP_MOVE(29, MOVE_REST), - LEVEL_UP_MOVE(29, MOVE_SNORE), - LEVEL_UP_MOVE(33, MOVE_POWER_GEM), + LEVEL_UP_MOVE(33, MOVE_SNORE), LEVEL_UP_MOVE(38, MOVE_PSYSHOCK), LEVEL_UP_MOVE(40, MOVE_PAYBACK), LEVEL_UP_MOVE(44, MOVE_PSYCHIC), @@ -8415,10 +8527,10 @@ static const struct LevelUpMove sSpoinkLevelUpLearnset[] = { }; static const struct LevelUpMove sGrumpigLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), LEVEL_UP_MOVE( 1, MOVE_PSYBEAM), - LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), - LEVEL_UP_MOVE( 1, MOVE_SPLASH), LEVEL_UP_MOVE( 7, MOVE_PSYWAVE), LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH), LEVEL_UP_MOVE(14, MOVE_PSYBEAM), @@ -8426,9 +8538,10 @@ static const struct LevelUpMove sGrumpigLevelUpLearnset[] = { LEVEL_UP_MOVE(18, MOVE_CONFUSE_RAY), LEVEL_UP_MOVE(21, MOVE_MAGIC_COAT), LEVEL_UP_MOVE(26, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(29, MOVE_REST), - LEVEL_UP_MOVE(29, MOVE_SNORE), - LEVEL_UP_MOVE(35, MOVE_POWER_GEM), + LEVEL_UP_MOVE(29, MOVE_POWER_GEM), + LEVEL_UP_MOVE(32, MOVE_TEETER_DANCE), + LEVEL_UP_MOVE(35, MOVE_REST), + LEVEL_UP_MOVE(35, MOVE_SNORE), LEVEL_UP_MOVE(42, MOVE_PSYSHOCK), LEVEL_UP_MOVE(46, MOVE_PAYBACK), LEVEL_UP_MOVE(52, MOVE_PSYCHIC), @@ -8440,276 +8553,276 @@ static const struct LevelUpMove sGrumpigLevelUpLearnset[] = { #if P_FAMILY_SPINDA static const struct LevelUpMove sSpindaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_UPROAR), - LEVEL_UP_MOVE(10, MOVE_COPYCAT), - LEVEL_UP_MOVE(14, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(19, MOVE_PSYBEAM), - LEVEL_UP_MOVE(23, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(28, MOVE_DIZZY_PUNCH), - LEVEL_UP_MOVE(32, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(37, MOVE_TEETER_DANCE), + LEVEL_UP_MOVE( 5, MOVE_COPYCAT), + LEVEL_UP_MOVE(10, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(14, MOVE_PSYBEAM), + LEVEL_UP_MOVE(19, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(23, MOVE_DIZZY_PUNCH), + LEVEL_UP_MOVE(28, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(32, MOVE_TEETER_DANCE), + LEVEL_UP_MOVE(37, MOVE_UPROAR), LEVEL_UP_MOVE(41, MOVE_PSYCH_UP), LEVEL_UP_MOVE(46, MOVE_DOUBLE_EDGE), LEVEL_UP_MOVE(50, MOVE_FLAIL), - LEVEL_UP_MOVE(50, MOVE_THRASH), + LEVEL_UP_MOVE(55, MOVE_THRASH), LEVEL_UP_END }; #endif //P_FAMILY_SPINDA #if P_FAMILY_TRAPINCH static const struct LevelUpMove sTrapinchLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_FEINT), - LEVEL_UP_MOVE( 1, MOVE_FISSURE), - LEVEL_UP_MOVE( 1, MOVE_SUPERPOWER), - LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 7, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(10, MOVE_SAND_TOMB), - LEVEL_UP_MOVE(13, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(17, MOVE_BIDE), - LEVEL_UP_MOVE(21, MOVE_BULLDOZE), - LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(29, MOVE_DIG), - LEVEL_UP_MOVE(34, MOVE_CRUNCH), - LEVEL_UP_MOVE(39, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(44, MOVE_SANDSTORM), - LEVEL_UP_MOVE(49, MOVE_HYPER_BEAM), - LEVEL_UP_MOVE(55, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(61, MOVE_FEINT), - LEVEL_UP_MOVE(67, MOVE_SUPERPOWER), - LEVEL_UP_MOVE(73, MOVE_FISSURE), + LEVEL_UP_MOVE( 1, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 5, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 8, MOVE_BULLDOZE), + LEVEL_UP_MOVE(12, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(15, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(19, MOVE_DIG), + LEVEL_UP_MOVE(22, MOVE_CRUNCH), + LEVEL_UP_MOVE(26, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(29, MOVE_FEINT), + LEVEL_UP_MOVE(33, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(36, MOVE_SANDSTORM), + LEVEL_UP_MOVE(40, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(43, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(47, MOVE_FISSURE), LEVEL_UP_END }; static const struct LevelUpMove sVibravaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_SAND_TOMB), LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 7, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(10, MOVE_SAND_TOMB), - LEVEL_UP_MOVE(13, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(17, MOVE_BIDE), - LEVEL_UP_MOVE(21, MOVE_BULLDOZE), - LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(29, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(34, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 5, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 8, MOVE_BULLDOZE), + LEVEL_UP_MOVE(12, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(15, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(19, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(22, MOVE_SCREECH), + LEVEL_UP_MOVE(26, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(29, MOVE_BUG_BUZZ), + LEVEL_UP_MOVE(33, MOVE_EARTHQUAKE), LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(39, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(44, MOVE_SANDSTORM), - LEVEL_UP_MOVE(49, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(36, MOVE_SANDSTORM), + LEVEL_UP_MOVE(40, MOVE_UPROAR), + LEVEL_UP_MOVE(43, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(47, MOVE_BOOMBURST), LEVEL_UP_END }; static const struct LevelUpMove sFlygonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_SAND_TOMB), LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 7, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(10, MOVE_SAND_TOMB), - LEVEL_UP_MOVE(13, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(17, MOVE_BIDE), - LEVEL_UP_MOVE(21, MOVE_BULLDOZE), - LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(29, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(34, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 5, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 8, MOVE_BULLDOZE), + LEVEL_UP_MOVE(12, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(15, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(19, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(22, MOVE_SCREECH), + LEVEL_UP_MOVE(26, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(29, MOVE_DRAGON_TAIL), + LEVEL_UP_MOVE(33, MOVE_EARTHQUAKE), LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(39, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(44, MOVE_SANDSTORM), - LEVEL_UP_MOVE(45, MOVE_DRAGON_TAIL), - LEVEL_UP_MOVE(49, MOVE_HYPER_BEAM), - LEVEL_UP_MOVE(55, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(36, MOVE_SANDSTORM), + LEVEL_UP_MOVE(40, MOVE_UPROAR), + LEVEL_UP_MOVE(43, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(45, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(47, MOVE_DRAGON_RUSH), LEVEL_UP_END }; #endif //P_FAMILY_TRAPINCH #if P_FAMILY_CACNEA static const struct LevelUpMove sCacneaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 5, MOVE_ABSORB), - LEVEL_UP_MOVE( 9, MOVE_GROWTH), - LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(17, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(21, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(25, MOVE_INGRAIN), - LEVEL_UP_MOVE(29, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(33, MOVE_SPIKES), - LEVEL_UP_MOVE(37, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(41, MOVE_PAYBACK), - LEVEL_UP_MOVE(45, MOVE_NEEDLE_ARM), - LEVEL_UP_MOVE(49, MOVE_COTTON_SPORE), - LEVEL_UP_MOVE(53, MOVE_SANDSTORM), - LEVEL_UP_MOVE(57, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 4, MOVE_ABSORB), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(22, MOVE_INGRAIN), + LEVEL_UP_MOVE(26, MOVE_PAYBACK), + LEVEL_UP_MOVE(30, MOVE_SPIKES), + LEVEL_UP_MOVE(34, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(38, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(42, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(46, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(50, MOVE_SANDSTORM), + LEVEL_UP_MOVE(54, MOVE_DESTINY_BOND), LEVEL_UP_END }; static const struct LevelUpMove sCacturneLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ABSORB), LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), - LEVEL_UP_MOVE( 1, MOVE_GROWTH), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), LEVEL_UP_MOVE( 1, MOVE_REVENGE), - LEVEL_UP_MOVE( 5, MOVE_ABSORB), - LEVEL_UP_MOVE( 9, MOVE_GROWTH), - LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(17, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(21, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(25, MOVE_INGRAIN), - LEVEL_UP_MOVE(29, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(35, MOVE_SPIKES), - LEVEL_UP_MOVE(41, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(47, MOVE_PAYBACK), - LEVEL_UP_MOVE(53, MOVE_NEEDLE_ARM), - LEVEL_UP_MOVE(59, MOVE_COTTON_SPORE), - LEVEL_UP_MOVE(65, MOVE_SANDSTORM), - LEVEL_UP_MOVE(71, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 4, MOVE_ABSORB), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(22, MOVE_INGRAIN), + LEVEL_UP_MOVE(26, MOVE_PAYBACK), + LEVEL_UP_MOVE(30, MOVE_SPIKES), + LEVEL_UP_MOVE(32, MOVE_SPIKY_SHIELD), + LEVEL_UP_MOVE(35, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(38, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(44, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(49, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(54, MOVE_SANDSTORM), + LEVEL_UP_MOVE(59, MOVE_DESTINY_BOND), LEVEL_UP_END }; #endif //P_FAMILY_CACNEA #if P_FAMILY_SWABLU static const struct LevelUpMove sSwabluLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 4, MOVE_ASTONISH), - LEVEL_UP_MOVE( 8, MOVE_SING), - LEVEL_UP_MOVE(10, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(13, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(15, MOVE_MIST), - LEVEL_UP_MOVE(18, MOVE_ROUND), - LEVEL_UP_MOVE(21, MOVE_NATURAL_GIFT), - LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(29, MOVE_REFRESH), - LEVEL_UP_MOVE(34, MOVE_MIRROR_MOVE), - LEVEL_UP_MOVE(39, MOVE_COTTON_GUARD), - LEVEL_UP_MOVE(42, MOVE_DRAGON_PULSE), - LEVEL_UP_MOVE(48, MOVE_PERISH_SONG), - LEVEL_UP_MOVE(50, MOVE_MOONBLAST), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 3, MOVE_ASTONISH), + LEVEL_UP_MOVE( 5, MOVE_SING), + LEVEL_UP_MOVE( 7, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(11, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(14, MOVE_MIST), + LEVEL_UP_MOVE(17, MOVE_ROUND), + LEVEL_UP_MOVE(20, MOVE_NATURAL_GIFT), + LEVEL_UP_MOVE(23, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(26, MOVE_REFRESH), + LEVEL_UP_MOVE(30, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(34, MOVE_COTTON_GUARD), + LEVEL_UP_MOVE(38, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(42, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(46, MOVE_MOONBLAST), LEVEL_UP_END }; static const struct LevelUpMove sAltariaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_PLUCK), - LEVEL_UP_MOVE( 1, MOVE_SING), LEVEL_UP_MOVE( 1, MOVE_SKY_ATTACK), - LEVEL_UP_MOVE( 4, MOVE_ASTONISH), - LEVEL_UP_MOVE( 8, MOVE_SING), - LEVEL_UP_MOVE(10, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(13, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(15, MOVE_MIST), - LEVEL_UP_MOVE(18, MOVE_ROUND), - LEVEL_UP_MOVE(21, MOVE_NATURAL_GIFT), - LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(29, MOVE_REFRESH), - LEVEL_UP_MOVE(34, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE( 1, MOVE_PLUCK), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 3, MOVE_ASTONISH), + LEVEL_UP_MOVE( 5, MOVE_SING), + LEVEL_UP_MOVE( 7, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(11, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(14, MOVE_MIST), + LEVEL_UP_MOVE(17, MOVE_ROUND), + LEVEL_UP_MOVE(20, MOVE_NATURAL_GIFT), + LEVEL_UP_MOVE(23, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(26, MOVE_REFRESH), + LEVEL_UP_MOVE(30, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(34, MOVE_COTTON_GUARD), LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(42, MOVE_COTTON_GUARD), - LEVEL_UP_MOVE(48, MOVE_DRAGON_PULSE), - LEVEL_UP_MOVE(57, MOVE_PERISH_SONG), - LEVEL_UP_MOVE(60, MOVE_MOONBLAST), - LEVEL_UP_MOVE(64, MOVE_SKY_ATTACK), + LEVEL_UP_MOVE(40, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(46, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(52, MOVE_MOONBLAST), + LEVEL_UP_MOVE(59, MOVE_SKY_ATTACK), LEVEL_UP_END }; #endif //P_FAMILY_SWABLU #if P_FAMILY_ZANGOOSE static const struct LevelUpMove sZangooseLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 5, MOVE_QUICK_ATTACK), LEVEL_UP_MOVE( 8, MOVE_FURY_CUTTER), LEVEL_UP_MOVE(12, MOVE_PURSUIT), - LEVEL_UP_MOVE(15, MOVE_SLASH), - LEVEL_UP_MOVE(19, MOVE_EMBARGO), - LEVEL_UP_MOVE(22, MOVE_CRUSH_CLAW), - LEVEL_UP_MOVE(26, MOVE_REVENGE), + LEVEL_UP_MOVE(15, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(19, MOVE_SLASH), + LEVEL_UP_MOVE(22, MOVE_REVENGE), + LEVEL_UP_MOVE(26, MOVE_CRUSH_CLAW), LEVEL_UP_MOVE(29, MOVE_FALSE_SWIPE), - LEVEL_UP_MOVE(33, MOVE_DETECT), - LEVEL_UP_MOVE(36, MOVE_X_SCISSOR), - LEVEL_UP_MOVE(40, MOVE_TAUNT), - LEVEL_UP_MOVE(43, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(47, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(33, MOVE_EMBARGO), + LEVEL_UP_MOVE(36, MOVE_DETECT), + LEVEL_UP_MOVE(40, MOVE_X_SCISSOR), + LEVEL_UP_MOVE(43, MOVE_TAUNT), + LEVEL_UP_MOVE(47, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(50, MOVE_CLOSE_COMBAT), LEVEL_UP_END }; #endif //P_FAMILY_ZANGOOSE #if P_FAMILY_SEVIPER static const struct LevelUpMove sSeviperLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SWAGGER), LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 5, MOVE_BITE), - LEVEL_UP_MOVE( 9, MOVE_LICK), - LEVEL_UP_MOVE(12, MOVE_POISON_TAIL), - LEVEL_UP_MOVE(16, MOVE_SCREECH), - LEVEL_UP_MOVE(20, MOVE_VENOSHOCK), - LEVEL_UP_MOVE(23, MOVE_GLARE), - LEVEL_UP_MOVE(27, MOVE_POISON_FANG), - LEVEL_UP_MOVE(28, MOVE_VENOM_DRENCH), - LEVEL_UP_MOVE(31, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE(34, MOVE_GASTRO_ACID), - LEVEL_UP_MOVE(38, MOVE_HAZE), - LEVEL_UP_MOVE(42, MOVE_POISON_JAB), - LEVEL_UP_MOVE(45, MOVE_CRUNCH), - LEVEL_UP_MOVE(46, MOVE_BELCH), - LEVEL_UP_MOVE(48, MOVE_COIL), - LEVEL_UP_MOVE(50, MOVE_WRING_OUT), + LEVEL_UP_MOVE( 1, MOVE_SWAGGER), + LEVEL_UP_MOVE( 4, MOVE_BITE), + LEVEL_UP_MOVE( 7, MOVE_LICK), + LEVEL_UP_MOVE(10, MOVE_POISON_TAIL), + LEVEL_UP_MOVE(13, MOVE_SCREECH), + LEVEL_UP_MOVE(16, MOVE_VENOSHOCK), + LEVEL_UP_MOVE(19, MOVE_GLARE), + LEVEL_UP_MOVE(22, MOVE_POISON_FANG), + LEVEL_UP_MOVE(25, MOVE_VENOM_DRENCH), + LEVEL_UP_MOVE(28, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(31, MOVE_GASTRO_ACID), + LEVEL_UP_MOVE(34, MOVE_POISON_JAB), + LEVEL_UP_MOVE(37, MOVE_HAZE), + LEVEL_UP_MOVE(40, MOVE_CRUNCH), + LEVEL_UP_MOVE(43, MOVE_BELCH), + LEVEL_UP_MOVE(46, MOVE_COIL), + LEVEL_UP_MOVE(49, MOVE_WRING_OUT), LEVEL_UP_END }; #endif //P_FAMILY_SEVIPER #if P_FAMILY_LUNATONE static const struct LevelUpMove sLunatoneLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_MAGIC_ROOM), - LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 1, MOVE_MOONBLAST), LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_ROCK_THROW), - LEVEL_UP_MOVE( 9, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(13, MOVE_ROCK_POLISH), - LEVEL_UP_MOVE(17, MOVE_PSYWAVE), - LEVEL_UP_MOVE(21, MOVE_EMBARGO), - LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(29, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(33, MOVE_PSYCHIC), - LEVEL_UP_MOVE(37, MOVE_HEAL_BLOCK), - LEVEL_UP_MOVE(41, MOVE_STONE_EDGE), - LEVEL_UP_MOVE(45, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(49, MOVE_EXPLOSION), - LEVEL_UP_MOVE(50, MOVE_MOONBLAST), - LEVEL_UP_MOVE(53, MOVE_MAGIC_ROOM), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 5, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 9, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE(13, MOVE_PSYWAVE), + LEVEL_UP_MOVE(17, MOVE_EMBARGO), + LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(25, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(29, MOVE_PSYCHIC), + LEVEL_UP_MOVE(33, MOVE_HEAL_BLOCK), + LEVEL_UP_MOVE(37, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(41, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(45, MOVE_EXPLOSION), + LEVEL_UP_MOVE(49, MOVE_MAGIC_ROOM), LEVEL_UP_END }; #endif //P_FAMILY_LUNATONE #if P_FAMILY_SOLROCK static const struct LevelUpMove sSolrockLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_WONDER_ROOM), - LEVEL_UP_MOVE( 5, MOVE_ROCK_THROW), - LEVEL_UP_MOVE( 9, MOVE_FIRE_SPIN), - LEVEL_UP_MOVE(13, MOVE_ROCK_POLISH), - LEVEL_UP_MOVE(17, MOVE_PSYWAVE), - LEVEL_UP_MOVE(21, MOVE_EMBARGO), - LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(29, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(33, MOVE_PSYCHIC), - LEVEL_UP_MOVE(37, MOVE_HEAL_BLOCK), - LEVEL_UP_MOVE(41, MOVE_STONE_EDGE), - LEVEL_UP_MOVE(45, MOVE_SOLAR_BEAM), - LEVEL_UP_MOVE(49, MOVE_EXPLOSION), - LEVEL_UP_MOVE(53, MOVE_WONDER_ROOM), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 5, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 9, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE(13, MOVE_PSYWAVE), + LEVEL_UP_MOVE(17, MOVE_EMBARGO), + LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(25, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(29, MOVE_PSYCHIC), + LEVEL_UP_MOVE(33, MOVE_HEAL_BLOCK), + LEVEL_UP_MOVE(37, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(41, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(45, MOVE_EXPLOSION), + LEVEL_UP_MOVE(49, MOVE_WONDER_ROOM), LEVEL_UP_END }; #endif //P_FAMILY_SOLROCK @@ -8719,39 +8832,42 @@ static const struct LevelUpMove sBarboachLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), LEVEL_UP_MOVE( 6, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(10, MOVE_WATER_GUN), - LEVEL_UP_MOVE(14, MOVE_MUD_BOMB), - LEVEL_UP_MOVE(18, MOVE_AMNESIA), - LEVEL_UP_MOVE(22, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(26, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(31, MOVE_REST), - LEVEL_UP_MOVE(31, MOVE_SNORE), - LEVEL_UP_MOVE(35, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(39, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(43, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(47, MOVE_FISSURE), + LEVEL_UP_MOVE( 9, MOVE_WATER_GUN), + LEVEL_UP_MOVE(13, MOVE_MUD_BOMB), + LEVEL_UP_MOVE(15, MOVE_AMNESIA), + LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(20, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(25, MOVE_REST), + LEVEL_UP_MOVE(25, MOVE_SNORE), + LEVEL_UP_MOVE(28, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(32, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(35, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(39, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(44, MOVE_FISSURE), LEVEL_UP_END }; static const struct LevelUpMove sWhiscashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TICKLE), LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 1, MOVE_TICKLE), LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 1, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), LEVEL_UP_MOVE( 6, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(10, MOVE_WATER_GUN), - LEVEL_UP_MOVE(14, MOVE_MUD_BOMB), - LEVEL_UP_MOVE(18, MOVE_AMNESIA), - LEVEL_UP_MOVE(22, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(26, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(33, MOVE_REST), - LEVEL_UP_MOVE(33, MOVE_SNORE), - LEVEL_UP_MOVE(39, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(45, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(51, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(57, MOVE_FISSURE), + LEVEL_UP_MOVE( 9, MOVE_WATER_GUN), + LEVEL_UP_MOVE(13, MOVE_MUD_BOMB), + LEVEL_UP_MOVE(15, MOVE_AMNESIA), + LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(20, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(25, MOVE_REST), + LEVEL_UP_MOVE(25, MOVE_SNORE), + LEVEL_UP_MOVE(28, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(30, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(34, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(39, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(45, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(52, MOVE_FISSURE), LEVEL_UP_END }; #endif //P_FAMILY_BARBOACH @@ -8759,40 +8875,43 @@ static const struct LevelUpMove sWhiscashLevelUpLearnset[] = { #if P_FAMILY_CORPHISH static const struct LevelUpMove sCorphishLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 7, MOVE_HARDEN), - LEVEL_UP_MOVE(10, MOVE_VISE_GRIP), - LEVEL_UP_MOVE(13, MOVE_LEER), - LEVEL_UP_MOVE(20, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(23, MOVE_PROTECT), - LEVEL_UP_MOVE(26, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(32, MOVE_TAUNT), - LEVEL_UP_MOVE(35, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE(38, MOVE_CRABHAMMER), - LEVEL_UP_MOVE(44, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(47, MOVE_CRUNCH), - LEVEL_UP_MOVE(53, MOVE_GUILLOTINE), + LEVEL_UP_MOVE( 5, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_VISE_GRIP), + LEVEL_UP_MOVE(10, MOVE_LEER), + LEVEL_UP_MOVE(14, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(17, MOVE_PROTECT), + LEVEL_UP_MOVE(20, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(23, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(26, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(31, MOVE_RAZOR_SHELL), + LEVEL_UP_MOVE(34, MOVE_TAUNT), + LEVEL_UP_MOVE(37, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(39, MOVE_CRUNCH), + LEVEL_UP_MOVE(43, MOVE_CRABHAMMER), + LEVEL_UP_MOVE(48, MOVE_GUILLOTINE), LEVEL_UP_END }; static const struct LevelUpMove sCrawdauntLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GUILLOTINE), LEVEL_UP_MOVE( 1, MOVE_BUBBLE), LEVEL_UP_MOVE( 1, MOVE_HARDEN), LEVEL_UP_MOVE( 1, MOVE_VISE_GRIP), LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 7, MOVE_HARDEN), - LEVEL_UP_MOVE(10, MOVE_VISE_GRIP), - LEVEL_UP_MOVE(13, MOVE_LEER), - LEVEL_UP_MOVE(20, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(23, MOVE_PROTECT), - LEVEL_UP_MOVE(26, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 5, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_VISE_GRIP), + LEVEL_UP_MOVE(10, MOVE_LEER), + LEVEL_UP_MOVE(14, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(17, MOVE_PROTECT), + LEVEL_UP_MOVE(20, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(23, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(26, MOVE_NIGHT_SLASH), LEVEL_UP_MOVE(30, MOVE_SWIFT), - LEVEL_UP_MOVE(34, MOVE_TAUNT), - LEVEL_UP_MOVE(39, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE(44, MOVE_CRABHAMMER), - LEVEL_UP_MOVE(52, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(57, MOVE_CRUNCH), - LEVEL_UP_MOVE(65, MOVE_GUILLOTINE), + LEVEL_UP_MOVE(32, MOVE_RAZOR_SHELL), + LEVEL_UP_MOVE(36, MOVE_TAUNT), + LEVEL_UP_MOVE(40, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(43, MOVE_CRUNCH), + LEVEL_UP_MOVE(48, MOVE_CRABHAMMER), + LEVEL_UP_MOVE(54, MOVE_GUILLOTINE), LEVEL_UP_END }; #endif //P_FAMILY_CORPHISH @@ -8803,43 +8922,45 @@ static const struct LevelUpMove sBaltoyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CONFUSION), LEVEL_UP_MOVE( 4, MOVE_RAPID_SPIN), LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(10, MOVE_ROCK_TOMB), - LEVEL_UP_MOVE(13, MOVE_PSYBEAM), - LEVEL_UP_MOVE(17, MOVE_POWER_TRICK), - LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(25, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(28, MOVE_EXTRASENSORY), - LEVEL_UP_MOVE(31, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(10, MOVE_HEAL_BLOCK), + LEVEL_UP_MOVE(13, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(19, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(22, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(25, MOVE_POWER_TRICK), + LEVEL_UP_MOVE(28, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(31, MOVE_EXTRASENSORY), LEVEL_UP_MOVE(34, MOVE_GUARD_SPLIT), LEVEL_UP_MOVE(34, MOVE_POWER_SPLIT), LEVEL_UP_MOVE(37, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(41, MOVE_SANDSTORM), - LEVEL_UP_MOVE(45, MOVE_HEAL_BLOCK), - LEVEL_UP_MOVE(49, MOVE_EXPLOSION), + LEVEL_UP_MOVE(40, MOVE_SANDSTORM), + LEVEL_UP_MOVE(43, MOVE_IMPRISON), + LEVEL_UP_MOVE(46, MOVE_EXPLOSION), LEVEL_UP_END }; static const struct LevelUpMove sClaydolLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), LEVEL_UP_MOVE( 4, MOVE_RAPID_SPIN), LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(10, MOVE_ROCK_TOMB), - LEVEL_UP_MOVE(13, MOVE_PSYBEAM), - LEVEL_UP_MOVE(17, MOVE_POWER_TRICK), - LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(25, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(28, MOVE_EXTRASENSORY), - LEVEL_UP_MOVE(31, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(10, MOVE_HEAL_BLOCK), + LEVEL_UP_MOVE(13, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(19, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(22, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(25, MOVE_POWER_TRICK), + LEVEL_UP_MOVE(28, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(31, MOVE_EXTRASENSORY), LEVEL_UP_MOVE(34, MOVE_GUARD_SPLIT), LEVEL_UP_MOVE(34, MOVE_POWER_SPLIT), LEVEL_UP_MOVE(36, MOVE_HYPER_BEAM), LEVEL_UP_MOVE(40, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(47, MOVE_SANDSTORM), - LEVEL_UP_MOVE(54, MOVE_HEAL_BLOCK), - LEVEL_UP_MOVE(61, MOVE_EXPLOSION), + LEVEL_UP_MOVE(46, MOVE_SANDSTORM), + LEVEL_UP_MOVE(52, MOVE_IMPRISON), + LEVEL_UP_MOVE(58, MOVE_EXPLOSION), LEVEL_UP_END }; #endif //P_FAMILY_BALTOY @@ -8848,77 +8969,82 @@ static const struct LevelUpMove sClaydolLevelUpLearnset[] = { static const struct LevelUpMove sLileepLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), - LEVEL_UP_MOVE( 8, MOVE_ACID), - LEVEL_UP_MOVE(15, MOVE_INGRAIN), - LEVEL_UP_MOVE(22, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(29, MOVE_AMNESIA), - LEVEL_UP_MOVE(36, MOVE_GASTRO_ACID), - LEVEL_UP_MOVE(43, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(50, MOVE_ENERGY_BALL), - LEVEL_UP_MOVE(57, MOVE_SPIT_UP), - LEVEL_UP_MOVE(57, MOVE_STOCKPILE), - LEVEL_UP_MOVE(57, MOVE_SWALLOW), - LEVEL_UP_MOVE(64, MOVE_WRING_OUT), + LEVEL_UP_MOVE( 5, MOVE_ACID), + LEVEL_UP_MOVE( 9, MOVE_INGRAIN), + LEVEL_UP_MOVE(13, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(17, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(21, MOVE_BRINE), + LEVEL_UP_MOVE(26, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(31, MOVE_GASTRO_ACID), + LEVEL_UP_MOVE(36, MOVE_AMNESIA), + LEVEL_UP_MOVE(41, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(46, MOVE_STOCKPILE), + LEVEL_UP_MOVE(46, MOVE_SPIT_UP), + LEVEL_UP_MOVE(46, MOVE_SWALLOW), + LEVEL_UP_MOVE(52, MOVE_WRING_OUT), LEVEL_UP_END }; static const struct LevelUpMove sCradilyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ACID), + LEVEL_UP_MOVE( 1, MOVE_WRING_OUT), LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_ACID), LEVEL_UP_MOVE( 1, MOVE_INGRAIN), - LEVEL_UP_MOVE( 1, MOVE_SPIT_UP), - LEVEL_UP_MOVE( 1, MOVE_STOCKPILE), - LEVEL_UP_MOVE( 1, MOVE_SWALLOW), - LEVEL_UP_MOVE( 1, MOVE_WRING_OUT), - LEVEL_UP_MOVE( 8, MOVE_ACID), - LEVEL_UP_MOVE(15, MOVE_INGRAIN), - LEVEL_UP_MOVE(22, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(29, MOVE_AMNESIA), - LEVEL_UP_MOVE(36, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(46, MOVE_GASTRO_ACID), - LEVEL_UP_MOVE(56, MOVE_ENERGY_BALL), - LEVEL_UP_MOVE(66, MOVE_SPIT_UP), - LEVEL_UP_MOVE(66, MOVE_STOCKPILE), - LEVEL_UP_MOVE(66, MOVE_SWALLOW), - LEVEL_UP_MOVE(76, MOVE_WRING_OUT), + LEVEL_UP_MOVE( 5, MOVE_ACID), + LEVEL_UP_MOVE( 9, MOVE_INGRAIN), + LEVEL_UP_MOVE(13, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(17, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(21, MOVE_BRINE), + LEVEL_UP_MOVE(26, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(31, MOVE_GASTRO_ACID), + LEVEL_UP_MOVE(36, MOVE_AMNESIA), + LEVEL_UP_MOVE(44, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(52, MOVE_STOCKPILE), + LEVEL_UP_MOVE(52, MOVE_SPIT_UP), + LEVEL_UP_MOVE(52, MOVE_SWALLOW), + LEVEL_UP_MOVE(61, MOVE_WRING_OUT), LEVEL_UP_END }; #endif //P_FAMILY_LILEEP #if P_FAMILY_ANORITH static const struct LevelUpMove sAnorithLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HARDEN), LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 7, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(13, MOVE_WATER_GUN), - LEVEL_UP_MOVE(19, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(25, MOVE_PROTECT), - LEVEL_UP_MOVE(31, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(37, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(43, MOVE_SLASH), - LEVEL_UP_MOVE(49, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(55, MOVE_CRUSH_CLAW), - LEVEL_UP_MOVE(61, MOVE_X_SCISSOR), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 4, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 7, MOVE_WATER_GUN), + LEVEL_UP_MOVE(10, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(13, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(17, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(25, MOVE_BUG_BITE), + LEVEL_UP_MOVE(29, MOVE_BRINE), + LEVEL_UP_MOVE(34, MOVE_SLASH), + LEVEL_UP_MOVE(39, MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE(44, MOVE_X_SCISSOR), + LEVEL_UP_MOVE(49, MOVE_PROTECT), + LEVEL_UP_MOVE(55, MOVE_ROCK_BLAST), LEVEL_UP_END }; static const struct LevelUpMove sArmaldoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CRUSH_CLAW), LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_HARDEN), LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 7, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(13, MOVE_WATER_GUN), - LEVEL_UP_MOVE(19, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(25, MOVE_PROTECT), - LEVEL_UP_MOVE(31, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(37, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(46, MOVE_SLASH), - LEVEL_UP_MOVE(55, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(67, MOVE_CRUSH_CLAW), - LEVEL_UP_MOVE(73, MOVE_X_SCISSOR), + LEVEL_UP_MOVE( 4, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 7, MOVE_WATER_GUN), + LEVEL_UP_MOVE(10, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(13, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(17, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(29, MOVE_SLASH), + LEVEL_UP_MOVE(29, MOVE_BRINE), + LEVEL_UP_MOVE(39, MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE(46, MOVE_X_SCISSOR), + LEVEL_UP_MOVE(53, MOVE_PROTECT), + LEVEL_UP_MOVE(61, MOVE_ROCK_BLAST), LEVEL_UP_END }; #endif //P_FAMILY_ANORITH @@ -8934,18 +9060,21 @@ static const struct LevelUpMove sFeebasLevelUpLearnset[] = { static const struct LevelUpMove sMiloticLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WRAP), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 5, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 9, MOVE_REFRESH), - LEVEL_UP_MOVE(13, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(17, MOVE_TWISTER), - LEVEL_UP_MOVE(21, MOVE_RECOVER), - LEVEL_UP_MOVE(25, MOVE_CAPTIVATE), - LEVEL_UP_MOVE(29, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(33, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(37, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(41, MOVE_ATTRACT), - LEVEL_UP_MOVE(45, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(49, MOVE_AQUA_RING), + LEVEL_UP_MOVE( 4, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 7, MOVE_REFRESH), + LEVEL_UP_MOVE(11, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(14, MOVE_TWISTER), + LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(21, MOVE_AQUA_RING), + LEVEL_UP_MOVE(24, MOVE_CAPTIVATE), + LEVEL_UP_MOVE(27, MOVE_DRAGON_TAIL), + LEVEL_UP_MOVE(31, MOVE_RECOVER), + LEVEL_UP_MOVE(34, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(37, MOVE_ATTRACT), + LEVEL_UP_MOVE(41, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(44, MOVE_COIL), + LEVEL_UP_MOVE(47, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(51, MOVE_RAIN_DANCE), LEVEL_UP_END }; #endif //P_FAMILY_FEEBAS @@ -8953,43 +9082,43 @@ static const struct LevelUpMove sMiloticLevelUpLearnset[] = { #if P_FAMILY_CASTFORM static const struct LevelUpMove sCastformLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), LEVEL_UP_MOVE(10, MOVE_EMBER), LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE(10, MOVE_WATER_GUN), LEVEL_UP_MOVE(15, MOVE_HEADBUTT), - LEVEL_UP_MOVE(20, MOVE_HAIL), LEVEL_UP_MOVE(20, MOVE_RAIN_DANCE), LEVEL_UP_MOVE(20, MOVE_SUNNY_DAY), - LEVEL_UP_MOVE(30, MOVE_WEATHER_BALL), - LEVEL_UP_MOVE(40, MOVE_BLIZZARD), - LEVEL_UP_MOVE(40, MOVE_FIRE_BLAST), - LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(20, MOVE_HAIL), + LEVEL_UP_MOVE(25, MOVE_WEATHER_BALL), + LEVEL_UP_MOVE(35, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(35, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(35, MOVE_BLIZZARD), + LEVEL_UP_MOVE(45, MOVE_HURRICANE), LEVEL_UP_END }; #endif //P_FAMILY_CASTFORM #if P_FAMILY_KECLEON static const struct LevelUpMove sKecleonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE( 1, MOVE_THIEF), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_MOVE( 1, MOVE_LICK), LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_SYNCHRONOISE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_THIEF), LEVEL_UP_MOVE( 4, MOVE_BIND), - LEVEL_UP_MOVE( 7, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(10, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(14, MOVE_FEINT), + LEVEL_UP_MOVE( 7, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(10, MOVE_FEINT), + LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(16, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(18, MOVE_PSYBEAM), - LEVEL_UP_MOVE(22, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(27, MOVE_SLASH), - LEVEL_UP_MOVE(32, MOVE_SCREECH), - LEVEL_UP_MOVE(37, MOVE_SUBSTITUTE), - LEVEL_UP_MOVE(43, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(49, MOVE_SHADOW_CLAW), - LEVEL_UP_MOVE(55, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(58, MOVE_SYNCHRONOISE), + LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(25, MOVE_SLASH), + LEVEL_UP_MOVE(30, MOVE_CAMOUFLAGE), + LEVEL_UP_MOVE(33, MOVE_SHADOW_CLAW), + LEVEL_UP_MOVE(38, MOVE_SCREECH), + LEVEL_UP_MOVE(42, MOVE_SUBSTITUTE), + LEVEL_UP_MOVE(46, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(50, MOVE_SYNCHRONOISE), LEVEL_UP_END }; #endif //P_FAMILY_KECLEON @@ -9000,39 +9129,42 @@ static const struct LevelUpMove sShuppetLevelUpLearnset[] = { LEVEL_UP_MOVE( 4, MOVE_SCREECH), LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), LEVEL_UP_MOVE(10, MOVE_SPITE), - LEVEL_UP_MOVE(13, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(16, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(19, MOVE_CURSE), - LEVEL_UP_MOVE(22, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(26, MOVE_HEX), + LEVEL_UP_MOVE(13, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(16, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(22, MOVE_HEX), + LEVEL_UP_MOVE(26, MOVE_CURSE), LEVEL_UP_MOVE(30, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(34, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(38, MOVE_EMBARGO), + LEVEL_UP_MOVE(34, MOVE_EMBARGO), + LEVEL_UP_MOVE(38, MOVE_SUCKER_PUNCH), LEVEL_UP_MOVE(42, MOVE_SNATCH), LEVEL_UP_MOVE(46, MOVE_GRUDGE), LEVEL_UP_MOVE(50, MOVE_TRICK), + LEVEL_UP_MOVE(54, MOVE_PHANTOM_FORCE), LEVEL_UP_END }; static const struct LevelUpMove sBanetteLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 1, MOVE_PHANTOM_FORCE), LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 1, MOVE_SPITE), LEVEL_UP_MOVE( 4, MOVE_SCREECH), LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), LEVEL_UP_MOVE(10, MOVE_SPITE), - LEVEL_UP_MOVE(13, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(16, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(19, MOVE_CURSE), - LEVEL_UP_MOVE(22, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(26, MOVE_HEX), + LEVEL_UP_MOVE(13, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(16, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(22, MOVE_HEX), + LEVEL_UP_MOVE(26, MOVE_CURSE), LEVEL_UP_MOVE(30, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(34, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(40, MOVE_EMBARGO), + LEVEL_UP_MOVE(34, MOVE_EMBARGO), + LEVEL_UP_MOVE(40, MOVE_SUCKER_PUNCH), LEVEL_UP_MOVE(46, MOVE_SNATCH), LEVEL_UP_MOVE(52, MOVE_GRUDGE), LEVEL_UP_MOVE(58, MOVE_TRICK), + LEVEL_UP_MOVE(64, MOVE_PHANTOM_FORCE), LEVEL_UP_END }; #endif //P_FAMILY_SHUPPET @@ -9042,68 +9174,75 @@ static const struct LevelUpMove sDuskullLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), LEVEL_UP_MOVE( 6, MOVE_DISABLE), - LEVEL_UP_MOVE( 9, MOVE_FORESIGHT), - LEVEL_UP_MOVE(14, MOVE_ASTONISH), - LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(22, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(25, MOVE_PURSUIT), - LEVEL_UP_MOVE(30, MOVE_CURSE), - LEVEL_UP_MOVE(33, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(14, MOVE_FORESIGHT), + LEVEL_UP_MOVE(17, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(22, MOVE_PURSUIT), + LEVEL_UP_MOVE(25, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(30, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(33, MOVE_CURSE), LEVEL_UP_MOVE(38, MOVE_HEX), - LEVEL_UP_MOVE(41, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(46, MOVE_PAYBACK), - LEVEL_UP_MOVE(49, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(41, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(46, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(49, MOVE_PAYBACK), + LEVEL_UP_MOVE(54, MOVE_FUTURE_SIGHT), LEVEL_UP_END }; static const struct LevelUpMove sDusclopsLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BIND), - LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_FUTURE_SIGHT), LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_GRAVITY), LEVEL_UP_MOVE( 1, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_GRAVITY), + LEVEL_UP_MOVE( 1, MOVE_BIND), LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_MOVE( 6, MOVE_DISABLE), - LEVEL_UP_MOVE( 9, MOVE_FORESIGHT), - LEVEL_UP_MOVE(14, MOVE_ASTONISH), - LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(22, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(25, MOVE_PURSUIT), - LEVEL_UP_MOVE(30, MOVE_CURSE), - LEVEL_UP_MOVE(33, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(14, MOVE_FORESIGHT), + LEVEL_UP_MOVE(17, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(22, MOVE_PURSUIT), + LEVEL_UP_MOVE(25, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(30, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(33, MOVE_CURSE), LEVEL_UP_MOVE(37, MOVE_SHADOW_PUNCH), - LEVEL_UP_MOVE(42, MOVE_HEX), - LEVEL_UP_MOVE(49, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(58, MOVE_PAYBACK), - LEVEL_UP_MOVE(61, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(40, MOVE_HEX), + LEVEL_UP_MOVE(45, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(52, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(57, MOVE_PAYBACK), + LEVEL_UP_MOVE(64, MOVE_FUTURE_SIGHT), LEVEL_UP_END }; #if P_GEN_4_CROSS_EVOS static const struct LevelUpMove sDusknoirLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BIND), - LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_FUTURE_SIGHT), LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_GRAVITY), LEVEL_UP_MOVE( 1, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_GRAVITY), + LEVEL_UP_MOVE( 1, MOVE_BIND), LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_MOVE( 6, MOVE_DISABLE), - LEVEL_UP_MOVE( 9, MOVE_FORESIGHT), - LEVEL_UP_MOVE(14, MOVE_ASTONISH), - LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(22, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(25, MOVE_PURSUIT), - LEVEL_UP_MOVE(30, MOVE_CURSE), - LEVEL_UP_MOVE(33, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(14, MOVE_FORESIGHT), + LEVEL_UP_MOVE(17, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(22, MOVE_PURSUIT), + LEVEL_UP_MOVE(25, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(30, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(33, MOVE_CURSE), LEVEL_UP_MOVE(37, MOVE_SHADOW_PUNCH), - LEVEL_UP_MOVE(42, MOVE_HEX), - LEVEL_UP_MOVE(49, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(58, MOVE_PAYBACK), - LEVEL_UP_MOVE(61, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(40, MOVE_HEX), + LEVEL_UP_MOVE(45, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(52, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(57, MOVE_PAYBACK), + LEVEL_UP_MOVE(64, MOVE_FUTURE_SIGHT), LEVEL_UP_END }; #endif //P_GEN_4_CROSS_EVOS @@ -9111,25 +9250,23 @@ static const struct LevelUpMove sDusknoirLevelUpLearnset[] = { #if P_FAMILY_TROPIUS static const struct LevelUpMove sTropiusLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BESTOW), - LEVEL_UP_MOVE( 1, MOVE_GUST), LEVEL_UP_MOVE( 1, MOVE_LEAF_STORM), LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_NATURAL_GIFT), - LEVEL_UP_MOVE( 7, MOVE_GROWTH), - LEVEL_UP_MOVE(11, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE(17, MOVE_STOMP), - LEVEL_UP_MOVE(21, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(31, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE(37, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(41, MOVE_SYNTHESIS), - LEVEL_UP_MOVE(47, MOVE_LEAF_TORNADO), - LEVEL_UP_MOVE(50, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(57, MOVE_BESTOW), - LEVEL_UP_MOVE(61, MOVE_SOLAR_BEAM), - LEVEL_UP_MOVE(67, MOVE_NATURAL_GIFT), - LEVEL_UP_MOVE(71, MOVE_LEAF_STORM), + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 6, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(10, MOVE_STOMP), + LEVEL_UP_MOVE(16, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(21, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(26, MOVE_LEAF_TORNADO), + LEVEL_UP_MOVE(30, MOVE_NATURAL_GIFT), + LEVEL_UP_MOVE(36, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(41, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(46, MOVE_BESTOW), + LEVEL_UP_MOVE(50, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(56, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(61, MOVE_LEAF_STORM), LEVEL_UP_END }; #endif //P_FAMILY_TROPIUS @@ -9138,12 +9275,13 @@ static const struct LevelUpMove sTropiusLevelUpLearnset[] = { #if P_GEN_4_CROSS_EVOS static const struct LevelUpMove sChinglingLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 6, MOVE_GROWL), - LEVEL_UP_MOVE( 9, MOVE_ASTONISH), - LEVEL_UP_MOVE(14, MOVE_CONFUSION), - LEVEL_UP_MOVE(17, MOVE_UPROAR), - LEVEL_UP_MOVE(22, MOVE_LAST_RESORT), - LEVEL_UP_MOVE(25, MOVE_ENTRAINMENT), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(10, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_YAWN), + LEVEL_UP_MOVE(16, MOVE_LAST_RESORT), + LEVEL_UP_MOVE(19, MOVE_ENTRAINMENT), + LEVEL_UP_MOVE(32, MOVE_UPROAR), LEVEL_UP_END }; #endif //P_GEN_4_CROSS_EVOS @@ -9152,19 +9290,22 @@ static const struct LevelUpMove sChimechoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HEALING_WISH), LEVEL_UP_MOVE( 1, MOVE_SYNCHRONOISE), LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 6, MOVE_GROWL), - LEVEL_UP_MOVE( 9, MOVE_ASTONISH), - LEVEL_UP_MOVE(14, MOVE_CONFUSION), - LEVEL_UP_MOVE(17, MOVE_UPROAR), - LEVEL_UP_MOVE(22, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(25, MOVE_YAWN), - LEVEL_UP_MOVE(30, MOVE_PSYWAVE), - LEVEL_UP_MOVE(33, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(38, MOVE_HEAL_BELL), - LEVEL_UP_MOVE(41, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(46, MOVE_EXTRASENSORY), - LEVEL_UP_MOVE(49, MOVE_HEAL_PULSE), - LEVEL_UP_MOVE(54, MOVE_SYNCHRONOISE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(10, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_YAWN), + LEVEL_UP_MOVE(16, MOVE_PSYWAVE), + LEVEL_UP_MOVE(19, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(22, MOVE_EXTRASENSORY), + LEVEL_UP_MOVE(27, MOVE_HEAL_BELL), + LEVEL_UP_MOVE(32, MOVE_UPROAR), + LEVEL_UP_MOVE(37, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(42, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(47, MOVE_HEAL_PULSE), + LEVEL_UP_MOVE(52, MOVE_SYNCHRONOISE), LEVEL_UP_MOVE(57, MOVE_HEALING_WISH), LEVEL_UP_END }; @@ -9172,88 +9313,92 @@ static const struct LevelUpMove sChimechoLevelUpLearnset[] = { #if P_FAMILY_ABSOL static const struct LevelUpMove sAbsolLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_DETECT), - LEVEL_UP_MOVE( 1, MOVE_FEINT), - LEVEL_UP_MOVE( 1, MOVE_ME_FIRST), LEVEL_UP_MOVE( 1, MOVE_PERISH_SONG), - LEVEL_UP_MOVE( 1, MOVE_RAZOR_WIND), + LEVEL_UP_MOVE( 1, MOVE_FUTURE_SIGHT), LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_TAUNT), + LEVEL_UP_MOVE( 1, MOVE_FEINT), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), LEVEL_UP_MOVE( 4, MOVE_LEER), - LEVEL_UP_MOVE( 9, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(12, MOVE_PURSUIT), - LEVEL_UP_MOVE(17, MOVE_TAUNT), - LEVEL_UP_MOVE(20, MOVE_BITE), - LEVEL_UP_MOVE(25, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(28, MOVE_SLASH), - LEVEL_UP_MOVE(33, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(36, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(41, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE(44, MOVE_DETECT), - LEVEL_UP_MOVE(47, MOVE_PSYCHO_CUT), - LEVEL_UP_MOVE(50, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(57, MOVE_RAZOR_WIND), - LEVEL_UP_MOVE(60, MOVE_ME_FIRST), - LEVEL_UP_MOVE(65, MOVE_PERISH_SONG), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(10, MOVE_PURSUIT), + LEVEL_UP_MOVE(13, MOVE_TAUNT), + LEVEL_UP_MOVE(16, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(22, MOVE_SLASH), + LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(29, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(33, MOVE_DETECT), + LEVEL_UP_MOVE(37, MOVE_PSYCHO_CUT), + LEVEL_UP_MOVE(41, MOVE_ME_FIRST), + LEVEL_UP_MOVE(45, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(49, MOVE_RAZOR_WIND), + LEVEL_UP_MOVE(53, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(57, MOVE_PERISH_SONG), LEVEL_UP_END }; #endif //P_FAMILY_ABSOL #if P_FAMILY_SNORUNT static const struct LevelUpMove sSnoruntLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 4, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(10, MOVE_BITE), - LEVEL_UP_MOVE(13, MOVE_ICY_WIND), - LEVEL_UP_MOVE(19, MOVE_HEADBUTT), - LEVEL_UP_MOVE(22, MOVE_PROTECT), - LEVEL_UP_MOVE(28, MOVE_ICE_FANG), - LEVEL_UP_MOVE(31, MOVE_CRUNCH), - LEVEL_UP_MOVE(37, MOVE_ICE_SHARD), - LEVEL_UP_MOVE(40, MOVE_HAIL), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 5, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(10, MOVE_ICE_SHARD), + LEVEL_UP_MOVE(14, MOVE_ICY_WIND), + LEVEL_UP_MOVE(19, MOVE_BITE), + LEVEL_UP_MOVE(23, MOVE_ICE_FANG), + LEVEL_UP_MOVE(28, MOVE_HEADBUTT), + LEVEL_UP_MOVE(32, MOVE_PROTECT), + LEVEL_UP_MOVE(37, MOVE_FROST_BREATH), + LEVEL_UP_MOVE(41, MOVE_CRUNCH), LEVEL_UP_MOVE(46, MOVE_BLIZZARD), + LEVEL_UP_MOVE(50, MOVE_HAIL), LEVEL_UP_END }; static const struct LevelUpMove sGlalieLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), LEVEL_UP_MOVE( 1, MOVE_SHEER_COLD), - LEVEL_UP_MOVE( 4, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(10, MOVE_BITE), - LEVEL_UP_MOVE(13, MOVE_ICY_WIND), - LEVEL_UP_MOVE(19, MOVE_HEADBUTT), - LEVEL_UP_MOVE(22, MOVE_PROTECT), - LEVEL_UP_MOVE(28, MOVE_ICE_FANG), - LEVEL_UP_MOVE(31, MOVE_CRUNCH), - LEVEL_UP_MOVE(37, MOVE_ICE_BEAM), - LEVEL_UP_MOVE(40, MOVE_HAIL), - LEVEL_UP_MOVE(51, MOVE_BLIZZARD), - LEVEL_UP_MOVE(59, MOVE_SHEER_COLD), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_ICE_SHARD), + LEVEL_UP_MOVE( 5, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(10, MOVE_ICE_SHARD), + LEVEL_UP_MOVE(14, MOVE_ICY_WIND), + LEVEL_UP_MOVE(19, MOVE_BITE), + LEVEL_UP_MOVE(23, MOVE_ICE_FANG), + LEVEL_UP_MOVE(28, MOVE_HEADBUTT), + LEVEL_UP_MOVE(32, MOVE_PROTECT), + LEVEL_UP_MOVE(37, MOVE_FROST_BREATH), + LEVEL_UP_MOVE(41, MOVE_CRUNCH), + LEVEL_UP_MOVE(42, MOVE_FREEZE_DRY), + LEVEL_UP_MOVE(48, MOVE_BLIZZARD), + LEVEL_UP_MOVE(54, MOVE_HAIL), + LEVEL_UP_MOVE(61, MOVE_SHEER_COLD), LEVEL_UP_END }; #if P_GEN_4_CROSS_EVOS static const struct LevelUpMove sFroslassLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 4, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(10, MOVE_ASTONISH), - LEVEL_UP_MOVE(13, MOVE_ICY_WIND), - LEVEL_UP_MOVE(19, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(22, MOVE_OMINOUS_WIND), - LEVEL_UP_MOVE(28, MOVE_WAKE_UP_SLAP), - LEVEL_UP_MOVE(31, MOVE_CAPTIVATE), - LEVEL_UP_MOVE(37, MOVE_ICE_SHARD), - LEVEL_UP_MOVE(40, MOVE_HAIL), - LEVEL_UP_MOVE(51, MOVE_BLIZZARD), - LEVEL_UP_MOVE(59, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_ICE_SHARD), + LEVEL_UP_MOVE( 5, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(10, MOVE_ICE_SHARD), + LEVEL_UP_MOVE(14, MOVE_ICY_WIND), + LEVEL_UP_MOVE(19, MOVE_ASTONISH), + LEVEL_UP_MOVE(23, MOVE_DRAINING_KISS), + LEVEL_UP_MOVE(28, MOVE_OMINOUS_WIND), + LEVEL_UP_MOVE(32, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(37, MOVE_WAKE_UP_SLAP), + LEVEL_UP_MOVE(41, MOVE_CAPTIVATE), + LEVEL_UP_MOVE(42, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(48, MOVE_BLIZZARD), + LEVEL_UP_MOVE(54, MOVE_HAIL), + LEVEL_UP_MOVE(61, MOVE_DESTINY_BOND), LEVEL_UP_END }; #endif //P_GEN_4_CROSS_EVOS @@ -9262,56 +9407,62 @@ static const struct LevelUpMove sFroslassLevelUpLearnset[] = { #if P_FAMILY_SPHEAL static const struct LevelUpMove sSphealLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE( 5, MOVE_ROLLOUT), + LEVEL_UP_MOVE( 9, MOVE_ENCORE), LEVEL_UP_MOVE(13, MOVE_ICE_BALL), - LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(31, MOVE_HAIL), - LEVEL_UP_MOVE(37, MOVE_REST), - LEVEL_UP_MOVE(37, MOVE_SNORE), - LEVEL_UP_MOVE(43, MOVE_BLIZZARD), - LEVEL_UP_MOVE(49, MOVE_SHEER_COLD), + LEVEL_UP_MOVE(17, MOVE_BRINE), + LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(26, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(31, MOVE_REST), + LEVEL_UP_MOVE(31, MOVE_SNORE), + LEVEL_UP_MOVE(36, MOVE_HAIL), + LEVEL_UP_MOVE(41, MOVE_BLIZZARD), + LEVEL_UP_MOVE(46, MOVE_SHEER_COLD), LEVEL_UP_END }; static const struct LevelUpMove sSealeoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ENCORE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE( 5, MOVE_ROLLOUT), + LEVEL_UP_MOVE( 9, MOVE_ENCORE), LEVEL_UP_MOVE(13, MOVE_ICE_BALL), - LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(31, MOVE_HAIL), + LEVEL_UP_MOVE(17, MOVE_BRINE), + LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(26, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(31, MOVE_REST), + LEVEL_UP_MOVE(31, MOVE_SNORE), LEVEL_UP_MOVE(32, MOVE_SWAGGER), - LEVEL_UP_MOVE(39, MOVE_REST), - LEVEL_UP_MOVE(39, MOVE_SNORE), - LEVEL_UP_MOVE(47, MOVE_BLIZZARD), - LEVEL_UP_MOVE(55, MOVE_SHEER_COLD), + LEVEL_UP_MOVE(38, MOVE_HAIL), + LEVEL_UP_MOVE(45, MOVE_BLIZZARD), + LEVEL_UP_MOVE(52, MOVE_SHEER_COLD), LEVEL_UP_END }; static const struct LevelUpMove sWalreinLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CRUNCH), - LEVEL_UP_MOVE( 1, MOVE_ENCORE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_ROLLOUT), LEVEL_UP_MOVE( 7, MOVE_ENCORE), LEVEL_UP_MOVE(13, MOVE_ICE_BALL), - LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(31, MOVE_HAIL), + LEVEL_UP_MOVE(19, MOVE_BRINE), + LEVEL_UP_MOVE(19, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(25, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(31, MOVE_REST), + LEVEL_UP_MOVE(31, MOVE_SNORE), LEVEL_UP_MOVE(32, MOVE_SWAGGER), - LEVEL_UP_MOVE(39, MOVE_REST), - LEVEL_UP_MOVE(39, MOVE_SNORE), + LEVEL_UP_MOVE(38, MOVE_HAIL), LEVEL_UP_MOVE(44, MOVE_ICE_FANG), - LEVEL_UP_MOVE(52, MOVE_BLIZZARD), - LEVEL_UP_MOVE(65, MOVE_SHEER_COLD), + LEVEL_UP_MOVE(49, MOVE_BLIZZARD), + LEVEL_UP_MOVE(60, MOVE_SHEER_COLD), LEVEL_UP_END }; #endif //P_FAMILY_SPHEAL @@ -9328,32 +9479,38 @@ static const struct LevelUpMove sClamperlLevelUpLearnset[] = { static const struct LevelUpMove sHuntailLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), - LEVEL_UP_MOVE( 6, MOVE_BITE), - LEVEL_UP_MOVE(10, MOVE_SCREECH), - LEVEL_UP_MOVE(15, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(19, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(24, MOVE_ICE_FANG), - LEVEL_UP_MOVE(28, MOVE_BRINE), - LEVEL_UP_MOVE(33, MOVE_BATON_PASS), - LEVEL_UP_MOVE(37, MOVE_DIVE), - LEVEL_UP_MOVE(42, MOVE_CRUNCH), - LEVEL_UP_MOVE(46, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 5, MOVE_SCREECH), + LEVEL_UP_MOVE( 9, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(11, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(14, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(16, MOVE_ICE_FANG), + LEVEL_UP_MOVE(19, MOVE_BRINE), + LEVEL_UP_MOVE(23, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(26, MOVE_DIVE), + LEVEL_UP_MOVE(29, MOVE_BATON_PASS), + LEVEL_UP_MOVE(34, MOVE_CRUNCH), + LEVEL_UP_MOVE(39, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(45, MOVE_COIL), LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), LEVEL_UP_END }; static const struct LevelUpMove sGorebyssLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), - LEVEL_UP_MOVE( 6, MOVE_CONFUSION), - LEVEL_UP_MOVE(10, MOVE_AGILITY), - LEVEL_UP_MOVE(15, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(19, MOVE_AMNESIA), - LEVEL_UP_MOVE(24, MOVE_AQUA_RING), - LEVEL_UP_MOVE(28, MOVE_CAPTIVATE), - LEVEL_UP_MOVE(33, MOVE_BATON_PASS), - LEVEL_UP_MOVE(37, MOVE_DIVE), - LEVEL_UP_MOVE(42, MOVE_PSYCHIC), - LEVEL_UP_MOVE(46, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 5, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 9, MOVE_AGILITY), + LEVEL_UP_MOVE(11, MOVE_DRAINING_KISS), + LEVEL_UP_MOVE(14, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(16, MOVE_AMNESIA), + LEVEL_UP_MOVE(19, MOVE_AQUA_RING), + LEVEL_UP_MOVE(23, MOVE_CAPTIVATE), + LEVEL_UP_MOVE(26, MOVE_DIVE), + LEVEL_UP_MOVE(29, MOVE_BATON_PASS), + LEVEL_UP_MOVE(34, MOVE_PSYCHIC), + LEVEL_UP_MOVE(39, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(45, MOVE_COIL), LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), LEVEL_UP_END }; @@ -9361,23 +9518,22 @@ static const struct LevelUpMove sGorebyssLevelUpLearnset[] = { #if P_FAMILY_RELICANTH static const struct LevelUpMove sRelicanthLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), LEVEL_UP_MOVE( 1, MOVE_HEAD_SMASH), - LEVEL_UP_MOVE( 1, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 8, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), - LEVEL_UP_MOVE(22, MOVE_YAWN), - LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(36, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(43, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(26, MOVE_DIVE), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(35, MOVE_YAWN), + LEVEL_UP_MOVE(41, MOVE_REST), + LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(57, MOVE_DIVE), - LEVEL_UP_MOVE(64, MOVE_REST), - LEVEL_UP_MOVE(71, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(78, MOVE_HEAD_SMASH), + LEVEL_UP_MOVE(56, MOVE_HEAD_SMASH), LEVEL_UP_END }; #endif //P_FAMILY_RELICANTH @@ -9385,18 +9541,19 @@ static const struct LevelUpMove sRelicanthLevelUpLearnset[] = { #if P_FAMILY_LUVDISC static const struct LevelUpMove sLuvdiscLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 4, MOVE_CHARM), - LEVEL_UP_MOVE( 7, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 9, MOVE_AGILITY), - LEVEL_UP_MOVE(14, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(17, MOVE_LUCKY_CHANT), - LEVEL_UP_MOVE(22, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(27, MOVE_ATTRACT), - LEVEL_UP_MOVE(31, MOVE_FLAIL), - LEVEL_UP_MOVE(37, MOVE_SWEET_KISS), - LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(46, MOVE_AQUA_RING), - LEVEL_UP_MOVE(50, MOVE_CAPTIVATE), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 4, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_AGILITY), + LEVEL_UP_MOVE( 9, MOVE_DRAINING_KISS), + LEVEL_UP_MOVE(14, MOVE_LUCKY_CHANT), + LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(22, MOVE_ATTRACT), + LEVEL_UP_MOVE(27, MOVE_FLAIL), + LEVEL_UP_MOVE(31, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(40, MOVE_AQUA_RING), + LEVEL_UP_MOVE(46, MOVE_CAPTIVATE), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), LEVEL_UP_MOVE(55, MOVE_SAFEGUARD), LEVEL_UP_END }; @@ -9405,62 +9562,64 @@ static const struct LevelUpMove sLuvdiscLevelUpLearnset[] = { #if P_FAMILY_BAGON static const struct LevelUpMove sBagonLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_RAGE), - LEVEL_UP_MOVE( 5, MOVE_BITE), - LEVEL_UP_MOVE(10, MOVE_LEER), - LEVEL_UP_MOVE(16, MOVE_HEADBUTT), - LEVEL_UP_MOVE(20, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(25, MOVE_EMBER), - LEVEL_UP_MOVE(31, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(35, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(40, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(46, MOVE_CRUNCH), - LEVEL_UP_MOVE(50, MOVE_DRAGON_CLAW), - LEVEL_UP_MOVE(55, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 4, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(17, MOVE_HEADBUTT), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_CRUNCH), + LEVEL_UP_MOVE(29, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(34, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(39, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(44, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), LEVEL_UP_END }; static const struct LevelUpMove sShelgonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), - LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_RAGE), - LEVEL_UP_MOVE( 5, MOVE_BITE), - LEVEL_UP_MOVE(10, MOVE_LEER), - LEVEL_UP_MOVE(16, MOVE_HEADBUTT), - LEVEL_UP_MOVE(20, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(25, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 4, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(17, MOVE_HEADBUTT), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_CRUNCH), + LEVEL_UP_MOVE(29, MOVE_DRAGON_CLAW), LEVEL_UP_MOVE(30, MOVE_PROTECT), - LEVEL_UP_MOVE(32, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(37, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(43, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(50, MOVE_CRUNCH), - LEVEL_UP_MOVE(55, MOVE_DRAGON_CLAW), - LEVEL_UP_MOVE(61, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(35, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(42, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(56, MOVE_DOUBLE_EDGE), LEVEL_UP_END }; static const struct LevelUpMove sSalamenceLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_TAIL), LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), - LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_RAGE), LEVEL_UP_MOVE( 1, MOVE_THUNDER_FANG), - LEVEL_UP_MOVE( 5, MOVE_BITE), - LEVEL_UP_MOVE(10, MOVE_LEER), - LEVEL_UP_MOVE(16, MOVE_HEADBUTT), - LEVEL_UP_MOVE(20, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(25, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 4, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(17, MOVE_HEADBUTT), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_CRUNCH), + LEVEL_UP_MOVE(29, MOVE_DRAGON_CLAW), LEVEL_UP_MOVE(30, MOVE_PROTECT), - LEVEL_UP_MOVE(32, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(37, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(43, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(35, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(42, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER), LEVEL_UP_MOVE(50, MOVE_FLY), - LEVEL_UP_MOVE(53, MOVE_CRUNCH), - LEVEL_UP_MOVE(61, MOVE_DRAGON_CLAW), - LEVEL_UP_MOVE(70, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(80, MOVE_DRAGON_TAIL), + LEVEL_UP_MOVE(63, MOVE_DOUBLE_EDGE), LEVEL_UP_END }; #endif //P_FAMILY_BAGON @@ -9472,19 +9631,19 @@ static const struct LevelUpMove sBeldumLevelUpLearnset[] = { }; static const struct LevelUpMove sMetangLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), LEVEL_UP_MOVE( 1, MOVE_MAGNET_RISE), - LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), LEVEL_UP_MOVE(20, MOVE_CONFUSION), LEVEL_UP_MOVE(20, MOVE_METAL_CLAW), LEVEL_UP_MOVE(23, MOVE_PURSUIT), - LEVEL_UP_MOVE(26, MOVE_MIRACLE_EYE), - LEVEL_UP_MOVE(29, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(32, MOVE_BULLET_PUNCH), + LEVEL_UP_MOVE(26, MOVE_BULLET_PUNCH), + LEVEL_UP_MOVE(29, MOVE_MIRACLE_EYE), + LEVEL_UP_MOVE(32, MOVE_ZEN_HEADBUTT), LEVEL_UP_MOVE(35, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(38, MOVE_AGILITY), - LEVEL_UP_MOVE(41, MOVE_PSYCHIC), + LEVEL_UP_MOVE(38, MOVE_PSYCHIC), + LEVEL_UP_MOVE(41, MOVE_AGILITY), LEVEL_UP_MOVE(44, MOVE_METEOR_MASH), LEVEL_UP_MOVE(47, MOVE_IRON_DEFENSE), LEVEL_UP_MOVE(50, MOVE_HYPER_BEAM), @@ -9492,23 +9651,23 @@ static const struct LevelUpMove sMetangLevelUpLearnset[] = { }; static const struct LevelUpMove sMetagrossLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), LEVEL_UP_MOVE( 1, MOVE_MAGNET_RISE), - LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), LEVEL_UP_MOVE(20, MOVE_CONFUSION), LEVEL_UP_MOVE(20, MOVE_METAL_CLAW), LEVEL_UP_MOVE(23, MOVE_PURSUIT), - LEVEL_UP_MOVE(26, MOVE_MIRACLE_EYE), - LEVEL_UP_MOVE(29, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(32, MOVE_BULLET_PUNCH), + LEVEL_UP_MOVE(26, MOVE_BULLET_PUNCH), + LEVEL_UP_MOVE(29, MOVE_MIRACLE_EYE), + LEVEL_UP_MOVE(32, MOVE_ZEN_HEADBUTT), LEVEL_UP_MOVE(35, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(38, MOVE_AGILITY), - LEVEL_UP_MOVE(41, MOVE_PSYCHIC), + LEVEL_UP_MOVE(38, MOVE_PSYCHIC), + LEVEL_UP_MOVE(41, MOVE_AGILITY), LEVEL_UP_MOVE(44, MOVE_METEOR_MASH), LEVEL_UP_MOVE(45, MOVE_HAMMER_ARM), - LEVEL_UP_MOVE(53, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(62, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(52, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(60, MOVE_HYPER_BEAM), LEVEL_UP_END }; #endif //P_FAMILY_BELDUM @@ -9516,21 +9675,22 @@ static const struct LevelUpMove sMetagrossLevelUpLearnset[] = { #if P_FAMILY_REGIROCK static const struct LevelUpMove sRegirockLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), - LEVEL_UP_MOVE( 1, MOVE_HAMMER_ARM), - LEVEL_UP_MOVE( 1, MOVE_LOCK_ON), LEVEL_UP_MOVE( 1, MOVE_STOMP), - LEVEL_UP_MOVE( 1, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE( 9, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(17, MOVE_CURSE), - LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), - LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(49, MOVE_CHARGE_BEAM), - LEVEL_UP_MOVE(57, MOVE_LOCK_ON), - LEVEL_UP_MOVE(65, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE(73, MOVE_STONE_EDGE), - LEVEL_UP_MOVE(81, MOVE_HAMMER_ARM), - LEVEL_UP_MOVE(89, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 1, MOVE_CHARGE_BEAM), + LEVEL_UP_MOVE( 1, MOVE_BULLDOZE), + LEVEL_UP_MOVE( 7, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(13, MOVE_CHARGE_BEAM), + LEVEL_UP_MOVE(19, MOVE_BULLDOZE), + LEVEL_UP_MOVE(25, MOVE_CURSE), + LEVEL_UP_MOVE(31, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(37, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(43, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(49, MOVE_HAMMER_ARM), + LEVEL_UP_MOVE(55, MOVE_LOCK_ON), + LEVEL_UP_MOVE(55, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(61, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(67, MOVE_HYPER_BEAM), LEVEL_UP_END }; #endif //P_FAMILY_REGIROCK @@ -9538,21 +9698,22 @@ static const struct LevelUpMove sRegirockLevelUpLearnset[] = { #if P_FAMILY_REGICE static const struct LevelUpMove sRegiceLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), - LEVEL_UP_MOVE( 1, MOVE_HAMMER_ARM), - LEVEL_UP_MOVE( 1, MOVE_LOCK_ON), LEVEL_UP_MOVE( 1, MOVE_STOMP), - LEVEL_UP_MOVE( 1, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE( 9, MOVE_ICY_WIND), - LEVEL_UP_MOVE(17, MOVE_CURSE), - LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), - LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(41, MOVE_AMNESIA), - LEVEL_UP_MOVE(49, MOVE_CHARGE_BEAM), - LEVEL_UP_MOVE(57, MOVE_LOCK_ON), - LEVEL_UP_MOVE(65, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE(73, MOVE_ICE_BEAM), - LEVEL_UP_MOVE(81, MOVE_HAMMER_ARM), - LEVEL_UP_MOVE(89, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 1, MOVE_ICY_WIND), + LEVEL_UP_MOVE( 1, MOVE_CHARGE_BEAM), + LEVEL_UP_MOVE( 1, MOVE_BULLDOZE), + LEVEL_UP_MOVE( 7, MOVE_ICY_WIND), + LEVEL_UP_MOVE(13, MOVE_CHARGE_BEAM), + LEVEL_UP_MOVE(19, MOVE_BULLDOZE), + LEVEL_UP_MOVE(25, MOVE_CURSE), + LEVEL_UP_MOVE(31, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(37, MOVE_AMNESIA), + LEVEL_UP_MOVE(43, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(49, MOVE_HAMMER_ARM), + LEVEL_UP_MOVE(55, MOVE_LOCK_ON), + LEVEL_UP_MOVE(55, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(61, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(67, MOVE_HYPER_BEAM), LEVEL_UP_END }; #endif //P_FAMILY_REGICE @@ -9560,122 +9721,116 @@ static const struct LevelUpMove sRegiceLevelUpLearnset[] = { #if P_FAMILY_REGISTEEL static const struct LevelUpMove sRegisteelLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), - LEVEL_UP_MOVE( 1, MOVE_HAMMER_ARM), - LEVEL_UP_MOVE( 1, MOVE_IRON_HEAD), - LEVEL_UP_MOVE( 1, MOVE_LOCK_ON), LEVEL_UP_MOVE( 1, MOVE_STOMP), - LEVEL_UP_MOVE( 1, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE( 9, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(17, MOVE_CURSE), - LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), - LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(41, MOVE_AMNESIA), - LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(49, MOVE_CHARGE_BEAM), - LEVEL_UP_MOVE(57, MOVE_LOCK_ON), - LEVEL_UP_MOVE(65, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE(73, MOVE_FLASH_CANNON), - LEVEL_UP_MOVE(73, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(81, MOVE_HAMMER_ARM), - LEVEL_UP_MOVE(89, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 1, MOVE_CHARGE_BEAM), + LEVEL_UP_MOVE( 1, MOVE_BULLDOZE), + LEVEL_UP_MOVE( 7, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(13, MOVE_CHARGE_BEAM), + LEVEL_UP_MOVE(19, MOVE_BULLDOZE), + LEVEL_UP_MOVE(25, MOVE_CURSE), + LEVEL_UP_MOVE(31, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(37, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(37, MOVE_AMNESIA), + LEVEL_UP_MOVE(43, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(43, MOVE_FLASH_CANNON), + LEVEL_UP_MOVE(49, MOVE_HAMMER_ARM), + LEVEL_UP_MOVE(55, MOVE_LOCK_ON), + LEVEL_UP_MOVE(55, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(61, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(67, MOVE_HYPER_BEAM), LEVEL_UP_END }; #endif //P_FAMILY_REGISTEEL #if P_FAMILY_LATIAS static const struct LevelUpMove sLatiasLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CHARM), - LEVEL_UP_MOVE( 1, MOVE_DRAGON_PULSE), - LEVEL_UP_MOVE( 1, MOVE_GUARD_SPLIT), - LEVEL_UP_MOVE( 1, MOVE_HEAL_PULSE), LEVEL_UP_MOVE( 1, MOVE_HEALING_WISH), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1, MOVE_WISH), LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), - LEVEL_UP_MOVE( 1, MOVE_REFLECT_TYPE), - LEVEL_UP_MOVE( 5, MOVE_WISH), - LEVEL_UP_MOVE(10, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 4, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 7, MOVE_CHARM), + LEVEL_UP_MOVE(10, MOVE_STORED_POWER), + LEVEL_UP_MOVE(13, MOVE_REFRESH), + LEVEL_UP_MOVE(16, MOVE_HEAL_PULSE), LEVEL_UP_MOVE(20, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(25, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(30, MOVE_REFRESH), - LEVEL_UP_MOVE(35, MOVE_MIST_BALL), - LEVEL_UP_MOVE(40, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(45, MOVE_RECOVER), - LEVEL_UP_MOVE(50, MOVE_PSYCHO_SHIFT), - LEVEL_UP_MOVE(55, MOVE_CHARM), - LEVEL_UP_MOVE(60, MOVE_PSYCHIC), - LEVEL_UP_MOVE(65, MOVE_HEAL_PULSE), - LEVEL_UP_MOVE(70, MOVE_REFLECT_TYPE), - LEVEL_UP_MOVE(75, MOVE_GUARD_SPLIT), - LEVEL_UP_MOVE(80, MOVE_DRAGON_PULSE), - LEVEL_UP_MOVE(85, MOVE_HEALING_WISH), + LEVEL_UP_MOVE(24, MOVE_MIST_BALL), + LEVEL_UP_MOVE(28, MOVE_PSYCHO_SHIFT), + LEVEL_UP_MOVE(32, MOVE_RECOVER), + LEVEL_UP_MOVE(36, MOVE_REFLECT_TYPE), + LEVEL_UP_MOVE(41, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(46, MOVE_GUARD_SPLIT), + LEVEL_UP_MOVE(51, MOVE_PSYCHIC), + LEVEL_UP_MOVE(56, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(61, MOVE_HEALING_WISH), LEVEL_UP_END }; #endif //P_FAMILY_LATIAS #if P_FAMILY_LATIOS static const struct LevelUpMove sLatiosLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_DRAGON_DANCE), - LEVEL_UP_MOVE( 1, MOVE_DRAGON_PULSE), - LEVEL_UP_MOVE( 1, MOVE_HEAL_PULSE), LEVEL_UP_MOVE( 1, MOVE_MEMENTO), - LEVEL_UP_MOVE( 1, MOVE_POWER_SPLIT), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1, MOVE_HEAL_BLOCK), LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), - LEVEL_UP_MOVE( 1, MOVE_TELEKINESIS), - LEVEL_UP_MOVE( 5, MOVE_HEAL_BLOCK), - LEVEL_UP_MOVE(10, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 4, MOVE_PROTECT), + LEVEL_UP_MOVE( 7, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(10, MOVE_STORED_POWER), + LEVEL_UP_MOVE(13, MOVE_REFRESH), + LEVEL_UP_MOVE(16, MOVE_HEAL_PULSE), LEVEL_UP_MOVE(20, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(25, MOVE_PROTECT), - LEVEL_UP_MOVE(30, MOVE_REFRESH), - LEVEL_UP_MOVE(35, MOVE_LUSTER_PURGE), - LEVEL_UP_MOVE(40, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(45, MOVE_RECOVER), - LEVEL_UP_MOVE(50, MOVE_PSYCHO_SHIFT), - LEVEL_UP_MOVE(55, MOVE_DRAGON_DANCE), - LEVEL_UP_MOVE(60, MOVE_PSYCHIC), - LEVEL_UP_MOVE(65, MOVE_HEAL_PULSE), - LEVEL_UP_MOVE(70, MOVE_TELEKINESIS), - LEVEL_UP_MOVE(75, MOVE_POWER_SPLIT), - LEVEL_UP_MOVE(80, MOVE_DRAGON_PULSE), - LEVEL_UP_MOVE(85, MOVE_MEMENTO), + LEVEL_UP_MOVE(24, MOVE_LUSTER_PURGE), + LEVEL_UP_MOVE(28, MOVE_PSYCHO_SHIFT), + LEVEL_UP_MOVE(32, MOVE_RECOVER), + LEVEL_UP_MOVE(36, MOVE_TELEKINESIS), + LEVEL_UP_MOVE(41, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(46, MOVE_POWER_SPLIT), + LEVEL_UP_MOVE(51, MOVE_PSYCHIC), + LEVEL_UP_MOVE(56, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(61, MOVE_MEMENTO), LEVEL_UP_END }; #endif //P_FAMILY_LATIOS #if P_FAMILY_KYOGRE static const struct LevelUpMove sKyogreLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ANCIENT_POWER), LEVEL_UP_MOVE( 1, MOVE_WATER_PULSE), LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(15, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(20, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(15, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(20, MOVE_BODY_SLAM), LEVEL_UP_MOVE(30, MOVE_AQUA_RING), LEVEL_UP_MOVE(35, MOVE_ICE_BEAM), - LEVEL_UP_MOVE(45, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(50, MOVE_WATER_SPOUT), - LEVEL_UP_MOVE(60, MOVE_CALM_MIND), - LEVEL_UP_MOVE(65, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(75, MOVE_SHEER_COLD), + LEVEL_UP_MOVE(45, MOVE_ORIGIN_PULSE), + LEVEL_UP_MOVE(50, MOVE_CALM_MIND), + LEVEL_UP_MOVE(60, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(65, MOVE_SHEER_COLD), + LEVEL_UP_MOVE(75, MOVE_HYDRO_PUMP), LEVEL_UP_MOVE(80, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(90, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(90, MOVE_WATER_SPOUT), LEVEL_UP_END }; #endif //P_FAMILY_KYOGRE #if P_FAMILY_GROUDON static const struct LevelUpMove sGroudonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ANCIENT_POWER), LEVEL_UP_MOVE( 1, MOVE_MUD_SHOT), LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(15, MOVE_LAVA_PLUME), - LEVEL_UP_MOVE(20, MOVE_HAMMER_ARM), + LEVEL_UP_MOVE(15, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(20, MOVE_LAVA_PLUME), LEVEL_UP_MOVE(30, MOVE_REST), LEVEL_UP_MOVE(35, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(45, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(50, MOVE_ERUPTION), - LEVEL_UP_MOVE(60, MOVE_BULK_UP), - LEVEL_UP_MOVE(65, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(75, MOVE_FISSURE), - LEVEL_UP_MOVE(80, MOVE_SOLAR_BEAM), - LEVEL_UP_MOVE(90, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(45, MOVE_PRECIPICE_BLADES), + LEVEL_UP_MOVE(50, MOVE_BULK_UP), + LEVEL_UP_MOVE(60, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(65, MOVE_FISSURE), + LEVEL_UP_MOVE(75, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(80, MOVE_HAMMER_ARM), + LEVEL_UP_MOVE(90, MOVE_ERUPTION), LEVEL_UP_END }; #endif //P_FAMILY_GROUDON @@ -9684,17 +9839,17 @@ static const struct LevelUpMove sGroudonLevelUpLearnset[] = { static const struct LevelUpMove sRayquazaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TWISTER), LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(15, MOVE_CRUNCH), - LEVEL_UP_MOVE(20, MOVE_HYPER_VOICE), - LEVEL_UP_MOVE(30, MOVE_REST), - LEVEL_UP_MOVE(35, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(45, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(50, MOVE_OUTRAGE), + LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(20, MOVE_CRUNCH), + LEVEL_UP_MOVE(30, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(35, MOVE_REST), + LEVEL_UP_MOVE(45, MOVE_EXTREME_SPEED), + LEVEL_UP_MOVE(50, MOVE_DRAGON_PULSE), LEVEL_UP_MOVE(60, MOVE_DRAGON_DANCE), LEVEL_UP_MOVE(65, MOVE_FLY), - LEVEL_UP_MOVE(75, MOVE_EXTREME_SPEED), - LEVEL_UP_MOVE(80, MOVE_HYPER_BEAM), - LEVEL_UP_MOVE(90, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(75, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(80, MOVE_OUTRAGE), + LEVEL_UP_MOVE(90, MOVE_HYPER_BEAM), LEVEL_UP_END }; #endif //P_FAMILY_RAYQUAZA @@ -9724,74 +9879,74 @@ static const struct LevelUpMove sJirachiLevelUpLearnset[] = { static const struct LevelUpMove sDeoxysNormalLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 9, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(17, MOVE_TELEPORT), - LEVEL_UP_MOVE(25, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(33, MOVE_PURSUIT), - LEVEL_UP_MOVE(41, MOVE_PSYCHIC), - LEVEL_UP_MOVE(49, MOVE_SNATCH), - LEVEL_UP_MOVE(57, MOVE_PSYCHO_SHIFT), - LEVEL_UP_MOVE(65, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(73, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(81, MOVE_RECOVER), - LEVEL_UP_MOVE(89, MOVE_PSYCHO_BOOST), - LEVEL_UP_MOVE(97, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(13, MOVE_TELEPORT), + LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(25, MOVE_PURSUIT), + LEVEL_UP_MOVE(31, MOVE_PSYCHIC), + LEVEL_UP_MOVE(37, MOVE_SNATCH), + LEVEL_UP_MOVE(43, MOVE_PSYCHO_SHIFT), + LEVEL_UP_MOVE(49, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(55, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(61, MOVE_RECOVER), + LEVEL_UP_MOVE(67, MOVE_PSYCHO_BOOST), + LEVEL_UP_MOVE(73, MOVE_HYPER_BEAM), LEVEL_UP_END }; static const struct LevelUpMove sDeoxysAttackLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 9, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(17, MOVE_TELEPORT), - LEVEL_UP_MOVE(25, MOVE_TAUNT), - LEVEL_UP_MOVE(33, MOVE_PURSUIT), - LEVEL_UP_MOVE(41, MOVE_PSYCHIC), - LEVEL_UP_MOVE(49, MOVE_SUPERPOWER), - LEVEL_UP_MOVE(57, MOVE_PSYCHO_SHIFT), - LEVEL_UP_MOVE(65, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(73, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(81, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE(89, MOVE_PSYCHO_BOOST), - LEVEL_UP_MOVE(97, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(13, MOVE_TELEPORT), + LEVEL_UP_MOVE(19, MOVE_TAUNT), + LEVEL_UP_MOVE(25, MOVE_PURSUIT), + LEVEL_UP_MOVE(31, MOVE_PSYCHIC), + LEVEL_UP_MOVE(37, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(43, MOVE_PSYCHO_SHIFT), + LEVEL_UP_MOVE(49, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(55, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(61, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(67, MOVE_PSYCHO_BOOST), + LEVEL_UP_MOVE(73, MOVE_HYPER_BEAM), LEVEL_UP_END }; static const struct LevelUpMove sDeoxysDefenseLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 9, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(17, MOVE_TELEPORT), - LEVEL_UP_MOVE(25, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(33, MOVE_SPIKES), - LEVEL_UP_MOVE(41, MOVE_PSYCHIC), - LEVEL_UP_MOVE(49, MOVE_SNATCH), - LEVEL_UP_MOVE(57, MOVE_PSYCHO_SHIFT), - LEVEL_UP_MOVE(65, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(73, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(73, MOVE_AMNESIA), - LEVEL_UP_MOVE(81, MOVE_RECOVER), - LEVEL_UP_MOVE(89, MOVE_PSYCHO_BOOST), - LEVEL_UP_MOVE(97, MOVE_COUNTER), - LEVEL_UP_MOVE(97, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(13, MOVE_TELEPORT), + LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(25, MOVE_SPIKES), + LEVEL_UP_MOVE(31, MOVE_PSYCHIC), + LEVEL_UP_MOVE(37, MOVE_SNATCH), + LEVEL_UP_MOVE(43, MOVE_PSYCHO_SHIFT), + LEVEL_UP_MOVE(49, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(55, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(55, MOVE_AMNESIA), + LEVEL_UP_MOVE(61, MOVE_RECOVER), + LEVEL_UP_MOVE(67, MOVE_PSYCHO_BOOST), + LEVEL_UP_MOVE(73, MOVE_COUNTER), + LEVEL_UP_MOVE(73, MOVE_MIRROR_COAT), LEVEL_UP_END }; static const struct LevelUpMove sDeoxysSpeedLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 9, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(17, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(25, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(33, MOVE_PURSUIT), - LEVEL_UP_MOVE(41, MOVE_PSYCHIC), - LEVEL_UP_MOVE(49, MOVE_SWIFT), - LEVEL_UP_MOVE(57, MOVE_PSYCHO_SHIFT), - LEVEL_UP_MOVE(65, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(73, MOVE_AGILITY), - LEVEL_UP_MOVE(81, MOVE_RECOVER), - LEVEL_UP_MOVE(89, MOVE_PSYCHO_BOOST), - LEVEL_UP_MOVE(97, MOVE_EXTREME_SPEED), + LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(13, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(25, MOVE_PURSUIT), + LEVEL_UP_MOVE(31, MOVE_PSYCHIC), + LEVEL_UP_MOVE(37, MOVE_SWIFT), + LEVEL_UP_MOVE(43, MOVE_PSYCHO_SHIFT), + LEVEL_UP_MOVE(49, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(55, MOVE_AGILITY), + LEVEL_UP_MOVE(61, MOVE_RECOVER), + LEVEL_UP_MOVE(67, MOVE_PSYCHO_BOOST), + LEVEL_UP_MOVE(73, MOVE_EXTREME_SPEED), LEVEL_UP_END }; #endif //P_FAMILY_DEOXYS @@ -10531,15 +10686,15 @@ static const struct LevelUpMove sBunearyLevelUpLearnset[] = { }; static const struct LevelUpMove sLopunnyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BOUNCE), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), LEVEL_UP_MOVE( 1, MOVE_HEALING_WISH), - LEVEL_UP_MOVE( 1, MOVE_MAGIC_COAT), - LEVEL_UP_MOVE( 1, MOVE_MIRROR_COAT), - LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_BOUNCE), LEVEL_UP_MOVE( 1, MOVE_ROTOTILLER), + LEVEL_UP_MOVE( 1, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 1, MOVE_MAGIC_COAT), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), LEVEL_UP_MOVE( 6, MOVE_ENDURE), LEVEL_UP_MOVE(13, MOVE_RETURN), LEVEL_UP_MOVE(16, MOVE_QUICK_ATTACK), @@ -10552,6 +10707,7 @@ static const struct LevelUpMove sLopunnyLevelUpLearnset[] = { LEVEL_UP_MOVE(53, MOVE_ENTRAINMENT), LEVEL_UP_MOVE(56, MOVE_BOUNCE), LEVEL_UP_MOVE(63, MOVE_HEALING_WISH), + LEVEL_UP_MOVE(66, MOVE_HIGH_JUMP_KICK), LEVEL_UP_END }; #endif //P_FAMILY_BUNEARY @@ -12135,22 +12291,25 @@ static const struct LevelUpMove sExcadrillLevelUpLearnset[] = { #if P_FAMILY_AUDINO static const struct LevelUpMove sAudinoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), LEVEL_UP_MOVE( 1, MOVE_LAST_RESORT), + LEVEL_UP_MOVE( 1, MOVE_MISTY_TERRAIN), LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 5, MOVE_REFRESH), - LEVEL_UP_MOVE(10, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE(15, MOVE_ATTRACT), - LEVEL_UP_MOVE(20, MOVE_SECRET_POWER), - LEVEL_UP_MOVE(25, MOVE_ENTRAINMENT), - LEVEL_UP_MOVE(30, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(35, MOVE_HEAL_PULSE), - LEVEL_UP_MOVE(40, MOVE_AFTER_YOU), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 5, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE( 9, MOVE_REFRESH), + LEVEL_UP_MOVE(13, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(17, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(21, MOVE_ATTRACT), + LEVEL_UP_MOVE(25, MOVE_SECRET_POWER), + LEVEL_UP_MOVE(29, MOVE_ENTRAINMENT), + LEVEL_UP_MOVE(33, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_HEAL_PULSE), + LEVEL_UP_MOVE(41, MOVE_AFTER_YOU), LEVEL_UP_MOVE(45, MOVE_SIMPLE_BEAM), - LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(55, MOVE_LAST_RESORT), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(53, MOVE_LAST_RESORT), LEVEL_UP_END }; #endif //P_FAMILY_AUDINO @@ -12734,10 +12893,11 @@ static const struct LevelUpMove sDarmanitanGalarianLevelUpLearnset[] = { #if P_FAMILY_MARACTUS static const struct LevelUpMove sMaractusLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_AFTER_YOU), + LEVEL_UP_MOVE( 1, MOVE_SPIKY_SHIELD), LEVEL_UP_MOVE( 1, MOVE_COTTON_GUARD), + LEVEL_UP_MOVE( 1, MOVE_AFTER_YOU), LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), LEVEL_UP_MOVE( 3, MOVE_SWEET_SCENT), LEVEL_UP_MOVE( 6, MOVE_GROWTH), LEVEL_UP_MOVE(10, MOVE_PIN_MISSILE), @@ -14052,7 +14212,7 @@ static const struct LevelUpMove sHaxorusLevelUpLearnset[] = { #endif //P_FAMILY_AXEW #if P_FAMILY_CUBCHOO -static const struct LevelUpMove sCubchooLevelUpLearnset[] = { +static const struct LevelUpMove sCubchooLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 5, MOVE_POWDER_SNOW), LEVEL_UP_MOVE( 9, MOVE_BIDE), @@ -14150,6 +14310,7 @@ static const struct LevelUpMove sShelmetLevelUpLearnset[] = { }; static const struct LevelUpMove sAccelgorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_SHURIKEN), LEVEL_UP_MOVE( 1, MOVE_FINAL_GAMBIT), LEVEL_UP_MOVE( 1, MOVE_POWER_SWAP), LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), @@ -16557,15 +16718,17 @@ static const struct LevelUpMove sHoopaConfinedLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CONFUSION), LEVEL_UP_MOVE( 6, MOVE_ASTONISH), LEVEL_UP_MOVE(10, MOVE_MAGIC_COAT), - LEVEL_UP_MOVE(15, MOVE_PSYBEAM), - LEVEL_UP_MOVE(19, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(15, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(19, MOVE_PSYBEAM), LEVEL_UP_MOVE(25, MOVE_SKILL_SWAP), LEVEL_UP_MOVE(29, MOVE_POWER_SPLIT), - LEVEL_UP_MOVE(35, MOVE_GUARD_SPLIT), - LEVEL_UP_MOVE(46, MOVE_PHANTOM_FORCE), + LEVEL_UP_MOVE(29, MOVE_GUARD_SPLIT), + LEVEL_UP_MOVE(35, MOVE_PHANTOM_FORCE), + LEVEL_UP_MOVE(46, MOVE_ZEN_HEADBUTT), LEVEL_UP_MOVE(50, MOVE_WONDER_ROOM), - LEVEL_UP_MOVE(55, MOVE_TRICK_ROOM), - LEVEL_UP_MOVE(68, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(50, MOVE_TRICK_ROOM), + LEVEL_UP_MOVE(55, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(68, MOVE_NASTY_PLOT), LEVEL_UP_MOVE(75, MOVE_PSYCHIC), LEVEL_UP_MOVE(85, MOVE_HYPERSPACE_HOLE), LEVEL_UP_END From cd650ae9987687456ce7f949694db98eac68fbcc Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Mon, 11 Mar 2024 15:47:04 -0300 Subject: [PATCH 41/55] Corrected initial value of targetSpecies in GetEvolutionTargetSpecies (#4269) --- src/pokemon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pokemon.c b/src/pokemon.c index 050e5e14d8..ee3cc643b8 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -3766,7 +3766,7 @@ u8 GetNatureFromPersonality(u32 personality) u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, struct Pokemon *tradePartner) { int i, j; - u16 targetSpecies = 0; + u16 targetSpecies = SPECIES_NONE; u16 species = GetMonData(mon, MON_DATA_SPECIES, 0); u16 heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, 0); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0); From a741e2e3966da1a579bc5adaf29032cd77fd2969 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Tue, 12 Mar 2024 11:51:37 +0100 Subject: [PATCH 42/55] Couple things for 1.8 release (#4274) * Couple things for 1.8 release * revert EFFECT_VARY_POWER_BASED_ON_HP change * Fix comment --------- Co-authored-by: Eduardo Quezada --- src/battle_ai_main.c | 4 ++-- test/battle/ability/dancer.c | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 4eb608d7e4..c552f446db 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -3769,9 +3769,9 @@ static u32 AI_CalcMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF, &score); break; case EFFECT_FIRST_TURN_ONLY: - if (ShouldFakeOut(battlerAtk, battlerDef, move)) + if (ShouldFakeOut(battlerAtk, battlerDef, move) && MoveHasAdditionalEffectWithChance(move, MOVE_EFFECT_FLINCH, 100)) ADJUST_SCORE(GOOD_EFFECT); - else if (gMovesInfo[move].argument == MOVE_FIRST_IMPRESSION && gDisableStructs[battlerAtk].isFirstTurn && GetBestDmgMoveFromBattler(battlerAtk, battlerDef) == move) + else if (gDisableStructs[battlerAtk].isFirstTurn && GetBestDmgMoveFromBattler(battlerAtk, battlerDef) == move) ADJUST_SCORE(BEST_EFFECT); break; case EFFECT_STOCKPILE: diff --git a/test/battle/ability/dancer.c b/test/battle/ability/dancer.c index 97435a2ea7..7e520f440b 100644 --- a/test/battle/ability/dancer.c +++ b/test/battle/ability/dancer.c @@ -33,3 +33,23 @@ SINGLE_BATTLE_TEST("Dancer can copy Teeter Dance") ANIMATION(ANIM_TYPE_MOVE, MOVE_TEETER_DANCE, opponent); } } + +DOUBLE_BATTLE_TEST("Dancer can copy Teeter Dance and confuse both opposing targets") +{ + KNOWN_FAILING; // Fails because copied move that targets both opposing mons, targets only one when copied by Dancer + GIVEN { + ASSUME(gMovesInfo[MOVE_TEETER_DANCE].danceMove == TRUE); + PLAYER(SPECIES_WOBBUFFET) + PLAYER(SPECIES_WYNAUT) + OPPONENT(SPECIES_ORICORIO) { Ability(ABILITY_DANCER); Item(ITEM_LUM_BERRY); } + OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_TEETER_DANCE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TEETER_DANCE, playerLeft); + ABILITY_POPUP(opponentLeft, ABILITY_DANCER); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TEETER_DANCE, opponentLeft); + MESSAGE("Wobbuffet became confused!"); + MESSAGE("Wynaut became confusef!"); + } +} From 2f4203bc4c3f5b4113ff80663bd8c9ef395c8815 Mon Sep 17 00:00:00 2001 From: Frank DeBlasio <35279583+fdeblasio@users.noreply.github.com> Date: Tue, 12 Mar 2024 06:57:38 -0400 Subject: [PATCH 43/55] Consolidate type properties (#4185) * Moved gTypeNames into gTypes * Added invalid move text to struct * Added max move to struct * Added icon palette to struct * Added macros for invalid and max moves * Swapped palette and max move order * Renamed invalid to generic * Renamed invalid to generic in struct definition * Added zMoves and items to type struct * Addressed comments * Incorporated newer comments * Updated comment format --- include/battle_main.h | 2 +- include/data.h | 16 ++ src/battle_controller_player.c | 2 +- src/battle_debug.c | 2 +- src/battle_dynamax.c | 29 +--- src/battle_main.c | 303 ++++++++++++++++++++++++++++++--- src/battle_message.c | 33 +--- src/battle_z_move.c | 2 +- src/data/union_room.h | 36 ++-- src/menu_specialized.c | 2 +- src/pokedex.c | 36 ++-- src/pokedex_plus_hgss.c | 78 ++++----- src/pokemon_summary_screen.c | 36 ++-- src/union_room.c | 4 +- 14 files changed, 388 insertions(+), 193 deletions(-) diff --git a/include/battle_main.h b/include/battle_main.h index c1394db60c..9469e63efe 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -76,7 +76,7 @@ extern struct MultiPartnerMenuPokemon gMultiPartnerParty[MULTI_PARTY_SIZE]; extern const struct SpriteTemplate gUnusedBattleInitSprite; extern const struct OamData gOamData_BattleSpriteOpponentSide; extern const struct OamData gOamData_BattleSpritePlayerSide; -extern const u8 gTypeNames[NUMBER_OF_MON_TYPES][TYPE_NAME_LENGTH + 1]; +extern const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES]; extern const u8 gStatusConditionString_PoisonJpn[8]; extern const u8 gStatusConditionString_SleepJpn[8]; diff --git a/include/data.h b/include/data.h index 28faf0716a..df11e48a10 100644 --- a/include/data.h +++ b/include/data.h @@ -99,6 +99,22 @@ struct TrainerClass u16 ball; }; +struct TypeInfo +{ + u8 name[TYPE_NAME_LENGTH + 1]; + u8 generic[17]; + u8 palette; + //u16 zMove; + u16 maxMove; + //u16 enhanceItem; + //u16 berry; + //u16 gem; + //u16 plate; + //u16 memory; + //u16 zCrystal; + //u16 teraShard; +}; + extern const u16 gMinigameDigits_Pal[]; extern const u32 gMinigameDigits_Gfx[]; diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index f1bdbdc668..c9778f898e 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1755,7 +1755,7 @@ static void MoveSelectionDisplayMoveType(u32 battler) else type = gMovesInfo[moveInfo->moves[gMoveSelectionCursor[battler]]].type; - StringCopy(txtPtr, gTypeNames[type]); + StringCopy(txtPtr, gTypesInfo[type].name); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE); } diff --git a/src/battle_debug.c b/src/battle_debug.c index cdda88e236..4e9d5ecf29 100644 --- a/src/battle_debug.c +++ b/src/battle_debug.c @@ -1480,7 +1480,7 @@ static void PrintSecondaryEntries(struct BattleDebugMenu *data) { u8 *types = &gBattleMons[data->battlerId].type1; - PadString(gTypeNames[types[i]], text); + PadString(gTypesInfo[types[i]].name, text); printer.currentY = printer.y = (i * yMultiplier) + sSecondaryListTemplate.upText_Y; AddTextPrinter(&printer, 0, NULL); } diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 0357e27d1e..7286045684 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -24,29 +24,6 @@ static u8 GetMaxPowerTier(u16 move); -// Constant Data -static const u16 sMaxMoveTable[NUMBER_OF_MON_TYPES] = -{ - [TYPE_NORMAL] = MOVE_MAX_STRIKE, - [TYPE_FIGHTING] = MOVE_MAX_KNUCKLE, - [TYPE_FLYING] = MOVE_MAX_AIRSTREAM, - [TYPE_POISON] = MOVE_MAX_OOZE, - [TYPE_GROUND] = MOVE_MAX_QUAKE, - [TYPE_ROCK] = MOVE_MAX_ROCKFALL, - [TYPE_BUG] = MOVE_MAX_FLUTTERBY, - [TYPE_GHOST] = MOVE_MAX_PHANTASM, - [TYPE_STEEL] = MOVE_MAX_STEELSPIKE, - [TYPE_FIRE] = MOVE_MAX_FLARE, - [TYPE_WATER] = MOVE_MAX_GEYSER, - [TYPE_GRASS] = MOVE_MAX_OVERGROWTH, - [TYPE_ELECTRIC] = MOVE_MAX_LIGHTNING, - [TYPE_PSYCHIC] = MOVE_MAX_MINDSTORM, - [TYPE_ICE] = MOVE_MAX_HAILSTORM, - [TYPE_DRAGON] = MOVE_MAX_WYRMWIND, - [TYPE_DARK] = MOVE_MAX_DARKNESS, - [TYPE_FAIRY] = MOVE_MAX_STARFALL, -}; - struct GMaxMove { u16 species; @@ -305,9 +282,9 @@ static u16 GetTypeBasedMaxMove(u16 battlerId, u16 type) } // Regular Max Move - if (sMaxMoveTable[type] == MOVE_NONE) // failsafe - return sMaxMoveTable[0]; - return sMaxMoveTable[type]; + if (gTypesInfo[type].maxMove == MOVE_NONE) // failsafe + return gTypesInfo[0].maxMove; + return gTypesInfo[type].maxMove; } // Returns the appropriate Max Move or G-Max Move for a battler to use. diff --git a/src/battle_main.c b/src/battle_main.c index f0075340ea..782016ee40 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -295,27 +295,290 @@ const struct OamData gOamData_BattleSpritePlayerSide = static const s8 sCenterToCornerVecXs[8] ={-32, -16, -16, -32, -32}; -const u8 gTypeNames[NUMBER_OF_MON_TYPES][TYPE_NAME_LENGTH + 1] = +// .generic is large enough that the text for TYPE_ELECTRIC will exceed TEXT_BUFF_ARRAY_COUNT. +const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = { - [TYPE_NORMAL] = _("Normal"), - [TYPE_FIGHTING] = _("Fight"), - [TYPE_FLYING] = _("Flying"), - [TYPE_POISON] = _("Poison"), - [TYPE_GROUND] = _("Ground"), - [TYPE_ROCK] = _("Rock"), - [TYPE_BUG] = _("Bug"), - [TYPE_GHOST] = _("Ghost"), - [TYPE_STEEL] = _("Steel"), - [TYPE_MYSTERY] = _("???"), - [TYPE_FIRE] = _("Fire"), - [TYPE_WATER] = _("Water"), - [TYPE_GRASS] = _("Grass"), - [TYPE_ELECTRIC] = _("Electr"), - [TYPE_PSYCHIC] = _("Psychc"), - [TYPE_ICE] = _("Ice"), - [TYPE_DRAGON] = _("Dragon"), - [TYPE_DARK] = _("Dark"), - [TYPE_FAIRY] = _("Fairy"), + [TYPE_NORMAL] = + { + .name = _("Normal"), + .generic = _("a NORMAL move"), + .palette = 13, + //.zMove = MOVE_BREAKNECK_BLITZ, + .maxMove = MOVE_MAX_STRIKE, + //.enhanceItem = ITEM_SILK_SCARF, + //.berry = ITEM_CHILAN_BERRY, + //.gem = ITEM_NORMAL_GEM, + //.zCrystal = ITEM_NORMALIUM_Z, + //.teraShard = ITEM_NORMAL_TERA_SHARD, + }, + [TYPE_FIGHTING] = + { + .name = _("Fight"), + .generic = _("a FIGHTING move"), + .palette = 13, + //.zMove = MOVE_ALL_OUT_PUMMELING, + .maxMove = MOVE_MAX_KNUCKLE, + //.enhanceItem = ITEM_BLACK_BELT, + //.berry = ITEM_CHOPLE_BERRY, + //.gem = ITEM_FIGHTING_GEM, + //.zCrystal = ITEM_FIGHTINIUM_Z, + //.plate= ITEM_FIST_PLATE, + //.memory = ITEM_FIGHTING_MEMORY, + //.teraShard = ITEM_FIGHTING_TERA_SHARD, + }, + [TYPE_FLYING] = + { + .name = _("Flying"), + .generic = _("a FLYING move"), + .palette = 14, + //.zMove = MOVE_SUPERSONIC_SKYSTRIKE, + .maxMove = MOVE_MAX_AIRSTREAM, + //.enhanceItem = ITEM_SHARP_BEAK, + //.berry = ITEM_COBA_BERRY, + //.gem = ITEM_FLYING_GEM, + //.zCrystal = ITEM_FLYINIUM_Z, + //.plate= ITEM_SKY_PLATE, + //.memory = ITEM_FLYING_MEMORY, + //.teraShard = ITEM_FLYING_TERA_SHARD, + }, + [TYPE_POISON] = + { + .name = _("Poison"), + .generic = _("a POISON move"), + .palette = 14, + //.zMove = MOVE_ACID_DOWNPOUR, + .maxMove = MOVE_MAX_OOZE, + //.enhanceItem = ITEM_POISON_BARB, + //.berry = ITEM_KEBIA_BERRY, + //.gem = ITEM_POISON_GEM, + //.zCrystal = ITEM_POISONIUM_Z, + //.plate= ITEM_TOXIC_PLATE, + //.memory = ITEM_POISON_MEMORY, + //.teraShard = ITEM_POISON_TERA_SHARD, + }, + [TYPE_GROUND] = + { + .name = _("Ground"), + .generic = _("a GROUND move"), + .palette = 13, + //.zMove = MOVE_TECTONIC_RAGE, + .maxMove = MOVE_MAX_QUAKE, + //.enhanceItem = ITEM_SOFT_SAND, + //.berry = ITEM_SHUCA_BERRY, + //.gem = ITEM_GROUND_GEM, + //.zCrystal = ITEM_GROUNDIUM_Z, + //.plate= ITEM_EARTH_PLATE, + //.memory = ITEM_GROUND_MEMORY, + //.teraShard = ITEM_GROUND_TERA_SHARD, + }, + [TYPE_ROCK] = + { + .name = _("Rock"), + .generic = _("a ROCK move"), + .palette = 13, + //.zMove = MOVE_CONTINENTAL_CRUSH, + .maxMove = MOVE_MAX_ROCKFALL, + //.enhanceItem = ITEM_HARD_STONE, + //.berry = ITEM_CHARTI_BERRY, + //.gem = ITEM_ROCK_GEM, + //.zCrystal = ITEM_ROCKIUM_Z, + //.plate= ITEM_STONE_PLATE, + //.memory = ITEM_ROCK_MEMORY, + //.teraShard = ITEM_ROCK_TERA_SHARD, + }, + [TYPE_BUG] = + { + .name = _("Bug"), + .generic = _("a BUG move"), + .palette = 15, + //.zMove = MOVE_SAVAGE_SPIN_OUT, + .maxMove = MOVE_MAX_FLUTTERBY, + //.enhanceItem = ITEM_SILVER_POWDER, + //.berry = ITEM_TANGA_BERRY, + //.gem = ITEM_BUG_GEM, + //.zCrystal = ITEM_BUGINIUM_Z, + //.plate= ITEM_INSECT_PLATE, + //.memory = ITEM_BUG_MEMORY, + //.teraShard = ITEM_BUG_TERA_SHARD, + }, + [TYPE_GHOST] = + { + .name = _("Ghost"), + .generic = _("a GHOST move"), + .palette = 14, + //.zMove = MOVE_NEVER_ENDING_NIGHTMARE, + .maxMove = MOVE_MAX_PHANTASM, + //.enhanceItem = ITEM_SPELL_TAG, + //.berry = ITEM_KASIB_BERRY, + //.gem = ITEM_GHOST_GEM, + //.zCrystal = ITEM_GHOSTIUM_Z, + //.plate= ITEM_SPOOKY_PLATE, + //.memory = ITEM_GHOST_MEMORY, + //.teraShard = ITEM_GHOST_TERA_SHARD, + }, + [TYPE_STEEL] = + { + .name = _("Steel"), + .generic = _("a STEEL move"), + .palette = 13, + //.zMove = MOVE_CORKSCREW_CRASH, + .maxMove = MOVE_MAX_STEELSPIKE, + //.enhanceItem = ITEM_METAL_COAT, + //.berry = ITEM_BABIRI_BERRY, + //.gem = ITEM_STEEL_GEM, + //.zCrystal = ITEM_STEELIUM_Z, + //.plate= ITEM_IRON_PLATE, + //.memory = ITEM_STEEL_MEMORY, + //.teraShard = ITEM_STEEL_TERA_SHARD, + }, + [TYPE_MYSTERY] = + { + .name = _("???"), + .generic = _("a ??? move"), + .palette = 15, + }, + [TYPE_FIRE] = + { + .name = _("Fire"), + .generic = _("a FIRE move"), + .palette = 13, + //.zMove = MOVE_INFERNO_OVERDRIVE, + .maxMove = MOVE_MAX_FLARE, + //.enhanceItem = ITEM_CHARCOAL, + //.berry = ITEM_OCCA_BERRY, + //.gem = ITEM_FIRE_GEM, + //.zCrystal = ITEM_FIRIUM_Z, + //.plate= ITEM_FLAME_PLATE, + //.memory = ITEM_FIRE_MEMORY, + //.teraShard = ITEM_FIRE_TERA_SHARD, + }, + [TYPE_WATER] = + { + .name = _("Water"), + .generic = _("a WATER move"), + .palette = 14, + //.zMove = MOVE_HYDRO_VORTEX, + .maxMove = MOVE_MAX_GEYSER, + //.enhanceItem = ITEM_MYSTIC_WATER, + //.berry = ITEM_PASSHO_BERRY, + //.gem = ITEM_WATER_GEM, + //.zCrystal = ITEM_WATERIUM_Z, + //.plate= ITEM_SPLASH_PLATE, + //.memory = ITEM_WATER_MEMORY, + //.teraShard = ITEM_WATER_TERA_SHARD, + }, + [TYPE_GRASS] = + { + .name = _("Grass"), + .generic = _("a GRASS move"), + .palette = 15, + //.zMove = MOVE_BLOOM_DOOM, + .maxMove = MOVE_MAX_OVERGROWTH, + //.enhanceItem = ITEM_MIRACLE_SEED, + //.berry = ITEM_RINDO_BERRY, + //.gem = ITEM_GRASS_GEM, + //.zCrystal = ITEM_GRASSIUM_Z, + //.plate= ITEM_MEADOW_PLATE, + //.memory = ITEM_GRASS_MEMORY, + //.teraShard = ITEM_GRASS_TERA_SHARD, + }, + [TYPE_ELECTRIC] = + { + .name = _("Electr"), + .generic = _("an ELECTRIC move"), + .palette = 13, + //.zMove = MOVE_GIGAVOLT_HAVOC, + .maxMove = MOVE_MAX_LIGHTNING, + //.enhanceItem = ITEM_MAGNET, + //.berry = ITEM_WACAN_BERRY, + //.gem = ITEM_ELECTRIC_GEM, + //.zCrystal = ITEM_ELECTRIUM_Z, + //.plate= ITEM_ZAP_PLATE, + //.memory = ITEM_ELECTRIC_MEMORY, + //.teraShard = ITEM_ELECTRIC_TERA_SHARD, + }, + [TYPE_PSYCHIC] = + { + .name = _("Psychc"), + .generic = _("a PSYCHIC move"), + .palette = 14, + //.zMove = MOVE_SHATTERED_PSYCHE, + .maxMove = MOVE_MAX_MINDSTORM, + //.enhanceItem = ITEM_TWISTED_SPOON, + //.berry = ITEM_PAYAPA_BERRY, + //.gem = ITEM_PSYCHIC_GEM, + //.zCrystal = ITEM_PSYCHIUM_Z, + //.plate= ITEM_MIND_PLATE, + //.memory = ITEM_PSYCHIC_MEMORY, + //.teraShard = ITEM_PSYCHIC_TERA_SHARD, + }, + [TYPE_ICE] = + { + .name = _("Ice"), + .generic = _("an ICE move"), + .palette = 14, + //.zMove = MOVE_SUBZERO_SLAMMER, + .maxMove = MOVE_MAX_HAILSTORM, + //.enhanceItem = ITEM_NEVER_MELT_ICE, + //.berry = ITEM_YACHE_BERRY, + //.gem = ITEM_ICE_GEM, + //.zCrystal = ITEM_ICIUM_Z, + //.plate= ITEM_ICICLE_PLATE, + //.memory = ITEM_ICE_MEMORY, + //.teraShard = ITEM_ICE_TERA_SHARD, + }, + [TYPE_DRAGON] = + { + .name = _("Dragon"), + .generic = _("a DRAGON move"), + .palette = 15, + //.zMove = MOVE_DEVASTATING_DRAKE, + .maxMove = MOVE_MAX_WYRMWIND, + //.enhanceItem = ITEM_DRAGON_FANG, + //.berry = ITEM_HABAN_BERRY, + //.gem = ITEM_DRAGON_GEM, + //.zCrystal = ITEM_DRAGONIUM_Z, + //.plate= ITEM_DRACO_PLATE, + //.memory = ITEM_DRAGON_MEMORY, + //.teraShard = ITEM_DRAGON_TERA_SHARD, + }, + [TYPE_DARK] = + { + .name = _("Dark"), + .generic = _("a DARK move"), + .palette = 13, + //.zMove = MOVE_BLACK_HOLE_ECLIPSE, + .maxMove = MOVE_MAX_DARKNESS, + //.enhanceItem = ITEM_BLACK_GLASSES, + //.berry = ITEM_COLBUR_BERRY, + //.gem = ITEM_DARK_GEM, + //.zCrystal = ITEM_DARKINIUM_Z, + //.plate= ITEM_DREAD_PLATE, + //.memory = ITEM_DARK_MEMORY, + //.teraShard = ITEM_DARK_TERA_SHARD, + }, + [TYPE_FAIRY] = + { + .name = _("Fairy"), + .generic = _("a FAIRY move"), + .palette = 14, + //.zMove = MOVE_TWINKLE_TACKLE, + .maxMove = MOVE_MAX_STARFALL, + //.enhanceItem = ITEM_FAIRY_FEATHER, + //.berry = ITEM_ROSELI_BERRY, + //.gem = ITEM_FAIRY_GEM, + //.zCrystal = ITEM_FAIRIUM_Z, + //.plate= ITEM_PIXIE_PLATE, + //.memory = ITEM_FAIRY_MEMORY, + //.teraShard = ITEM_FAIRY_TERA_SHARD, + }, + /* + [TYPE_STELLAR] = + { + .name = _("Stellar"), + .teraShard = ITEM_STELLAR_TERA_SHARD, + }, + */ }; // extra args are money and ball diff --git a/src/battle_message.c b/src/battle_message.c index 580e21d00d..3ad1dc409b 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -2098,31 +2098,6 @@ const u8 gText_Draw[] = _("{HIGHLIGHT TRANSPARENT}Draw"); static const u8 sText_SpaceIs[] = _(" is"); static const u8 sText_ApostropheS[] = _("'s"); -// For displaying names of invalid moves. -// This is large enough that the text for TYPE_ELECTRIC will exceed TEXT_BUFF_ARRAY_COUNT. -static const u8 sATypeMove_Table[NUMBER_OF_MON_TYPES][17] = -{ - [TYPE_NORMAL] = _("a NORMAL move"), - [TYPE_FIGHTING] = _("a FIGHTING move"), - [TYPE_FLYING] = _("a FLYING move"), - [TYPE_POISON] = _("a POISON move"), - [TYPE_GROUND] = _("a GROUND move"), - [TYPE_ROCK] = _("a ROCK move"), - [TYPE_BUG] = _("a BUG move"), - [TYPE_GHOST] = _("a GHOST move"), - [TYPE_STEEL] = _("a STEEL move"), - [TYPE_MYSTERY] = _("a ??? move"), - [TYPE_FIRE] = _("a FIRE move"), - [TYPE_WATER] = _("a WATER move"), - [TYPE_GRASS] = _("a GRASS move"), - [TYPE_ELECTRIC] = _("an ELECTRIC move"), - [TYPE_PSYCHIC] = _("a PSYCHIC move"), - [TYPE_ICE] = _("an ICE move"), - [TYPE_DRAGON] = _("a DRAGON move"), - [TYPE_DARK] = _("a DARK move"), - [TYPE_FAIRY] = _("a FAIRY move"), -}; - const u8 gText_BattleTourney[] = _("BATTLE TOURNEY"); static const u8 sText_Round1[] = _("Round 1"); static const u8 sText_Round2[] = _("Round 2"); @@ -2940,7 +2915,7 @@ void BufferStringBattle(u16 stringID, u32 battler) if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT && !IsZMove(gBattleMsgDataPtr->currentMove) && !IsMaxMove(gBattleMsgDataPtr->currentMove)) - StringCopy(gBattleTextBuff3, sATypeMove_Table[*(&gBattleStruct->stringMoveType)]); + StringCopy(gBattleTextBuff3, gTypesInfo[*(&gBattleStruct->stringMoveType)].generic); else StringCopy(gBattleTextBuff3, GetMoveName(gBattleMsgDataPtr->currentMove)); stringPtr = sText_AttackerUsedX; @@ -3370,7 +3345,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT && !IsZMove(gBattleMsgDataPtr->currentMove) && !IsMaxMove(gBattleMsgDataPtr->currentMove)) - toCpy = sATypeMove_Table[gBattleStruct->stringMoveType]; + toCpy = gTypesInfo[gBattleStruct->stringMoveType].generic; else toCpy = GetMoveName(gBattleMsgDataPtr->currentMove); break; @@ -3378,7 +3353,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) if (gBattleMsgDataPtr->originallyUsedMove >= MOVES_COUNT && !IsZMove(gBattleMsgDataPtr->currentMove) && !IsMaxMove(gBattleMsgDataPtr->currentMove)) - toCpy = sATypeMove_Table[gBattleStruct->stringMoveType]; + toCpy = gTypesInfo[gBattleStruct->stringMoveType].generic; else toCpy = GetMoveName(gBattleMsgDataPtr->originallyUsedMove); break; @@ -3762,7 +3737,7 @@ void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) srcID += 3; break; case B_BUFF_TYPE: // type name - StringAppend(dst, gTypeNames[src[srcID + 1]]); + StringAppend(dst, gTypesInfo[src[srcID + 1]].name); srcID += 2; break; case B_BUFF_MON_NICK_WITH_PREFIX: // poke nick with prefix diff --git a/src/battle_z_move.c b/src/battle_z_move.c index b2377bffd4..f0d2938b8e 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -553,7 +553,7 @@ static void ZMoveSelectionDisplayMoveType(u16 zMove, u32 battler) *(txtPtr)++ = EXT_CTRL_CODE_FONT; *(txtPtr)++ = FONT_NORMAL; - StringCopy(txtPtr, gTypeNames[zMoveType]); + StringCopy(txtPtr, gTypesInfo[zMoveType].name); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE); } diff --git a/src/data/union_room.h b/src/data/union_room.h index f32910388b..89b57c3d39 100644 --- a/src/data/union_room.h +++ b/src/data/union_room.h @@ -868,24 +868,24 @@ static const struct WindowTemplate sWindowTemplate_TradingBoardRequestType = { }; static const struct ListMenuItem sTradingBoardTypes[NUMBER_OF_MON_TYPES] = { - { gTypeNames[TYPE_NORMAL], TYPE_NORMAL }, - { gTypeNames[TYPE_FIRE], TYPE_FIRE }, - { gTypeNames[TYPE_WATER], TYPE_WATER }, - { gTypeNames[TYPE_ELECTRIC], TYPE_ELECTRIC }, - { gTypeNames[TYPE_GRASS], TYPE_GRASS }, - { gTypeNames[TYPE_ICE], TYPE_ICE }, - { gTypeNames[TYPE_GROUND], TYPE_GROUND }, - { gTypeNames[TYPE_ROCK], TYPE_ROCK }, - { gTypeNames[TYPE_FLYING], TYPE_FLYING }, - { gTypeNames[TYPE_PSYCHIC], TYPE_PSYCHIC }, - { gTypeNames[TYPE_FIGHTING], TYPE_FIGHTING }, - { gTypeNames[TYPE_POISON], TYPE_POISON }, - { gTypeNames[TYPE_BUG], TYPE_BUG }, - { gTypeNames[TYPE_GHOST], TYPE_GHOST }, - { gTypeNames[TYPE_DRAGON], TYPE_DRAGON }, - { gTypeNames[TYPE_STEEL], TYPE_STEEL }, - { gTypeNames[TYPE_DARK], TYPE_DARK }, - { gTypeNames[TYPE_FAIRY], TYPE_FAIRY }, + { gTypesInfo[TYPE_NORMAL].name, TYPE_NORMAL }, + { gTypesInfo[TYPE_FIRE].name, TYPE_FIRE }, + { gTypesInfo[TYPE_WATER].name, TYPE_WATER }, + { gTypesInfo[TYPE_ELECTRIC].name, TYPE_ELECTRIC }, + { gTypesInfo[TYPE_GRASS].name, TYPE_GRASS }, + { gTypesInfo[TYPE_ICE].name, TYPE_ICE }, + { gTypesInfo[TYPE_GROUND].name, TYPE_GROUND }, + { gTypesInfo[TYPE_ROCK].name, TYPE_ROCK }, + { gTypesInfo[TYPE_FLYING].name, TYPE_FLYING }, + { gTypesInfo[TYPE_PSYCHIC].name, TYPE_PSYCHIC }, + { gTypesInfo[TYPE_FIGHTING].name, TYPE_FIGHTING }, + { gTypesInfo[TYPE_POISON].name, TYPE_POISON }, + { gTypesInfo[TYPE_BUG].name, TYPE_BUG }, + { gTypesInfo[TYPE_GHOST].name, TYPE_GHOST }, + { gTypesInfo[TYPE_DRAGON].name, TYPE_DRAGON }, + { gTypesInfo[TYPE_STEEL].name, TYPE_STEEL }, + { gTypesInfo[TYPE_DARK].name, TYPE_DARK }, + { gTypesInfo[TYPE_FAIRY].name, TYPE_FAIRY }, { sText_Exit, NUMBER_OF_MON_TYPES } }; diff --git a/src/menu_specialized.c b/src/menu_specialized.c index 85d78abc1c..fcb65d9ae7 100644 --- a/src/menu_specialized.c +++ b/src/menu_specialized.c @@ -777,7 +777,7 @@ static void MoveRelearnerLoadBattleMoveDescription(u32 chosenMove) return; } move = &gMovesInfo[chosenMove]; - str = gTypeNames[move->type]; + str = gTypesInfo[move->type].name; AddTextPrinterParameterized(RELEARNERWIN_DESC_BATTLE, FONT_NORMAL, str, 4, 25, TEXT_SKIP_DRAW, NULL); x = 4 + GetStringWidth(FONT_NORMAL, gText_MoveRelearnerPP, 0); diff --git a/src/pokedex.c b/src/pokedex.c index 74a95aa1d7..8a559602dd 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -1390,24 +1390,24 @@ static const struct SearchOptionText sDexSearchColorOptions[] = static const struct SearchOptionText sDexSearchTypeOptions[NUMBER_OF_MON_TYPES + 1] = // + 2 for "None" and terminator, - 1 for Mystery { {gText_DexEmptyString, gText_DexSearchTypeNone}, - {gText_DexEmptyString, gTypeNames[TYPE_NORMAL]}, - {gText_DexEmptyString, gTypeNames[TYPE_FIGHTING]}, - {gText_DexEmptyString, gTypeNames[TYPE_FLYING]}, - {gText_DexEmptyString, gTypeNames[TYPE_POISON]}, - {gText_DexEmptyString, gTypeNames[TYPE_GROUND]}, - {gText_DexEmptyString, gTypeNames[TYPE_ROCK]}, - {gText_DexEmptyString, gTypeNames[TYPE_BUG]}, - {gText_DexEmptyString, gTypeNames[TYPE_GHOST]}, - {gText_DexEmptyString, gTypeNames[TYPE_STEEL]}, - {gText_DexEmptyString, gTypeNames[TYPE_FIRE]}, - {gText_DexEmptyString, gTypeNames[TYPE_WATER]}, - {gText_DexEmptyString, gTypeNames[TYPE_GRASS]}, - {gText_DexEmptyString, gTypeNames[TYPE_ELECTRIC]}, - {gText_DexEmptyString, gTypeNames[TYPE_PSYCHIC]}, - {gText_DexEmptyString, gTypeNames[TYPE_ICE]}, - {gText_DexEmptyString, gTypeNames[TYPE_DRAGON]}, - {gText_DexEmptyString, gTypeNames[TYPE_DARK]}, - {gText_DexEmptyString, gTypeNames[TYPE_FAIRY]}, + {gText_DexEmptyString, gTypesInfo[TYPE_NORMAL].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_FIGHTING].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_FLYING].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_POISON].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_GROUND].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_ROCK].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_BUG].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_GHOST].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_STEEL].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_FIRE].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_WATER].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_GRASS].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_ELECTRIC].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_PSYCHIC].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_ICE].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_DRAGON].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_DARK].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_FAIRY].name}, {}, }; diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c index 4910fe6e66..9d4dc13d87 100644 --- a/src/pokedex_plus_hgss.c +++ b/src/pokedex_plus_hgss.c @@ -1953,24 +1953,24 @@ static const struct SearchOptionText sDexSearchColorOptions[] = static const struct SearchOptionText sDexSearchTypeOptions[NUMBER_OF_MON_TYPES + 1] = // + 2 for "None" and terminator, - 1 for Mystery { {gText_DexEmptyString, gText_DexSearchTypeNone}, - {gText_DexEmptyString, gTypeNames[TYPE_NORMAL]}, - {gText_DexEmptyString, gTypeNames[TYPE_FIGHTING]}, - {gText_DexEmptyString, gTypeNames[TYPE_FLYING]}, - {gText_DexEmptyString, gTypeNames[TYPE_POISON]}, - {gText_DexEmptyString, gTypeNames[TYPE_GROUND]}, - {gText_DexEmptyString, gTypeNames[TYPE_ROCK]}, - {gText_DexEmptyString, gTypeNames[TYPE_BUG]}, - {gText_DexEmptyString, gTypeNames[TYPE_GHOST]}, - {gText_DexEmptyString, gTypeNames[TYPE_STEEL]}, - {gText_DexEmptyString, gTypeNames[TYPE_FIRE]}, - {gText_DexEmptyString, gTypeNames[TYPE_WATER]}, - {gText_DexEmptyString, gTypeNames[TYPE_GRASS]}, - {gText_DexEmptyString, gTypeNames[TYPE_ELECTRIC]}, - {gText_DexEmptyString, gTypeNames[TYPE_PSYCHIC]}, - {gText_DexEmptyString, gTypeNames[TYPE_ICE]}, - {gText_DexEmptyString, gTypeNames[TYPE_DRAGON]}, - {gText_DexEmptyString, gTypeNames[TYPE_DARK]}, - {gText_DexEmptyString, gTypeNames[TYPE_FAIRY]}, + {gText_DexEmptyString, gTypesInfo[TYPE_NORMAL].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_FIGHTING].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_FLYING].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_POISON].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_GROUND].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_ROCK].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_BUG].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_GHOST].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_STEEL].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_FIRE].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_WATER].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_GRASS].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_ELECTRIC].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_PSYCHIC].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_ICE].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_DRAGON].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_DARK].name}, + {gText_DexEmptyString, gTypesInfo[TYPE_FAIRY].name}, {}, }; @@ -4364,36 +4364,13 @@ static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible) { gSprites[sPokedexView->typeIconSpriteIds[spriteArrayId]].invisible = invisible; } -// different from pokemon_summary_screen -#define TYPE_ICON_PAL_NUM_0 13 -#define TYPE_ICON_PAL_NUM_1 14 -#define TYPE_ICON_PAL_NUM_2 15 -static const u8 sMoveTypeToOamPaletteNum[NUMBER_OF_MON_TYPES + CONTEST_CATEGORIES_COUNT] = +static const u8 sContestCategoryToOamPaletteNum[CONTEST_CATEGORIES_COUNT] = { - [TYPE_NORMAL] = TYPE_ICON_PAL_NUM_0, - [TYPE_FIGHTING] = TYPE_ICON_PAL_NUM_0, - [TYPE_FLYING] = TYPE_ICON_PAL_NUM_1, - [TYPE_POISON] = TYPE_ICON_PAL_NUM_1, - [TYPE_GROUND] = TYPE_ICON_PAL_NUM_0, - [TYPE_ROCK] = TYPE_ICON_PAL_NUM_0, - [TYPE_BUG] = TYPE_ICON_PAL_NUM_2, - [TYPE_GHOST] = TYPE_ICON_PAL_NUM_1, - [TYPE_STEEL] = TYPE_ICON_PAL_NUM_0, - [TYPE_MYSTERY] = TYPE_ICON_PAL_NUM_2, - [TYPE_FIRE] = TYPE_ICON_PAL_NUM_0, - [TYPE_WATER] = TYPE_ICON_PAL_NUM_1, - [TYPE_GRASS] = TYPE_ICON_PAL_NUM_2, - [TYPE_ELECTRIC] = TYPE_ICON_PAL_NUM_0, - [TYPE_PSYCHIC] = TYPE_ICON_PAL_NUM_1, - [TYPE_ICE] = TYPE_ICON_PAL_NUM_1, - [TYPE_DRAGON] = TYPE_ICON_PAL_NUM_2, - [TYPE_DARK] = TYPE_ICON_PAL_NUM_0, - [TYPE_FAIRY] = TYPE_ICON_PAL_NUM_1, - [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_COOL] = TYPE_ICON_PAL_NUM_0, - [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_BEAUTY] = TYPE_ICON_PAL_NUM_1, - [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_CUTE] = TYPE_ICON_PAL_NUM_1, - [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_SMART] = TYPE_ICON_PAL_NUM_2, - [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_TOUGH] = TYPE_ICON_PAL_NUM_0, + [CONTEST_CATEGORY_COOL] = 13, + [CONTEST_CATEGORY_BEAUTY] = 14, + [CONTEST_CATEGORY_CUTE] = 14, + [CONTEST_CATEGORY_SMART] = 15, + [CONTEST_CATEGORY_TOUGH] = 13, }; static void SetTypeIconPosAndPal(u8 typeId, u8 x, u8 y, u8 spriteArrayId) { @@ -4401,7 +4378,10 @@ static void SetTypeIconPosAndPal(u8 typeId, u8 x, u8 y, u8 spriteArrayId) sprite = &gSprites[sPokedexView->typeIconSpriteIds[spriteArrayId]]; StartSpriteAnim(sprite, typeId); - sprite->oam.paletteNum = sMoveTypeToOamPaletteNum[typeId]; + if (typeId < NUMBER_OF_MON_TYPES) + sprite->oam.paletteNum = gTypesInfo[typeId].palette; + else + sprite->oam.paletteNum = sContestCategoryToOamPaletteNum[typeId - NUMBER_OF_MON_TYPES]; sprite->x = x + 16; sprite->y = y + 8; SetSpriteInvisibility(spriteArrayId, FALSE); @@ -6583,7 +6563,7 @@ static u8 PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, StringExpandPlaceholders(gStringVar4, sText_EVO_MOVE ); break; case EVO_FRIENDSHIP_MOVE_TYPE: - StringCopy(gStringVar2, gTypeNames[evolutions[i].param]); + StringCopy(gStringVar2, gTypesInfo[evolutions[i].param].name); StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP_MOVE_TYPE ); break; case EVO_MAPSEC: diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index e3850e6b4e..f5c2e7f6b7 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -954,32 +954,13 @@ const struct SpriteTemplate gSpriteTemplate_MoveTypes = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -static const u8 sMoveTypeToOamPaletteNum[NUMBER_OF_MON_TYPES + CONTEST_CATEGORIES_COUNT] = +static const u8 sContestCategoryToOamPaletteNum[CONTEST_CATEGORIES_COUNT] = { - [TYPE_NORMAL] = 13, - [TYPE_FIGHTING] = 13, - [TYPE_FLYING] = 14, - [TYPE_POISON] = 14, - [TYPE_GROUND] = 13, - [TYPE_ROCK] = 13, - [TYPE_BUG] = 15, - [TYPE_GHOST] = 14, - [TYPE_STEEL] = 13, - [TYPE_MYSTERY] = 15, - [TYPE_FIRE] = 13, - [TYPE_WATER] = 14, - [TYPE_GRASS] = 15, - [TYPE_ELECTRIC] = 13, - [TYPE_PSYCHIC] = 14, - [TYPE_ICE] = 14, - [TYPE_DRAGON] = 15, - [TYPE_DARK] = 13, - [TYPE_FAIRY] = 14, - [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_COOL] = 13, - [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_BEAUTY] = 14, - [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_CUTE] = 14, - [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_SMART] = 15, - [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_TOUGH] = 13, + [CONTEST_CATEGORY_COOL] = 13, + [CONTEST_CATEGORY_BEAUTY] = 14, + [CONTEST_CATEGORY_CUTE] = 14, + [CONTEST_CATEGORY_SMART] = 15, + [CONTEST_CATEGORY_TOUGH] = 13, }; static const struct OamData sOamData_MoveSelector = { @@ -3919,7 +3900,10 @@ void SetTypeSpritePosAndPal(u8 typeId, u8 x, u8 y, u8 spriteArrayId) { struct Sprite *sprite = &gSprites[sMonSummaryScreen->spriteIds[spriteArrayId]]; StartSpriteAnim(sprite, typeId); - sprite->oam.paletteNum = sMoveTypeToOamPaletteNum[typeId]; + if (typeId < NUMBER_OF_MON_TYPES) + sprite->oam.paletteNum = gTypesInfo[typeId].palette; + else + sprite->oam.paletteNum = sContestCategoryToOamPaletteNum[typeId - NUMBER_OF_MON_TYPES]; sprite->x = x + 16; sprite->y = y + 8; SetSpriteInvisibility(spriteArrayId, FALSE); diff --git a/src/union_room.c b/src/union_room.c index d71d3edad1..f4ee01d1b4 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -3184,12 +3184,12 @@ static void Task_RunUnionRoom(u8 taskId) break; case UR_TRADE_NOTYPE: CopyAndTranslatePlayerName(gStringVar1, &uroom->playerList->players[input]); - StringCopy(gStringVar2, gTypeNames[uroom->playerList->players[input].rfu.data.tradeType]); + StringCopy(gStringVar2, gTypesInfo[uroom->playerList->players[input].rfu.data.tradeType].name); ScheduleFieldMessageWithFollowupState(UR_STATE_TRADING_BOARD_LOAD, sText_DontHaveTypeTrainerWants); break; case UR_TRADE_NOEGG: CopyAndTranslatePlayerName(gStringVar1, &uroom->playerList->players[input]); - StringCopy(gStringVar2, gTypeNames[uroom->playerList->players[input].rfu.data.tradeType]); + StringCopy(gStringVar2, gTypesInfo[uroom->playerList->players[input].rfu.data.tradeType].name); ScheduleFieldMessageWithFollowupState(UR_STATE_TRADING_BOARD_LOAD, sText_DontHaveEggTrainerWants); break; } From 1568b0a424452c672e43925d4ca387cf0db5218f Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 12 Mar 2024 08:21:03 -0300 Subject: [PATCH 44/55] Pre-1.8 tweaks (#4275) * Moved BERRY_MUTATION_CHANCE to include/config/overworld.h and renamed it to OW_BERRY_MUTATION_CHANCE * Move level_caps.h to config folder * Multiple EV/IV refered as EVs/IVs * Disabled decap by default * Level up learnsetst comments --- data/scripts/debug.inc | 44 +++++++++++++++++------------------ data/specials.inc | 8 +++---- include/config/decap.h | 2 +- include/config/level_caps.h | 21 +++++++++++++++++ include/config/overworld.h | 1 + include/constants/global.h | 1 + include/level_caps.h | 17 -------------- include/script_pokemon_util.h | 8 +++---- src/berry.c | 4 +--- src/debug.c | 32 ++++++++++++------------- src/pokemon.c | 18 +++++++------- src/script_pokemon_util.c | 8 +++---- 12 files changed, 84 insertions(+), 80 deletions(-) create mode 100644 include/config/level_caps.h diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index 1dc39cbc01..3dcb7f7896 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -95,47 +95,47 @@ Debug_BoxFilledMessage:: Debug_BoxFilledMessage_Text: .string "Storage boxes filled!$" -Debug_EventScript_CheckEV:: +Debug_EventScript_CheckEVs:: lockall getpartysize goto_if_eq VAR_RESULT, 0, Debug_NoPokemon special ChoosePartyMon waitstate - goto_if_ge VAR_0x8004, PARTY_SIZE, Debug_EventScript_CheckEV_End - callnative Script_GetChosenMonOffensiveEV - msgbox Debug_EventScript_Text_OffensiveEV, MSGBOX_DEFAULT - callnative Script_GetChosenMonDefensiveEV - msgbox Debug_EventScript_Text_DefensiveEV, MSGBOX_DEFAULT -Debug_EventScript_CheckEV_End:: + goto_if_ge VAR_0x8004, PARTY_SIZE, Debug_EventScript_CheckEVs_End + callnative Script_GetChosenMonOffensiveEVs + msgbox Debug_EventScript_Text_OffensiveEVs, MSGBOX_DEFAULT + callnative Script_GetChosenMonDefensiveEVs + msgbox Debug_EventScript_Text_DefensiveEVs, MSGBOX_DEFAULT +Debug_EventScript_CheckEVs_End:: releaseall end -Debug_EventScript_Text_OffensiveEV: - .string "ATK EV: {STR_VAR_1}, SPATK EV: {STR_VAR_2}, SPEED EV: {STR_VAR_3}$" +Debug_EventScript_Text_OffensiveEVs: + .string "ATK EVs: {STR_VAR_1}, SPATK EVs: {STR_VAR_2}, SPEED EVs: {STR_VAR_3}$" -Debug_EventScript_Text_DefensiveEV: - .string "HP EV: {STR_VAR_1}, DEF EV: {STR_VAR_2}, SPDEF EV: {STR_VAR_3}$" +Debug_EventScript_Text_DefensiveEVs: + .string "HP EVs: {STR_VAR_1}, DEF EVs: {STR_VAR_2}, SPDEF EVs: {STR_VAR_3}$" -Debug_EventScript_CheckIV:: +Debug_EventScript_CheckIVs:: lockall getpartysize goto_if_eq VAR_RESULT, 0, Debug_NoPokemon special ChoosePartyMon waitstate - goto_if_ge VAR_0x8004, PARTY_SIZE, Debug_EventScript_CheckIV_End - callnative Script_GetChosenMonOffensiveIV - msgbox Debug_EventScript_Text_OffensiveIV, MSGBOX_DEFAULT - callnative Script_GetChosenMonDefensiveIV - msgbox Debug_EventScript_Text_DefensiveIV, MSGBOX_DEFAULT -Debug_EventScript_CheckIV_End:: + goto_if_ge VAR_0x8004, PARTY_SIZE, Debug_EventScript_CheckIVs_End + callnative Script_GetChosenMonOffensiveIVs + msgbox Debug_EventScript_Text_OffensiveIVs, MSGBOX_DEFAULT + callnative Script_GetChosenMonDefensiveIVs + msgbox Debug_EventScript_Text_DefensiveIVs, MSGBOX_DEFAULT +Debug_EventScript_CheckIVs_End:: releaseall end -Debug_EventScript_Text_OffensiveIV: - .string "ATK IV: {STR_VAR_1}, SPATK IV: {STR_VAR_2}, SPEED IV: {STR_VAR_3}$" +Debug_EventScript_Text_OffensiveIVs: + .string "ATK IVs: {STR_VAR_1}, SPATK IVs: {STR_VAR_2}, SPEED IVs: {STR_VAR_3}$" -Debug_EventScript_Text_DefensiveIV: - .string "HP IV: {STR_VAR_1}, DEF IV: {STR_VAR_2}, SPDEF IV: {STR_VAR_3}$" +Debug_EventScript_Text_DefensiveIVs: + .string "HP IVs: {STR_VAR_1}, DEF IVs: {STR_VAR_2}, SPDEF IVs: {STR_VAR_3}$" Debug_EventScript_Script_1:: end diff --git a/data/specials.inc b/data/specials.inc index d0efad6477..f02497d603 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -550,7 +550,7 @@ gSpecials:: def_special ObjectEventInteractionBerryHasWeed def_special ObjectEventInteractionBerryHasPests def_special CanWaterBerryPlot - def_special Script_GetChosenMonOffensiveEV - def_special Script_GetChosenMonDefensiveEV - def_special Script_GetChosenMonOffensiveIV - def_special Script_GetChosenMonDefensiveIV + def_special Script_GetChosenMonOffensiveEVs + def_special Script_GetChosenMonDefensiveEVs + def_special Script_GetChosenMonOffensiveIVs + def_special Script_GetChosenMonDefensiveIVs diff --git a/include/config/decap.h b/include/config/decap.h index 45755bbde9..60168d0a27 100644 --- a/include/config/decap.h +++ b/include/config/decap.h @@ -11,7 +11,7 @@ Exceptions: - ASM strings that use `.fixstr` - If mirroring enabled, string addresses passed through MirrorPtr */ -#define DECAP_ENABLED TRUE +#define DECAP_ENABLED FALSE // Enables signaling that a string's case should be preserved // by *mirroring* its address: i.e 08xxxxxx to 0Axxxxxx // Unless you are targeting a different platform than the GBA, diff --git a/include/config/level_caps.h b/include/config/level_caps.h new file mode 100644 index 0000000000..e8d7b8818e --- /dev/null +++ b/include/config/level_caps.h @@ -0,0 +1,21 @@ +#ifndef GUARD_CONFIG_LEVEL_CAP_H +#define GUARD_CONFIG_LEVEL_CAP_H + +// Constants +#define EXP_CAP_NONE 0 // Regular behavior, no level caps are applied +#define EXP_CAP_HARD 1 // Pokémon with a level >= the level cap cannot gain any experience +#define EXP_CAP_SOFT 2 // Pokémon with a level >= the level cap will gain reduced experience + +#define LEVEL_CAP_NONE 0 // No level cap, only applicable if B_EXP_CAP_TYPE is EXP_CAP_NONE +#define LEVEL_CAP_FLAG_LIST 1 // Level cap is chosen according to the first unset flag in `sLevelCapFlagMap` +#define LEVEL_CAP_VARIABLE 2 // Level cap is chosen according to the contents of the event variable specified by B_LEVEL_CAP_VARIABLE + +// Configs +#define B_EXP_CAP_TYPE EXP_CAP_NONE // [EXP_CAP_NONE, EXP_CAP_HARD, EXP_CAP_SOFT] choose the type of level cap to apply +#define B_LEVEL_CAP_TYPE LEVEL_CAP_NONE // [LEVEL_CAP_NONE, LEVEL_CAP_FLAG_LIST, LEVEL_CAP_VARIABLE] choose the method to derive the level cap +#define B_LEVEL_CAP_VARIABLE 0 // event variable used to derive level cap if B_LEVEL_CAP_TYPE is set to LEVEL_CAP_VARIABLE + +#define B_RARE_CANDY_CAP FALSE // If set to true, Rare Candies can't be used to go over the level cap +#define B_LEVEL_CAP_EXP_UP FALSE // If set to true, mons under level cap will receive more experience + +#endif /* GUARD_CONFIG_LEVEL_CAP_H */ diff --git a/include/config/overworld.h b/include/config/overworld.h index 3ddbd435e3..06a396d4dd 100644 --- a/include/config/overworld.h +++ b/include/config/overworld.h @@ -20,6 +20,7 @@ #define GEN_6_ORAS GEN_LATEST + 1 #define OW_BERRY_MUTATIONS FALSE // If enabled, Berry plants can mutate based on berries planted next to them. +#define OW_BERRY_MUTATION_CHANCE 25 // Determines the % chance of a mutation. #define OW_BERRY_MOISTURE FALSE // If enabled, Berry watering is not a matter of watering it once per stage, but rather of keeping the soil moist. #define OW_BERRY_ALWAYS_WATERABLE FALSE // If OW_BERRY_MOISTURE is enabled, this setting allows the player to continuously water soil; dry soil will cause a decrease in Berry Yield (like Gen4). When off, soil can only be watered when dry and watering increases yield (like Gen6). #define OW_BERRY_MULCH_USAGE FALSE // If enabled, Mulch can be used on soil to fertilize it. Otherwise, it is considered unusable. Note that moisture effects only work with OW_BERRY_MOISTURE enabled! diff --git a/include/constants/global.h b/include/constants/global.h index 521a4cea27..bcbf37e2d7 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -4,6 +4,7 @@ #include "config/battle.h" #include "config/debug.h" #include "config/item.h" +#include "config/level_caps.h" #include "config/pokemon.h" #include "config/overworld.h" #include "config/decap.h" diff --git a/include/level_caps.h b/include/level_caps.h index ed70ac665b..c455408079 100644 --- a/include/level_caps.h +++ b/include/level_caps.h @@ -1,23 +1,6 @@ #ifndef GUARD_LEVEL_CAP_H #define GUARD_LEVEL_CAP_H -// experience (soft-)caps - -#define EXP_CAP_NONE 0 // Regular behavior, no level caps are applied -#define EXP_CAP_HARD 1 // Pokémon with a level >= the level cap cannot gain any experience -#define EXP_CAP_SOFT 2 // Pokémon with a level >= the level cap will gain reduced experience - -#define LEVEL_CAP_NONE 0 // No level cap, only applicable if B_EXP_CAP_TYPE is EXP_CAP_NONE -#define LEVEL_CAP_FLAG_LIST 1 // Level cap is chosen according to the first unset flag in `sLevelCapFlagMap` -#define LEVEL_CAP_VARIABLE 2 // Level cap is chosen according to the contents of the event variable specified by B_LEVEL_CAP_VARIABLE - -#define B_EXP_CAP_TYPE EXP_CAP_NONE // [EXP_CAP_NONE, EXP_CAP_HARD, EXP_CAP_SOFT] choose the type of level cap to apply -#define B_LEVEL_CAP_TYPE LEVEL_CAP_NONE // [LEVEL_CAP_NONE, LEVEL_CAP_FLAG_LIST, LEVEL_CAP_VARIABLE] choose the method to derive the level cap -#define B_LEVEL_CAP_VARIABLE 0 // event variable used to derive level cap if B_LEVEL_CAP_TYPE is set to LEVEL_CAP_VARIABLE - -#define B_RARE_CANDY_CAP FALSE // If set to true, Rare Candies can't be used to go over the level cap -#define B_LEVEL_CAP_EXP_UP FALSE // If set to true, mons under level cap will receive more experience - #if B_EXP_CAP_TYPE != EXP_CAP_NONE && B_EXP_CAP_TYPE != EXP_CAP_HARD && B_EXP_CAP_TYPE != EXP_CAP_SOFT #error "Invalid choice for B_EXP_CAP_TYPE, must be of [EXP_CAP_NONE, EXP_CAP_HARD, EXP_CAP_SOFT]" #endif diff --git a/include/script_pokemon_util.h b/include/script_pokemon_util.h index 643e8d9225..2f7c2f5bd5 100644 --- a/include/script_pokemon_util.h +++ b/include/script_pokemon_util.h @@ -9,9 +9,9 @@ void CreateScriptedDoubleWildMon(u16, u8, u16, u16, u8, u16); void ScriptSetMonMoveSlot(u8, u16, u8); void ReducePlayerPartyToSelectedMons(void); void HealPlayerParty(void); -void Script_GetChosenMonOffensiveEV(void); -void Script_GetChosenMonDefensiveEV(void); -void Script_GetChosenMonOffensiveIV(void); -void Script_GetChosenMonDefensiveIV(void); +void Script_GetChosenMonOffensiveEVs(void); +void Script_GetChosenMonDefensiveEVs(void); +void Script_GetChosenMonOffensiveIVs(void); +void Script_GetChosenMonDefensiveIVs(void); #endif // GUARD_SCRIPT_POKEMON_UTIL_H diff --git a/src/berry.c b/src/berry.c index efa5ee9bbe..e66b106ca9 100644 --- a/src/berry.c +++ b/src/berry.c @@ -2295,8 +2295,6 @@ bool8 PlayerHasMulch(void) } #if OW_BERRY_MUTATIONS == TRUE -#define BERRY_MUTATION_CHANCE 25 - static const u8 sBerryMutations[][3] = { {ITEM_TO_BERRY(ITEM_IAPAPA_BERRY), ITEM_TO_BERRY(ITEM_MAGO_BERRY), ITEM_TO_BERRY(ITEM_POMEG_BERRY)}, {ITEM_TO_BERRY(ITEM_CHESTO_BERRY), ITEM_TO_BERRY(ITEM_PERSIM_BERRY), ITEM_TO_BERRY(ITEM_KELPSY_BERRY)}, @@ -2353,7 +2351,7 @@ static u8 TryForMutation(u8 berryTreeId, u8 berry) { x2 = gObjectEvents[j].currentCoords.x; y2 = gObjectEvents[j].currentCoords.y; - if (Random() % 100 < (BERRY_MUTATION_CHANCE * (mulch == ITEM_TO_MULCH(ITEM_SURPRISE_MULCH) || mulch == ITEM_TO_MULCH(ITEM_AMAZE_MULCH))) && ( + if (Random() % 100 < (OW_BERRY_MUTATION_CHANCE * (mulch == ITEM_TO_MULCH(ITEM_SURPRISE_MULCH) || mulch == ITEM_TO_MULCH(ITEM_AMAZE_MULCH))) && ( (x1 == x2 && y1 == y2 - 1) || (x1 == x2 && y1 == y2 + 1) || (x1 == x2 - 1 && y1 == y2) || diff --git a/src/debug.c b/src/debug.c index 6482c6dbd7..ea3ffbabb8 100644 --- a/src/debug.c +++ b/src/debug.c @@ -127,8 +127,8 @@ enum PartyDebugMenu DEBUG_PARTY_MENU_ITEM_HATCH_AN_EGG, DEBUG_PARTY_MENU_ITEM_HEAL_PARTY, DEBUG_PARTY_MENU_ITEM_INFLICT_STATUS1, - DEBUG_PARTY_MENU_ITEM_CHECK_EV, - DEBUG_PARTY_MENU_ITEM_CHECK_IV, + DEBUG_PARTY_MENU_ITEM_CHECK_EVS, + DEBUG_PARTY_MENU_ITEM_CHECK_IVS, DEBUG_PARTY_MENU_ITEM_CLEAR_PARTY, }; @@ -392,8 +392,8 @@ static void DebugAction_Party_MoveReminder(u8 taskId); static void DebugAction_Party_HatchAnEgg(u8 taskId); static void DebugAction_Party_HealParty(u8 taskId); static void DebugAction_Party_InflictStatus1(u8 taskId); -static void DebugAction_Party_CheckEV(u8 taskId); -static void DebugAction_Party_CheckIV(u8 taskId); +static void DebugAction_Party_CheckEVs(u8 taskId); +static void DebugAction_Party_CheckIVs(u8 taskId); static void DebugAction_Party_ClearParty(u8 taskId); static void DebugAction_FlagsVars_Flags(u8 taskId); @@ -452,8 +452,8 @@ static void DebugAction_BerryFunctions_Weeds(u8 taskId); extern const u8 Debug_FlagsNotSetOverworldConfigMessage[]; extern const u8 Debug_FlagsNotSetBattleConfigMessage[]; extern const u8 Debug_FlagsAndVarNotSetBattleConfigMessage[]; -extern const u8 Debug_EventScript_CheckEV[]; -extern const u8 Debug_EventScript_CheckIV[]; +extern const u8 Debug_EventScript_CheckEVs[]; +extern const u8 Debug_EventScript_CheckIVs[]; extern const u8 Debug_EventScript_InflictStatus1[]; extern const u8 Debug_EventScript_Script_1[]; extern const u8 Debug_EventScript_Script_2[]; @@ -550,8 +550,8 @@ static const u8 sDebugText_Party_MoveReminder[] = _("Move Reminder"); static const u8 sDebugText_Party_HatchAnEgg[] = _("Hatch an Egg"); static const u8 sDebugText_Party_HealParty[] = _("Heal party"); static const u8 sDebugText_Party_InflictStatus1[] = _("Inflict Status1"); -static const u8 sDebugText_Party_CheckEV[] = _("Check EV"); -static const u8 sDebugText_Party_CheckIV[] = _("Check IV"); +static const u8 sDebugText_Party_CheckEVs[] = _("Check EVs"); +static const u8 sDebugText_Party_CheckIVs[] = _("Check IVs"); static const u8 sDebugText_Party_ClearParty[] = _("Clear Party"); // Flags/Vars Menu static const u8 sDebugText_FlagsVars_Flags[] = _("Set Flag XYZ…{CLEAR_TO 110}{RIGHT_ARROW}"); @@ -748,8 +748,8 @@ static const struct ListMenuItem sDebugMenu_Items_Party[] = [DEBUG_PARTY_MENU_ITEM_HATCH_AN_EGG] = {sDebugText_Party_HatchAnEgg, DEBUG_PARTY_MENU_ITEM_HATCH_AN_EGG}, [DEBUG_PARTY_MENU_ITEM_HEAL_PARTY] = {sDebugText_Party_HealParty, DEBUG_PARTY_MENU_ITEM_HEAL_PARTY}, [DEBUG_PARTY_MENU_ITEM_INFLICT_STATUS1] = {sDebugText_Party_InflictStatus1, DEBUG_PARTY_MENU_ITEM_INFLICT_STATUS1}, - [DEBUG_PARTY_MENU_ITEM_CHECK_EV] = {sDebugText_Party_CheckEV, DEBUG_PARTY_MENU_ITEM_CHECK_EV}, - [DEBUG_PARTY_MENU_ITEM_CHECK_IV] = {sDebugText_Party_CheckIV, DEBUG_PARTY_MENU_ITEM_CHECK_IV}, + [DEBUG_PARTY_MENU_ITEM_CHECK_EVS] = {sDebugText_Party_CheckEVs, DEBUG_PARTY_MENU_ITEM_CHECK_EVS}, + [DEBUG_PARTY_MENU_ITEM_CHECK_IVS] = {sDebugText_Party_CheckIVs, DEBUG_PARTY_MENU_ITEM_CHECK_IVS}, [DEBUG_PARTY_MENU_ITEM_CLEAR_PARTY] = {sDebugText_Party_ClearParty, DEBUG_PARTY_MENU_ITEM_CLEAR_PARTY}, }; @@ -917,8 +917,8 @@ static void (*const sDebugMenu_Actions_Party[])(u8) = [DEBUG_PARTY_MENU_ITEM_HATCH_AN_EGG] = DebugAction_Party_HatchAnEgg, [DEBUG_PARTY_MENU_ITEM_HEAL_PARTY] = DebugAction_Party_HealParty, [DEBUG_PARTY_MENU_ITEM_INFLICT_STATUS1] = DebugAction_Party_InflictStatus1, - [DEBUG_PARTY_MENU_ITEM_CHECK_EV] = DebugAction_Party_CheckEV, - [DEBUG_PARTY_MENU_ITEM_CHECK_IV] = DebugAction_Party_CheckIV, + [DEBUG_PARTY_MENU_ITEM_CHECK_EVS] = DebugAction_Party_CheckEVs, + [DEBUG_PARTY_MENU_ITEM_CHECK_IVS] = DebugAction_Party_CheckIVs, [DEBUG_PARTY_MENU_ITEM_CLEAR_PARTY] = DebugAction_Party_ClearParty, }; @@ -5090,14 +5090,14 @@ static void DebugAction_Party_InflictStatus1(u8 taskId) Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_InflictStatus1); } -static void DebugAction_Party_CheckEV(u8 taskId) +static void DebugAction_Party_CheckEVs(u8 taskId) { - Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_CheckEV); + Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_CheckEVs); } -static void DebugAction_Party_CheckIV(u8 taskId) +static void DebugAction_Party_CheckIVs(u8 taskId) { - Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_CheckIV); + Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_CheckIVs); } static void DebugAction_Party_ClearParty(u8 taskId) diff --git a/src/pokemon.c b/src/pokemon.c index 9bb8772af2..24b293842e 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -422,23 +422,23 @@ const s8 gNatureStatTable[NUM_NATURES][NUM_NATURE_STATS] = #include "data/pokemon/experience_tables.h" #if P_LVL_UP_LEARNSETS >= GEN_9 -#include "data/pokemon/level_up_learnsets/gen_9.h" +#include "data/pokemon/level_up_learnsets/gen_9.h" // Scarlet/Violet #elif P_LVL_UP_LEARNSETS >= GEN_8 -#include "data/pokemon/level_up_learnsets/gen_8.h" +#include "data/pokemon/level_up_learnsets/gen_8.h" // Sword/Shield #elif P_LVL_UP_LEARNSETS >= GEN_7 -#include "data/pokemon/level_up_learnsets/gen_7.h" +#include "data/pokemon/level_up_learnsets/gen_7.h" // Ultra Sun/ Ultra Moon #elif P_LVL_UP_LEARNSETS >= GEN_6 -#include "data/pokemon/level_up_learnsets/gen_6.h" +#include "data/pokemon/level_up_learnsets/gen_6.h" // Omega Ruby/Alpha Sapphire #elif P_LVL_UP_LEARNSETS >= GEN_5 -#include "data/pokemon/level_up_learnsets/gen_5.h" +#include "data/pokemon/level_up_learnsets/gen_5.h" // Black 2/White 2 #elif P_LVL_UP_LEARNSETS >= GEN_4 -#include "data/pokemon/level_up_learnsets/gen_4.h" +#include "data/pokemon/level_up_learnsets/gen_4.h" // HeartGold/SoulSilver #elif P_LVL_UP_LEARNSETS >= GEN_3 -#include "data/pokemon/level_up_learnsets/gen_3.h" +#include "data/pokemon/level_up_learnsets/gen_3.h" // Ruby/Sapphire/Emerald #elif P_LVL_UP_LEARNSETS >= GEN_2 -#include "data/pokemon/level_up_learnsets/gen_2.h" +#include "data/pokemon/level_up_learnsets/gen_2.h" // Crystal #elif P_LVL_UP_LEARNSETS >= GEN_1 -#include "data/pokemon/level_up_learnsets/gen_1.h" +#include "data/pokemon/level_up_learnsets/gen_1.h" // Yellow #endif #include "data/pokemon/teachable_learnsets.h" diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c index 37f0336f11..e02da5b06e 100644 --- a/src/script_pokemon_util.c +++ b/src/script_pokemon_util.c @@ -463,28 +463,28 @@ void ScrCmd_givemon(struct ScriptContext *ctx) #undef PARSE_FLAG -void Script_GetChosenMonOffensiveEV(void) +void Script_GetChosenMonOffensiveEVs(void) { ConvertIntToDecimalStringN(gStringVar1, GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_ATK_EV), STR_CONV_MODE_LEFT_ALIGN, 3); ConvertIntToDecimalStringN(gStringVar2, GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPATK_EV), STR_CONV_MODE_LEFT_ALIGN, 3); ConvertIntToDecimalStringN(gStringVar3, GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPEED_EV), STR_CONV_MODE_LEFT_ALIGN, 3); } -void Script_GetChosenMonDefensiveEV(void) +void Script_GetChosenMonDefensiveEVs(void) { ConvertIntToDecimalStringN(gStringVar1, GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_HP_EV), STR_CONV_MODE_LEFT_ALIGN, 3); ConvertIntToDecimalStringN(gStringVar2, GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_DEF_EV), STR_CONV_MODE_LEFT_ALIGN, 3); ConvertIntToDecimalStringN(gStringVar3, GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPDEF_EV), STR_CONV_MODE_LEFT_ALIGN, 3); } -void Script_GetChosenMonOffensiveIV(void) +void Script_GetChosenMonOffensiveIVs(void) { ConvertIntToDecimalStringN(gStringVar1, GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_ATK_IV), STR_CONV_MODE_LEFT_ALIGN, 3); ConvertIntToDecimalStringN(gStringVar2, GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPATK_IV), STR_CONV_MODE_LEFT_ALIGN, 3); ConvertIntToDecimalStringN(gStringVar3, GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPEED_IV), STR_CONV_MODE_LEFT_ALIGN, 3); } -void Script_GetChosenMonDefensiveIV(void) +void Script_GetChosenMonDefensiveIVs(void) { ConvertIntToDecimalStringN(gStringVar1, GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_HP_IV), STR_CONV_MODE_LEFT_ALIGN, 3); ConvertIntToDecimalStringN(gStringVar2, GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_DEF_IV), STR_CONV_MODE_LEFT_ALIGN, 3); From 306621638915c4a503a3e44ad6b40acc10e4b282 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 12 Mar 2024 08:32:06 -0300 Subject: [PATCH 45/55] Type array tweaks (#4276) * Using Z-Moves in type array * Added Arceus form data --- include/data.h | 3 ++- src/battle_main.c | 54 ++++++++++++++++++++++++++++++--------------- src/battle_z_move.c | 14 ++++++------ 3 files changed, 45 insertions(+), 26 deletions(-) diff --git a/include/data.h b/include/data.h index df11e48a10..eba8e6f809 100644 --- a/include/data.h +++ b/include/data.h @@ -104,7 +104,7 @@ struct TypeInfo u8 name[TYPE_NAME_LENGTH + 1]; u8 generic[17]; u8 palette; - //u16 zMove; + u16 zMove; u16 maxMove; //u16 enhanceItem; //u16 berry; @@ -113,6 +113,7 @@ struct TypeInfo //u16 memory; //u16 zCrystal; //u16 teraShard; + //u16 arceusForm; }; extern const u16 gMinigameDigits_Pal[]; diff --git a/src/battle_main.c b/src/battle_main.c index 782016ee40..19acc700e1 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -303,20 +303,21 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .name = _("Normal"), .generic = _("a NORMAL move"), .palette = 13, - //.zMove = MOVE_BREAKNECK_BLITZ, + .zMove = MOVE_BREAKNECK_BLITZ, .maxMove = MOVE_MAX_STRIKE, //.enhanceItem = ITEM_SILK_SCARF, //.berry = ITEM_CHILAN_BERRY, //.gem = ITEM_NORMAL_GEM, //.zCrystal = ITEM_NORMALIUM_Z, //.teraShard = ITEM_NORMAL_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_NORMAL, }, [TYPE_FIGHTING] = { .name = _("Fight"), .generic = _("a FIGHTING move"), .palette = 13, - //.zMove = MOVE_ALL_OUT_PUMMELING, + .zMove = MOVE_ALL_OUT_PUMMELING, .maxMove = MOVE_MAX_KNUCKLE, //.enhanceItem = ITEM_BLACK_BELT, //.berry = ITEM_CHOPLE_BERRY, @@ -325,13 +326,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_FIST_PLATE, //.memory = ITEM_FIGHTING_MEMORY, //.teraShard = ITEM_FIGHTING_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_FIGHTING, }, [TYPE_FLYING] = { .name = _("Flying"), .generic = _("a FLYING move"), .palette = 14, - //.zMove = MOVE_SUPERSONIC_SKYSTRIKE, + .zMove = MOVE_SUPERSONIC_SKYSTRIKE, .maxMove = MOVE_MAX_AIRSTREAM, //.enhanceItem = ITEM_SHARP_BEAK, //.berry = ITEM_COBA_BERRY, @@ -340,13 +342,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_SKY_PLATE, //.memory = ITEM_FLYING_MEMORY, //.teraShard = ITEM_FLYING_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_FLYING, }, [TYPE_POISON] = { .name = _("Poison"), .generic = _("a POISON move"), .palette = 14, - //.zMove = MOVE_ACID_DOWNPOUR, + .zMove = MOVE_ACID_DOWNPOUR, .maxMove = MOVE_MAX_OOZE, //.enhanceItem = ITEM_POISON_BARB, //.berry = ITEM_KEBIA_BERRY, @@ -355,13 +358,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_TOXIC_PLATE, //.memory = ITEM_POISON_MEMORY, //.teraShard = ITEM_POISON_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_POISON, }, [TYPE_GROUND] = { .name = _("Ground"), .generic = _("a GROUND move"), .palette = 13, - //.zMove = MOVE_TECTONIC_RAGE, + .zMove = MOVE_TECTONIC_RAGE, .maxMove = MOVE_MAX_QUAKE, //.enhanceItem = ITEM_SOFT_SAND, //.berry = ITEM_SHUCA_BERRY, @@ -370,13 +374,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_EARTH_PLATE, //.memory = ITEM_GROUND_MEMORY, //.teraShard = ITEM_GROUND_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_GROUND, }, [TYPE_ROCK] = { .name = _("Rock"), .generic = _("a ROCK move"), .palette = 13, - //.zMove = MOVE_CONTINENTAL_CRUSH, + .zMove = MOVE_CONTINENTAL_CRUSH, .maxMove = MOVE_MAX_ROCKFALL, //.enhanceItem = ITEM_HARD_STONE, //.berry = ITEM_CHARTI_BERRY, @@ -385,13 +390,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_STONE_PLATE, //.memory = ITEM_ROCK_MEMORY, //.teraShard = ITEM_ROCK_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_ROCK, }, [TYPE_BUG] = { .name = _("Bug"), .generic = _("a BUG move"), .palette = 15, - //.zMove = MOVE_SAVAGE_SPIN_OUT, + .zMove = MOVE_SAVAGE_SPIN_OUT, .maxMove = MOVE_MAX_FLUTTERBY, //.enhanceItem = ITEM_SILVER_POWDER, //.berry = ITEM_TANGA_BERRY, @@ -400,13 +406,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_INSECT_PLATE, //.memory = ITEM_BUG_MEMORY, //.teraShard = ITEM_BUG_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_BUG, }, [TYPE_GHOST] = { .name = _("Ghost"), .generic = _("a GHOST move"), .palette = 14, - //.zMove = MOVE_NEVER_ENDING_NIGHTMARE, + .zMove = MOVE_NEVER_ENDING_NIGHTMARE, .maxMove = MOVE_MAX_PHANTASM, //.enhanceItem = ITEM_SPELL_TAG, //.berry = ITEM_KASIB_BERRY, @@ -415,13 +422,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_SPOOKY_PLATE, //.memory = ITEM_GHOST_MEMORY, //.teraShard = ITEM_GHOST_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_GHOST, }, [TYPE_STEEL] = { .name = _("Steel"), .generic = _("a STEEL move"), .palette = 13, - //.zMove = MOVE_CORKSCREW_CRASH, + .zMove = MOVE_CORKSCREW_CRASH, .maxMove = MOVE_MAX_STEELSPIKE, //.enhanceItem = ITEM_METAL_COAT, //.berry = ITEM_BABIRI_BERRY, @@ -430,6 +438,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_IRON_PLATE, //.memory = ITEM_STEEL_MEMORY, //.teraShard = ITEM_STEEL_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_STEEL, }, [TYPE_MYSTERY] = { @@ -442,7 +451,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .name = _("Fire"), .generic = _("a FIRE move"), .palette = 13, - //.zMove = MOVE_INFERNO_OVERDRIVE, + .zMove = MOVE_INFERNO_OVERDRIVE, .maxMove = MOVE_MAX_FLARE, //.enhanceItem = ITEM_CHARCOAL, //.berry = ITEM_OCCA_BERRY, @@ -451,13 +460,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_FLAME_PLATE, //.memory = ITEM_FIRE_MEMORY, //.teraShard = ITEM_FIRE_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_FIRE, }, [TYPE_WATER] = { .name = _("Water"), .generic = _("a WATER move"), .palette = 14, - //.zMove = MOVE_HYDRO_VORTEX, + .zMove = MOVE_HYDRO_VORTEX, .maxMove = MOVE_MAX_GEYSER, //.enhanceItem = ITEM_MYSTIC_WATER, //.berry = ITEM_PASSHO_BERRY, @@ -466,13 +476,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_SPLASH_PLATE, //.memory = ITEM_WATER_MEMORY, //.teraShard = ITEM_WATER_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_WATER, }, [TYPE_GRASS] = { .name = _("Grass"), .generic = _("a GRASS move"), .palette = 15, - //.zMove = MOVE_BLOOM_DOOM, + .zMove = MOVE_BLOOM_DOOM, .maxMove = MOVE_MAX_OVERGROWTH, //.enhanceItem = ITEM_MIRACLE_SEED, //.berry = ITEM_RINDO_BERRY, @@ -481,13 +492,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_MEADOW_PLATE, //.memory = ITEM_GRASS_MEMORY, //.teraShard = ITEM_GRASS_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_GRASS, }, [TYPE_ELECTRIC] = { .name = _("Electr"), .generic = _("an ELECTRIC move"), .palette = 13, - //.zMove = MOVE_GIGAVOLT_HAVOC, + .zMove = MOVE_GIGAVOLT_HAVOC, .maxMove = MOVE_MAX_LIGHTNING, //.enhanceItem = ITEM_MAGNET, //.berry = ITEM_WACAN_BERRY, @@ -496,13 +508,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_ZAP_PLATE, //.memory = ITEM_ELECTRIC_MEMORY, //.teraShard = ITEM_ELECTRIC_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_ELECTRIC, }, [TYPE_PSYCHIC] = { .name = _("Psychc"), .generic = _("a PSYCHIC move"), .palette = 14, - //.zMove = MOVE_SHATTERED_PSYCHE, + .zMove = MOVE_SHATTERED_PSYCHE, .maxMove = MOVE_MAX_MINDSTORM, //.enhanceItem = ITEM_TWISTED_SPOON, //.berry = ITEM_PAYAPA_BERRY, @@ -511,13 +524,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_MIND_PLATE, //.memory = ITEM_PSYCHIC_MEMORY, //.teraShard = ITEM_PSYCHIC_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_PSYCHIC, }, [TYPE_ICE] = { .name = _("Ice"), .generic = _("an ICE move"), .palette = 14, - //.zMove = MOVE_SUBZERO_SLAMMER, + .zMove = MOVE_SUBZERO_SLAMMER, .maxMove = MOVE_MAX_HAILSTORM, //.enhanceItem = ITEM_NEVER_MELT_ICE, //.berry = ITEM_YACHE_BERRY, @@ -526,13 +540,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_ICICLE_PLATE, //.memory = ITEM_ICE_MEMORY, //.teraShard = ITEM_ICE_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_ICE, }, [TYPE_DRAGON] = { .name = _("Dragon"), .generic = _("a DRAGON move"), .palette = 15, - //.zMove = MOVE_DEVASTATING_DRAKE, + .zMove = MOVE_DEVASTATING_DRAKE, .maxMove = MOVE_MAX_WYRMWIND, //.enhanceItem = ITEM_DRAGON_FANG, //.berry = ITEM_HABAN_BERRY, @@ -541,13 +556,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_DRACO_PLATE, //.memory = ITEM_DRAGON_MEMORY, //.teraShard = ITEM_DRAGON_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_DRAGON, }, [TYPE_DARK] = { .name = _("Dark"), .generic = _("a DARK move"), .palette = 13, - //.zMove = MOVE_BLACK_HOLE_ECLIPSE, + .zMove = MOVE_BLACK_HOLE_ECLIPSE, .maxMove = MOVE_MAX_DARKNESS, //.enhanceItem = ITEM_BLACK_GLASSES, //.berry = ITEM_COLBUR_BERRY, @@ -556,13 +572,14 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_DREAD_PLATE, //.memory = ITEM_DARK_MEMORY, //.teraShard = ITEM_DARK_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_DARK, }, [TYPE_FAIRY] = { .name = _("Fairy"), .generic = _("a FAIRY move"), .palette = 14, - //.zMove = MOVE_TWINKLE_TACKLE, + .zMove = MOVE_TWINKLE_TACKLE, .maxMove = MOVE_MAX_STARFALL, //.enhanceItem = ITEM_FAIRY_FEATHER, //.berry = ITEM_ROSELI_BERRY, @@ -571,6 +588,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.plate= ITEM_PIXIE_PLATE, //.memory = ITEM_FAIRY_MEMORY, //.teraShard = ITEM_FAIRY_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_FAIRY, }, /* [TYPE_STELLAR] = diff --git a/src/battle_z_move.c b/src/battle_z_move.c index f0d2938b8e..e4ea9fabc0 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -378,13 +378,13 @@ static u16 GetTypeBasedZMove(u16 move, u8 battler) { u8 moveType = gMovesInfo[move].type; - // Get z move from type - if (moveType < TYPE_FIRE) - return MOVE_BREAKNECK_BLITZ + moveType; - else if (moveType >= TYPE_FAIRY) - return MOVE_TWINKLE_TACKLE + (moveType - TYPE_FAIRY); - else - return MOVE_BREAKNECK_BLITZ + (moveType - 1); + if (moveType >= NUMBER_OF_MON_TYPES) + moveType = TYPE_MYSTERY; + + // Get Z-Move from type + if (gTypesInfo[moveType].zMove == MOVE_NONE) // failsafe + return gTypesInfo[0].zMove; + return gTypesInfo[moveType].zMove; } bool32 MoveSelectionDisplayZMove(u16 zmove, u32 battler) From dbd7e2a7c817b17166ab9c797ebcc0b51952620f Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 14 Mar 2024 05:42:09 -0300 Subject: [PATCH 46/55] Fixed DisplayCaughtMonDexPage graphical issue + cry (#4279) --- src/pokedex.c | 9 +++++---- src/pokedex_plus_hgss.c | 2 +- src/pokemon.c | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/pokedex.c b/src/pokedex.c index 238d418817..57a2ccdcd1 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -3996,7 +3996,8 @@ u8 DisplayCaughtMonDexPage(u16 species, u32 otId, u32 personality) static void Task_DisplayCaughtMonDexPage(u8 taskId) { u8 spriteId; - u16 dexNum = SpeciesToNationalPokedexNum(gTasks[taskId].tSpecies); + u16 species = gTasks[taskId].tSpecies; + u16 dexNum = SpeciesToNationalPokedexNum(species); switch (gTasks[taskId].tState) { @@ -4022,7 +4023,7 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId) FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0)); PutWindowTilemap(WIN_INFO); PutWindowTilemap(WIN_FOOTPRINT); - DrawFootprint(WIN_FOOTPRINT, dexNum); + DrawFootprint(WIN_FOOTPRINT, species); CopyWindowToVram(WIN_FOOTPRINT, COPYWIN_GFX); ResetPaletteFade(); LoadPokedexBgPalette(FALSE); @@ -4039,7 +4040,7 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId) gTasks[taskId].tState++; break; case 4: - spriteId = CreateMonPicSprite(NationalPokedexNumToSpecies(dexNum), 0, ((u16)gTasks[taskId].tPersonalityHi << 16) | (u16)gTasks[taskId].tPersonalityLo, TRUE, MON_PAGE_X, MON_PAGE_Y, 0, TAG_NONE); + spriteId = CreateMonPicSprite(species, FALSE, ((u16)gTasks[taskId].tPersonalityHi << 16) | (u16)gTasks[taskId].tPersonalityLo, TRUE, MON_PAGE_X, MON_PAGE_Y, 0, TAG_NONE); gSprites[spriteId].oam.priority = 0; BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK); SetVBlankCallback(gPokedexVBlankCB); @@ -4058,7 +4059,7 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId) case 6: if (!gPaletteFade.active) { - PlayCry_Normal(NationalPokedexNumToSpecies(dexNum), 0); + PlayCry_Normal(species, 0); gTasks[taskId].tPalTimer = 0; gTasks[taskId].func = Task_HandleCaughtMonPageInput; } diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c index a1c8b795f5..3ff358f384 100644 --- a/src/pokedex_plus_hgss.c +++ b/src/pokedex_plus_hgss.c @@ -4206,7 +4206,7 @@ void Task_DisplayCaughtMonDexPageHGSS(u8 taskId) case 6: if (!gPaletteFade.active) { - PlayCry_Normal(NationalPokedexNumToSpeciesHGSS(dexNum), 0); + PlayCry_Normal(species, 0); gTasks[taskId].tPalTimer = 0; gTasks[taskId].func = Task_HandleCaughtMonPageInput; } diff --git a/src/pokemon.c b/src/pokemon.c index ee3cc643b8..e484bfc7d7 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4217,6 +4217,7 @@ u16 NationalToHoennOrder(u16 nationalNum) u16 SpeciesToNationalPokedexNum(u16 species) { + species = SanitizeSpeciesId(species); if (!species) return NATIONAL_DEX_NONE; From b5af343dc4539da467c95acf92aeb92a4f59bdaf Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Thu, 14 Mar 2024 21:20:13 +0100 Subject: [PATCH 47/55] Reverts additional move effect macros (#4277) --- include/battle_util.h | 2 +- include/pokemon.h | 12 +++----- src/battle_ai_main.c | 27 +++++++--------- src/battle_ai_util.c | 23 ++++++-------- src/battle_script_commands.c | 21 ++++++------- src/battle_util.c | 60 +++++++++++++++++++++++------------- 6 files changed, 75 insertions(+), 70 deletions(-) diff --git a/include/battle_util.h b/include/battle_util.h index 9ebb2e01e6..8606e7ae0b 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -201,7 +201,7 @@ bool32 IsHealBlockPreventingMove(u32 battler, u32 move); bool32 HasEnoughHpToEatBerry(u32 battler, u32 hpFraction, u32 itemId); bool32 IsPartnerMonFromSameTrainer(u32 battler); u8 GetCategoryBasedOnStats(u32 battler); -bool32 MoveIsAffectedBySheerForce(u16 move); +bool32 MoveIsAffectedBySheerForce(u32 move); bool32 TestIfSheerForceAffected(u32 battler, u16 move); void TryRestoreHeldItems(void); bool32 CanStealItem(u32 battlerStealing, u32 battlerItem, u16 item); diff --git a/include/pokemon.h b/include/pokemon.h index fa2c0f6e06..4baf6a85a1 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -467,7 +467,8 @@ struct MoveInfo u32 strikeCount:4; // Max 15 hits. Defaults to 1 if not set. May apply its effect on each hit. u32 criticalHitStage:2; u32 alwaysCriticalHit:1; - // 14 bits left to complete this word - continues into flags + u32 numAdditionalEffects:2; // limited to 3 - don't want to get too crazy + // 12 bits left to complete this word - continues into flags // Flags u32 makesContact:1; @@ -516,7 +517,7 @@ struct MoveInfo u32 argument; // primary/secondary effects - uintptr_t additionalEffects; + const struct AdditionalEffect *additionalEffects; // contest parameters u8 contestEffect; @@ -526,12 +527,7 @@ struct MoveInfo }; #define EFFECTS_ARR(...) (const struct AdditionalEffect[]) {__VA_ARGS__} -#define ADDITIONAL_EFFECTS(...) ((min(ARRAY_COUNT(EFFECTS_ARR( __VA_ARGS__ )), 15)) << 28) + (uintptr_t)(EFFECTS_ARR( __VA_ARGS__ )) - -// Retrieve a move's additional effects and the count thereof -#define GET_ADDITIONAL_EFFECTS(move) (void *)(gMovesInfo[move].additionalEffects & 0x8FFFFFF) -#define GET_ADDITIONAL_EFFECT_COUNT(move) (gMovesInfo[move].additionalEffects >> 28) -#define GET_ADDITIONAL_EFFECTS_AND_COUNT(move, _count, _effects) u32 _count = GET_ADDITIONAL_EFFECT_COUNT(move); const struct AdditionalEffect *_effects = GET_ADDITIONAL_EFFECTS(move) +#define ADDITIONAL_EFFECTS(...) EFFECTS_ARR( __VA_ARGS__ ), .numAdditionalEffects = ARRAY_COUNT(EFFECTS_ARR( __VA_ARGS__ )) // Just a hack to make a move boosted by Sheer Force despite having no secondary effects affected #define SHEER_FORCE_HACK { .moveEffect = 0, .chance = 100, } diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index c552f446db..6dd50eaaa1 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -3149,9 +3149,6 @@ static u32 AI_CalcMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) u32 movesetIndex = AI_THINKING_STRUCT->movesetIndex; u32 effectiveness = aiData->effectiveness[battlerAtk][battlerDef][movesetIndex]; - // additional effects - GET_ADDITIONAL_EFFECTS_AND_COUNT(move, additionalEffectsCount, additionalEffects); - s32 score = 0; u32 predictedMove = aiData->predictedMoves[battlerDef]; u32 predictedMoveSlot = GetMoveSlot(GetMovesArray(battlerDef), predictedMove); @@ -4381,19 +4378,19 @@ static u32 AI_CalcMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) } // move effect checks // check move additional effects that are likely to happen - for (i = 0; i < additionalEffectsCount; i++) + for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) { // Only consider effects with a guaranteed chance to happen - if (!MoveEffectIsGuaranteed(battlerAtk, aiData->abilities[battlerAtk], &additionalEffects[i])) + if (!MoveEffectIsGuaranteed(battlerAtk, aiData->abilities[battlerAtk], &gMovesInfo[move].additionalEffects[i])) continue; // Consider move effects that target self - if (additionalEffects[i].self) + if (gMovesInfo[move].additionalEffects[i].self) { - u32 oneStageStatId = STAT_CHANGE_ATK + additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_PLUS_1; - u32 twoStageStatId = STAT_CHANGE_ATK_2 + additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_PLUS_1; + u32 oneStageStatId = STAT_CHANGE_ATK + gMovesInfo[move].additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_PLUS_1; + u32 twoStageStatId = STAT_CHANGE_ATK_2 + gMovesInfo[move].additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_PLUS_1; - switch (additionalEffects[i].moveEffect) + switch (gMovesInfo[move].additionalEffects[i].moveEffect) { case MOVE_EFFECT_SPD_PLUS_2: case MOVE_EFFECT_SPD_PLUS_1: @@ -4444,7 +4441,7 @@ static u32 AI_CalcMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) } else // consider move effects that hinder the target { - switch (additionalEffects[i].moveEffect) + switch (gMovesInfo[move].additionalEffects[i].moveEffect) { case MOVE_EFFECT_FLINCH: score += ShouldTryToFlinch(battlerAtk, battlerDef, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], move); @@ -4736,10 +4733,9 @@ static s32 AI_SetupFirstTurn(u32 battlerAtk, u32 battlerDef, u32 move, s32 score { // TEMPORARY - should applied to all moves regardless of EFFECT // Consider move effects - GET_ADDITIONAL_EFFECTS_AND_COUNT(move, additionalEffectsCount, additionalEffects); - for (i = 0; i < additionalEffectsCount; i++) + for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) { - switch (additionalEffects[i].moveEffect) + switch (gMovesInfo[move].additionalEffects[i].moveEffect) { case MOVE_EFFECT_STEALTH_ROCK: case MOVE_EFFECT_SPIKES: @@ -4793,10 +4789,9 @@ static s32 AI_Risky(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { // TEMPORARY - should applied to all moves regardless of EFFECT // Consider move effects - GET_ADDITIONAL_EFFECTS_AND_COUNT(move, additionalEffectsCount, additionalEffects); - for (i = 0; i < additionalEffectsCount; i++) + for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) { - switch (additionalEffects[i].moveEffect) + switch (gMovesInfo[move].additionalEffects[i].moveEffect) { case MOVE_EFFECT_ALL_STATS_UP: if (Random() & 1) diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index bf5b250700..5d6e778277 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -596,7 +596,6 @@ static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s3 u32 i; u32 abilityDef = AI_DATA->abilities[battlerDef]; u32 abilityAtk = AI_DATA->abilities[battlerAtk]; - GET_ADDITIONAL_EFFECTS_AND_COUNT(move, additionalEffectsCount, additionalEffects); switch (gMovesInfo[move].effect) { @@ -611,12 +610,12 @@ static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s3 } // check ADDITIONAL_EFFECTS - for (i = 0; i < additionalEffectsCount; i++) + for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) { // Consider move effects that target self - if (additionalEffects[i].self) + if (gMovesInfo[move].additionalEffects[i].self) { - switch (additionalEffects[i].moveEffect) + switch (gMovesInfo[move].additionalEffects[i].moveEffect) { case MOVE_EFFECT_ATK_PLUS_1: if (BattlerStatCanRise(battlerAtk, abilityAtk, STAT_ATK)) @@ -646,7 +645,7 @@ static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s3 } else // consider move effects that hinder the target { - switch (additionalEffects[i].moveEffect) + switch (gMovesInfo[move].additionalEffects[i].moveEffect) { case MOVE_EFFECT_POISON: case MOVE_EFFECT_TOXIC: @@ -680,7 +679,7 @@ static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s3 case MOVE_EFFECT_SP_DEF_MINUS_1: case MOVE_EFFECT_ACC_MINUS_1: case MOVE_EFFECT_EVS_MINUS_1: - if (ShouldLowerStat(battlerDef, abilityDef, STAT_ATK + (additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_MINUS_1)) && noOfHitsToKo != 1) + if (ShouldLowerStat(battlerDef, abilityDef, STAT_ATK + (gMovesInfo[move].additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_MINUS_1)) && noOfHitsToKo != 1) return TRUE; break; case MOVE_EFFECT_ATK_MINUS_2: @@ -690,7 +689,7 @@ static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s3 case MOVE_EFFECT_SP_DEF_MINUS_2: case MOVE_EFFECT_ACC_MINUS_2: case MOVE_EFFECT_EVS_MINUS_2: - if (ShouldLowerStat(battlerDef, abilityDef, STAT_ATK + (additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_MINUS_2)) && noOfHitsToKo != 1) + if (ShouldLowerStat(battlerDef, abilityDef, STAT_ATK + (gMovesInfo[move].additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_MINUS_1)) && noOfHitsToKo != 1) return TRUE; break; } @@ -721,11 +720,9 @@ static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s break; default: { - GET_ADDITIONAL_EFFECTS_AND_COUNT(move, additionalEffectsCount, additionalEffects); - - for (i = 0; i < additionalEffectsCount; i++) + for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) { - switch (additionalEffects[i].moveEffect) + switch (gMovesInfo[move].additionalEffects[i].moveEffect) { case MOVE_EFFECT_ATK_MINUS_1: case MOVE_EFFECT_DEF_MINUS_1: @@ -737,12 +734,12 @@ static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s case MOVE_EFFECT_DEF_SPDEF_DOWN: case MOVE_EFFECT_SP_DEF_MINUS_1: case MOVE_EFFECT_SP_DEF_MINUS_2: - if ((additionalEffects[i].self && GetBattlerAbility(battlerAtk) != ABILITY_CONTRARY) + if ((gMovesInfo[move].additionalEffects[i].self && GetBattlerAbility(battlerAtk) != ABILITY_CONTRARY) || (noOfHitsToKo != 1 && abilityDef == ABILITY_CONTRARY && !IsMoldBreakerTypeAbility(abilityAtk))) return TRUE; break; case MOVE_EFFECT_RECHARGE: - return additionalEffects[i].self; + return gMovesInfo[move].additionalEffects[i].self; } } break; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index f70fd9df23..7c51af43be 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3858,21 +3858,21 @@ static void Cmd_setadditionaleffects(void) if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { - GET_ADDITIONAL_EFFECTS_AND_COUNT(gCurrentMove, additionalEffectsCount, additionalEffects); - if (additionalEffectsCount > gBattleStruct->additionalEffectsCounter) + if (gMovesInfo[gCurrentMove].numAdditionalEffects > gBattleStruct->additionalEffectsCounter) { - u32 percentChance, i = gBattleStruct->additionalEffectsCounter; + u32 percentChance; + const struct AdditionalEffect *additionalEffect = &gMovesInfo[gCurrentMove].additionalEffects[gBattleStruct->additionalEffectsCounter]; const u8 *currentPtr = gBattlescriptCurrInstr; // Various checks for if this move effect can be applied this turn - if (CanApplyAdditionalEffect(&additionalEffects[i])) + if (CanApplyAdditionalEffect(additionalEffect)) { - percentChance = CalcSecondaryEffectChance(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker), &additionalEffects[i]); + percentChance = CalcSecondaryEffectChance(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker), additionalEffect); // Activate effect if it's primary (chance == 0) or if RNGesus says so - if ((percentChance == 0) || RandomPercentage(RNG_SECONDARY_EFFECT + (i % 3), percentChance)) + if ((percentChance == 0) || RandomPercentage(RNG_SECONDARY_EFFECT + gBattleStruct->additionalEffectsCounter, percentChance)) { - gBattleScripting.moveEffect = additionalEffects[i].moveEffect | (MOVE_EFFECT_AFFECTS_USER * (additionalEffects[i].self)); + gBattleScripting.moveEffect = additionalEffect->moveEffect | (MOVE_EFFECT_AFFECTS_USER * (additionalEffect->self)); SetMoveEffect( percentChance == 0, // a primary effect @@ -3887,7 +3887,7 @@ static void Cmd_setadditionaleffects(void) // Call setadditionaleffects again in the case of a move with multiple effects gBattleStruct->additionalEffectsCounter++; - if (additionalEffectsCount > gBattleStruct->additionalEffectsCounter) + if (gMovesInfo[gCurrentMove].numAdditionalEffects > gBattleStruct->additionalEffectsCounter) gBattleScripting.moveEffect = MOVE_EFFECT_CONTINUE; else gBattleScripting.moveEffect = gBattleStruct->additionalEffectsCounter = 0; @@ -15756,13 +15756,12 @@ static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 byIntimidate) static bool8 CanBurnHitThaw(u16 move) { u8 i; - GET_ADDITIONAL_EFFECTS_AND_COUNT(move, additionalEffectsCount, additionalEffects); if (B_BURN_HIT_THAW >= GEN_6) { - for (i = 0; i < additionalEffectsCount; i++) + for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) { - if (additionalEffects[i].moveEffect == MOVE_EFFECT_BURN) + if (gMovesInfo[move].additionalEffects[i].moveEffect == MOVE_EFFECT_BURN) return TRUE; } } diff --git a/src/battle_util.c b/src/battle_util.c index 41b10b5d1e..523026f8eb 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -11078,35 +11078,41 @@ bool32 IsGen6ExpShareEnabled(void) return FlagGet(I_EXP_SHARE_FLAG); } -#define R_CHECK_MOVE_EFFECT(...) RECURSIVELY(R_FOR_EACH(CHECK_MOVE_EFFECT, __VA_ARGS__)) -#define CHECK_MOVE_EFFECT(_condition) && effects[i]._condition - -/* Quick way of checking if a move has move effects with match a few -comma-separated conditions. Each condition has to check a field of AdditionalEffect. */ -#define RETURN_HAS_MOVE_ADDITIONAL_EFFECT(condition1, ...) \ - u32 i; \ - GET_ADDITIONAL_EFFECTS_AND_COUNT(move, count, effects); \ - for (i = 0; i < count; i++) \ - { \ - if (effects[i].condition1 R_CHECK_MOVE_EFFECT(__VA_ARGS__)) \ - return TRUE; \ - } \ - return FALSE; - bool32 MoveHasAdditionalEffect(u32 move, u32 moveEffect) { - RETURN_HAS_MOVE_ADDITIONAL_EFFECT(moveEffect == moveEffect, self == FALSE) + u32 i; + for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) + { + if (gMovesInfo[move].additionalEffects[i].moveEffect == moveEffect + && gMovesInfo[move].additionalEffects[i].self == FALSE) + return TRUE; + } + return FALSE; } bool32 MoveHasAdditionalEffectWithChance(u32 move, u32 moveEffect, u32 chance) { - RETURN_HAS_MOVE_ADDITIONAL_EFFECT(moveEffect == moveEffect, chance == chance) + u32 i; + for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) + { + if (gMovesInfo[move].additionalEffects[i].moveEffect == moveEffect + && gMovesInfo[move].additionalEffects[i].chance == chance) + return TRUE; + } + return FALSE; } bool32 MoveHasAdditionalEffectSelf(u32 move, u32 moveEffect) { - RETURN_HAS_MOVE_ADDITIONAL_EFFECT(moveEffect == moveEffect, self == TRUE) + u32 i; + for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) + { + if (gMovesInfo[move].additionalEffects[i].moveEffect == moveEffect + && gMovesInfo[move].additionalEffects[i].self == TRUE) + return TRUE; + } + return FALSE; } bool32 MoveHasAdditionalEffectSelfArg(u32 move, u32 moveEffect, u32 argument) @@ -11116,12 +11122,24 @@ bool32 MoveHasAdditionalEffectSelfArg(u32 move, u32 moveEffect, u32 argument) bool32 MoveHasChargeTurnAdditionalEffect(u32 move) { - RETURN_HAS_MOVE_ADDITIONAL_EFFECT(onChargeTurnOnly == TRUE) + u32 i; + for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) + { + if (gMovesInfo[move].additionalEffects[i].onChargeTurnOnly) + return TRUE; + } + return FALSE; } -bool32 MoveIsAffectedBySheerForce(u16 move) +bool32 MoveIsAffectedBySheerForce(u32 move) { - RETURN_HAS_MOVE_ADDITIONAL_EFFECT(chance > 0) + u32 i; + for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) + { + if (gMovesInfo[move].additionalEffects[i].chance > 0) + return TRUE; + } + return FALSE; } bool8 CanMonParticipateInSkyBattle(struct Pokemon *mon) From 6804e82c0a33924de8f455c91acb72d227914f29 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 14 Mar 2024 17:47:38 -0300 Subject: [PATCH 48/55] Revert gSpeciesInfo "INFO" macros (#4230) * Venusaur, Charizard, Blastoise * Butterfree, Beedrill, Pidgeot * Rattata, Raticate * Expanded the rest of Gen 1 macros * Expanded Gen 2 macros * Expanded Gen 3 macros * Expanded Gen 4 macros * Expanded Gen 5 macros * Expanded Gen 6 macros * Expanded Gen 7 macros * Expanded Gen 8&9 macros * Removed trailing macro slashes * Expanded macros for sprites, pals, icons and learnsets (using shasum) * AMEND ME * Gen 1 fully reordered (thanks Alex!) Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> * Gen 2 fully reordered (thanks Alex!) Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> * Gen 3 fully reordered (thanks Alex!) Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> * Gen 4 fully reordered (thanks Alex!) Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> * Gen 5 fully reordered (thanks Alex!) Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> * Gen 6 fully reordered (thanks Alex!) Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> * Gen 7 fully reordered (thanks Alex!) Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> * Gen 8 fully reordered (thanks Alex!) Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> * Gen 9 fully reordered (thanks Alex!) Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> --------- Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> --- src/data/pokemon/species_info.h | 85 +- src/data/pokemon/species_info/gen_1.h | 8447 +++++++++++++++++-------- src/data/pokemon/species_info/gen_2.h | 2930 +++++---- src/data/pokemon/species_info/gen_3.h | 4462 ++++++++----- src/data/pokemon/species_info/gen_4.h | 2887 ++++++--- src/data/pokemon/species_info/gen_5.h | 4656 +++++++++----- src/data/pokemon/species_info/gen_6.h | 2685 +++++--- src/data/pokemon/species_info/gen_7.h | 2463 ++++--- src/data/pokemon/species_info/gen_8.h | 4272 ++++++++----- src/data/pokemon/species_info/gen_9.h | 2770 +++++--- 10 files changed, 23465 insertions(+), 12192 deletions(-) diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index 7c58669066..4d70fa5da4 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -181,42 +181,6 @@ const u8 gOgerponCornerstoneMaskPokedexText[] = _( #define EVOLUTION(...) (const struct Evolution[]) { __VA_ARGS__, { EVOLUTIONS_END }, } -#define FRONT_PIC(sprite, width, height) \ - .frontPic = gMonFrontPic_## sprite, \ - .frontPicSize = MON_COORDS_SIZE(width, height) - -#define FRONT_PIC_FEMALE(sprite, width, height) \ - .frontPicFemale = gMonFrontPic_## sprite##F, \ - .frontPicSizeFemale = MON_COORDS_SIZE(width, height) - -#define BACK_PIC(sprite, width, height) \ - .backPic = gMonBackPic_## sprite, \ - .backPicSize = MON_COORDS_SIZE(width, height) - -#define BACK_PIC_FEMALE(sprite, width, height) \ - .backPicFemale = gMonBackPic_## sprite##F, \ - .backPicSizeFemale = MON_COORDS_SIZE(width, height) - -#define PALETTES(pal) \ - .palette = gMonPalette_## pal, \ - .shinyPalette = gMonShinyPalette_## pal - -#define PALETTE_FEMALE(pal) \ - .paletteFemale = gMonPalette_## pal##F, \ - .shinyPaletteFemale = gMonShinyPalette_## pal##F - -#define ICON(sprite, palId) \ - .iconSprite = gMonIcon_## sprite, \ - .iconPalIndex = palId - -#define ICON_FEMALE(sprite, palId) \ - .iconSpriteFemale = gMonIcon_## sprite##F, \ - .iconPalIndexFemale = palId - -#define LEARNSETS(learn) \ - .levelUpLearnset = s ## learn##LevelUpLearnset, \ - .teachableLearnset = s ## learn##TeachableLearnset - #if P_FOOTPRINTS #define FOOTPRINT(sprite) .footprint = gMonFootprint_## sprite, #else @@ -252,16 +216,21 @@ const struct SpeciesInfo gSpeciesInfo[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(CircledQuestionMark, 40, 40), + .frontPic = gMonFrontPic_CircledQuestionMark, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_None, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(CircledQuestionMark, 40, 40), + .backPic = gMonBackPic_CircledQuestionMark, + .backPicSize = MON_COORDS_SIZE(40, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_NONE, - PALETTES(CircledQuestionMark), - ICON(QuestionMark, 0), - LEARNSETS(None), + .palette = gMonPalette_CircledQuestionMark, + .shinyPalette = gMonShinyPalette_CircledQuestionMark, + .iconSprite = gMonIcon_QuestionMark, + .iconPalIndex = 0, + .levelUpLearnset = sNoneLevelUpLearnset, + .teachableLearnset = sNoneTeachableLearnset, }, #include "species_info/gen_1.h" @@ -276,14 +245,16 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_EGG] = { - FRONT_PIC(Egg, 24, 24), + .frontPic = gMonFrontPic_Egg, + .frontPicSize = MON_COORDS_SIZE(24, 24), .frontPicYOffset = 20, .backPic = gMonFrontPic_Egg, .backPicSize = MON_COORDS_SIZE(24, 24), .backPicYOffset = 20, .palette = gMonPalette_Egg, .shinyPalette = gMonPalette_Egg, - ICON(Egg, 1), + .iconSprite = gMonIcon_Egg, + .iconPalIndex = 1, }, /* You may add any custom species below this point based on the following structure: */ @@ -325,22 +296,30 @@ const struct SpeciesInfo gSpeciesInfo[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(CircledQuestionMark, 64, 64), - //FRONT_PIC_FEMALE(CircledQuestionMark, 64, 64), + .frontPic = gMonFrontPic_CircledQuestionMark, + .frontPicSize = MON_COORDS_SIZE(64, 64), + //.frontPicFemale = gMonFrontPic_CircledQuestionMark, + //.frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_None, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - .enemyMonElevation = 0, - BACK_PIC(CircledQuestionMark, 64, 64), - //BACK_PIC_FEMALE(CircledQuestionMark, 64, 64), + .backPic = gMonBackPic_CircledQuestionMark, + .backPicSize = MON_COORDS_SIZE(64, 64), + //.backPicFemale = gMonBackPic_CircledQuestionMarkF, + //.backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, .backAnimId = BACK_ANIM_NONE, - PALETTES(CircledQuestionMark), - //PALETTE_FEMALE(CircledQuestionMark), - ICON(QuestionMark, 0), - //ICON_FEMALE(QuestionMark, 1), + .palette = gMonPalette_CircledQuestionMark, + .shinyPalette = gMonShinyPalette_CircledQuestionMark, + //.paletteFemale = gMonPalette_CircledQuestionMarkF, + .shinyPaletteFemale = gMonShinyPalette_CircledQuestionMarkF, + .iconSprite = gMonIcon_QuestionMark, + .iconPalIndex = 0, + //.iconSpriteFemale = gMonIcon_QuestionMarkF, + //.iconPalIndexFemale = 1, //FOOTPRINT(None) - LEARNSETS(None), + .levelUpLearnset = sNoneLevelUpLearnset, + .teachableLearnset = sNoneTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 100, SPECIES_NONE}, {EVO_ITEM, ITEM_MOOMOO_MILK, SPECIES_NONE}), //.formSpeciesIdTable = sNoneFormSpeciesIdTable, diff --git a/src/data/pokemon/species_info/gen_1.h b/src/data/pokemon/species_info/gen_1.h index 6e36d7f0d5..0a948d27f8 100644 --- a/src/data/pokemon/species_info/gen_1.h +++ b/src/data/pokemon/species_info/gen_1.h @@ -38,17 +38,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Bulbasaur, 40, 40), + .frontPic = gMonFrontPic_Bulbasaur, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Bulbasaur, .frontAnimId = ANIM_V_JUMPS_H_JUMPS, - BACK_PIC(Bulbasaur, 56, 40), + .backPic = gMonBackPic_Bulbasaur, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Bulbasaur), - ICON(Bulbasaur, 4), + .palette = gMonPalette_Bulbasaur, + .shinyPalette = gMonShinyPalette_Bulbasaur, + .iconSprite = gMonIcon_Bulbasaur, + .iconPalIndex = 4, FOOTPRINT(Bulbasaur) - LEARNSETS(Bulbasaur), + .levelUpLearnset = sBulbasaurLevelUpLearnset, + .teachableLearnset = sBulbasaurTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_IVYSAUR}), }, @@ -87,48 +92,35 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Ivysaur, 56, 48), + .frontPic = gMonFrontPic_Ivysaur, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Ivysaur, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Ivysaur, 64, 56), + .backPic = gMonBackPic_Ivysaur, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Ivysaur), - ICON(Ivysaur, 4), + .palette = gMonPalette_Ivysaur, + .shinyPalette = gMonShinyPalette_Ivysaur, + .iconSprite = gMonIcon_Ivysaur, + .iconPalIndex = 4, FOOTPRINT(Ivysaur) - LEARNSETS(Ivysaur), + .levelUpLearnset = sIvysaurLevelUpLearnset, + .teachableLearnset = sIvysaurTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_VENUSAUR}), }, -#define VENUSAUR_MISC_INFO \ - .types = MON_TYPES(TYPE_GRASS, TYPE_POISON), \ - .catchRate = 45, \ - .evYield_SpAttack = 2, \ - .evYield_SpDefense = 1, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_GRASS), \ - .bodyColor = BODY_COLOR_GREEN, \ - .speciesName = _("Venusaur"), \ - .natDexNum = NATIONAL_DEX_VENUSAUR, \ - .categoryName = _("Seed"), \ - FOOTPRINT(Venusaur) \ - LEARNSETS(Venusaur), \ - .formSpeciesIdTable = sVenusaurFormSpeciesIdTable, \ - .formChangeTable = sVenusaurFormChangeTable - [SPECIES_VENUSAUR] = { - VENUSAUR_MISC_INFO, .baseHP = 80, .baseAttack = 82, .baseDefense = 83, .baseSpeed = 80, .baseSpAttack = 100, .baseSpDefense = 100, + .types = MON_TYPES(TYPE_GRASS, TYPE_POISON), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 263, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -136,8 +128,19 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #else .expYield = 208, #endif + .evYield_SpAttack = 2, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_GRASS), .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Venusaur"), .cryId = CRY_VENUSAUR, + .natDexNum = NATIONAL_DEX_VENUSAUR, + .categoryName = _("Seed"), .height = 20, .weight = 1000, .description = COMPOUND_STRING( @@ -149,32 +152,55 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 388, .trainerOffset = 6, - FRONT_PIC(Venusaur, 64, 64), - FRONT_PIC_FEMALE(Venusaur, 64, 64), + .frontPic = gMonFrontPic_Venusaur, + .frontPicFemale = gMonFrontPic_VenusaurF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Venusaur, .frontAnimId = ANIM_ROTATE_UP_SLAM_DOWN, - BACK_PIC(Venusaur, 64, 48), - BACK_PIC_FEMALE(Venusaur, 64, 48), + .backPic = gMonBackPic_Venusaur, + .backPicFemale = gMonBackPic_VenusaurF, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicSizeFemale = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Venusaur), - ICON(Venusaur, 4), + .palette = gMonPalette_Venusaur, + .shinyPalette = gMonShinyPalette_Venusaur, + .iconSprite = gMonIcon_Venusaur, + .iconPalIndex = 4, + FOOTPRINT(Venusaur) + .levelUpLearnset = sVenusaurLevelUpLearnset, + .teachableLearnset = sVenusaurTeachableLearnset, + .formSpeciesIdTable = sVenusaurFormSpeciesIdTable, + .formChangeTable = sVenusaurFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_VENUSAUR_MEGA] = { - VENUSAUR_MISC_INFO, .baseHP = 80, .baseAttack = 100, .baseDefense = 123, .baseSpeed = 80, .baseSpAttack = 122, .baseSpDefense = 120, + .types = MON_TYPES(TYPE_GRASS, TYPE_POISON), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 313 : 281, + .evYield_SpAttack = 2, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_GRASS), .abilities = { ABILITY_THICK_FAT, ABILITY_THICK_FAT, ABILITY_THICK_FAT }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Venusaur"), .cryId = CRY_VENUSAUR_MEGA, + .natDexNum = NATIONAL_DEX_VENUSAUR, + .categoryName = _("Seed"), .height = 24, .weight = 1555, .description = COMPOUND_STRING( @@ -185,32 +211,53 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 388, .trainerOffset = 6, - FRONT_PIC(VenusaurMega, 64, 64), + .frontPic = gMonFrontPic_VenusaurMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_VenusaurMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(VenusaurMega, 64, 64), + .backPic = gMonBackPic_VenusaurMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 8, .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, - PALETTES(VenusaurMega), - ICON(VenusaurMega, 4), + .palette = gMonPalette_VenusaurMega, + .shinyPalette = gMonShinyPalette_VenusaurMega, + .iconSprite = gMonIcon_VenusaurMega, + .iconPalIndex = 4, + FOOTPRINT(Venusaur) .isMegaEvolution = TRUE, + .levelUpLearnset = sVenusaurLevelUpLearnset, + .teachableLearnset = sVenusaurTeachableLearnset, + .formSpeciesIdTable = sVenusaurFormSpeciesIdTable, + .formChangeTable = sVenusaurFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #if P_GIGANTAMAX_FORMS [SPECIES_VENUSAUR_GIGANTAMAX] = { - VENUSAUR_MISC_INFO, .baseHP = 80, .baseAttack = 82, .baseDefense = 83, .baseSpeed = 80, .baseSpAttack = 100, .baseSpDefense = 100, + .types = MON_TYPES(TYPE_GRASS, TYPE_POISON), + .catchRate = 45, .expYield = 236, + .evYield_SpAttack = 2, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_GRASS), .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Venusaur"), .cryId = CRY_VENUSAUR, + .natDexNum = NATIONAL_DEX_VENUSAUR, + .categoryName = _("Seed"), .height = 240, .weight = 0, .description = COMPOUND_STRING( @@ -222,16 +269,25 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 388, .trainerOffset = 6, - FRONT_PIC(VenusaurGigantamax, 64, 64), + .frontPic = gMonFrontPic_VenusaurGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_VenusaurGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(VenusaurGigantamax, 64, 64), + .backPic = gMonBackPic_VenusaurGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(VenusaurGigantamax), - ICON(VenusaurGigantamax, 0), + .palette = gMonPalette_VenusaurGigantamax, + .shinyPalette = gMonShinyPalette_VenusaurGigantamax, + .iconSprite = gMonIcon_VenusaurGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Venusaur) .isGigantamax = TRUE, + .levelUpLearnset = sVenusaurLevelUpLearnset, + .teachableLearnset = sVenusaurTeachableLearnset, + .formSpeciesIdTable = sVenusaurFormSpeciesIdTable, + .formChangeTable = sVenusaurFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_BULBASAUR @@ -271,17 +327,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 18, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Charmander, 48, 48), + .frontPic = gMonFrontPic_Charmander, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Charmander, .frontAnimId = ANIM_V_JUMPS_SMALL, - BACK_PIC(Charmander, 48, 48), + .backPic = gMonBackPic_Charmander, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Charmander), - ICON(Charmander, 0), + .palette = gMonPalette_Charmander, + .shinyPalette = gMonShinyPalette_Charmander, + .iconSprite = gMonIcon_Charmander, + .iconPalIndex = 0, FOOTPRINT(Charmander) - LEARNSETS(Charmander), + .levelUpLearnset = sCharmanderLevelUpLearnset, + .teachableLearnset = sCharmanderTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_CHARMELEON}), }, @@ -320,39 +381,27 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 9, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Charmeleon, 56, 56), + .frontPic = gMonFrontPic_Charmeleon, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Charmeleon, .frontAnimId = ANIM_BACK_AND_LUNGE, - BACK_PIC(Charmeleon, 56, 48), + .backPic = gMonBackPic_Charmeleon, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Charmeleon), - ICON(Charmeleon, 0), + .palette = gMonPalette_Charmeleon, + .shinyPalette = gMonShinyPalette_Charmeleon, + .iconSprite = gMonIcon_Charmeleon, + .iconPalIndex = 0, FOOTPRINT(Charmeleon) - LEARNSETS(Charmeleon), + .levelUpLearnset = sCharmeleonLevelUpLearnset, + .teachableLearnset = sCharmeleonTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_CHARIZARD}), }, -#define CHARIZARD_MISC_INFO \ - .catchRate = 45, \ - .evYield_SpAttack = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_DRAGON),\ - .speciesName = _("Charizard"), \ - .natDexNum = NATIONAL_DEX_CHARIZARD, \ - .categoryName = _("Flame"), \ - FOOTPRINT(Charizard) \ - LEARNSETS(Charizard), \ - .formSpeciesIdTable = sCharizardFormSpeciesIdTable, \ - .formChangeTable = sCharizardFormChangeTable - [SPECIES_CHARIZARD] = { - CHARIZARD_MISC_INFO, .baseHP = 78, .baseAttack = 84, .baseDefense = 78, @@ -360,6 +409,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 109, .baseSpDefense = 85, .types = MON_TYPES(TYPE_FIRE, TYPE_FLYING), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 267, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -367,9 +417,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #else .expYield = 209, #endif + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_DRAGON), .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Charizard"), .cryId = CRY_CHARIZARD, + .natDexNum = NATIONAL_DEX_CHARIZARD, + .categoryName = _("Flame"), .height = 17, .weight = 905, .description = COMPOUND_STRING( @@ -381,21 +440,29 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 302, .trainerOffset = 3, - FRONT_PIC(Charizard, 64, 64), + .frontPic = gMonFrontPic_Charizard, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Charizard, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Charizard, 64, 64), + .backPic = gMonBackPic_Charizard, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Charizard), - ICON(Charizard, 0), + .palette = gMonPalette_Charizard, + .shinyPalette = gMonShinyPalette_Charizard, + .iconSprite = gMonIcon_Charizard, + .iconPalIndex = 0, + FOOTPRINT(Charizard) + .levelUpLearnset = sCharizardLevelUpLearnset, + .teachableLearnset = sCharizardTeachableLearnset, + .formSpeciesIdTable = sCharizardFormSpeciesIdTable, + .formChangeTable = sCharizardFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_CHARIZARD_MEGA_X] = { - CHARIZARD_MISC_INFO, .baseHP = 78, .baseAttack = 130, .baseDefense = 111, @@ -403,10 +470,20 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 130, .baseSpDefense = 85, .types = MON_TYPES(TYPE_FIRE, TYPE_DRAGON), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 317 : 285, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_DRAGON), .abilities = { ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS }, .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Charizard"), .cryId = CRY_CHARIZARD_MEGA_X, + .natDexNum = NATIONAL_DEX_CHARIZARD, + .categoryName = _("Flame"), .height = 17, .weight = 1105, .description = COMPOUND_STRING( @@ -417,21 +494,29 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 302, .trainerOffset = 3, - FRONT_PIC(CharizardMegaX, 64, 64), + .frontPic = gMonFrontPic_CharizardMegaX, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_CharizardMegaX, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(CharizardMegaX, 64, 64), + .backPic = gMonBackPic_CharizardMegaX, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(CharizardMegaX), - ICON(CharizardMegaX, 0), + .palette = gMonPalette_CharizardMegaX, + .shinyPalette = gMonShinyPalette_CharizardMegaX, + .iconSprite = gMonIcon_CharizardMegaX, + .iconPalIndex = 0, + FOOTPRINT(Charizard) .isMegaEvolution = TRUE, + .levelUpLearnset = sCharizardLevelUpLearnset, + .teachableLearnset = sCharizardTeachableLearnset, + .formSpeciesIdTable = sCharizardFormSpeciesIdTable, + .formChangeTable = sCharizardFormChangeTable, }, [SPECIES_CHARIZARD_MEGA_Y] = { - CHARIZARD_MISC_INFO, .baseHP = 78, .baseAttack = 104, .baseDefense = 78, @@ -439,10 +524,20 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 159, .baseSpDefense = 115, .types = MON_TYPES(TYPE_FIRE, TYPE_FLYING), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 317 : 285, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_DRAGON), .abilities = { ABILITY_DROUGHT, ABILITY_DROUGHT, ABILITY_DROUGHT }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Charizard"), .cryId = CRY_CHARIZARD_MEGA_Y, + .natDexNum = NATIONAL_DEX_CHARIZARD, + .categoryName = _("Flame"), .height = 17, .weight = 1005, .description = COMPOUND_STRING( @@ -454,23 +549,31 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 302, .trainerOffset = 3, - FRONT_PIC(CharizardMegaY, 64, 64), + .frontPic = gMonFrontPic_CharizardMegaY, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_CharizardMegaY, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(CharizardMegaY, 64, 64), + .backPic = gMonBackPic_CharizardMegaY, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(CharizardMegaY), - ICON(CharizardMegaY, 0), + .palette = gMonPalette_CharizardMegaY, + .shinyPalette = gMonShinyPalette_CharizardMegaY, + .iconSprite = gMonIcon_CharizardMegaY, + .iconPalIndex = 0, + FOOTPRINT(Charizard) .isMegaEvolution = TRUE, + .levelUpLearnset = sCharizardLevelUpLearnset, + .teachableLearnset = sCharizardTeachableLearnset, + .formSpeciesIdTable = sCharizardFormSpeciesIdTable, + .formChangeTable = sCharizardFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #if P_GIGANTAMAX_FORMS [SPECIES_CHARIZARD_GIGANTAMAX] = { - CHARIZARD_MISC_INFO, .baseHP = 78, .baseAttack = 84, .baseDefense = 78, @@ -478,10 +581,20 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 109, .baseSpDefense = 85, .types = MON_TYPES(TYPE_FIRE, TYPE_FLYING), + .catchRate = 45, .expYield = 240, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_DRAGON), .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Charizard"), .cryId = CRY_CHARIZARD, + .natDexNum = NATIONAL_DEX_CHARIZARD, + .categoryName = _("Flame"), .height = 280, .weight = 0, .description = COMPOUND_STRING( @@ -493,16 +606,25 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 302, .trainerOffset = 3, - FRONT_PIC(CharizardGigantamax, 64, 64), + .frontPic = gMonFrontPic_CharizardGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_CharizardGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(CharizardGigantamax, 64, 64), + .backPic = gMonBackPic_CharizardGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(CharizardGigantamax), - ICON(CharizardGigantamax, 0), + .palette = gMonPalette_CharizardGigantamax, + .shinyPalette = gMonShinyPalette_CharizardGigantamax, + .iconSprite = gMonIcon_CharizardGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Charizard) .isGigantamax = TRUE, + .levelUpLearnset = sCharizardLevelUpLearnset, + .teachableLearnset = sCharizardTeachableLearnset, + .formSpeciesIdTable = sCharizardFormSpeciesIdTable, + .formChangeTable = sCharizardFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_CHARMANDER @@ -542,17 +664,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 18, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Squirtle, 40, 48), + .frontPic = gMonFrontPic_Squirtle, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Squirtle, .frontAnimId = ANIM_V_JUMPS_BIG, - BACK_PIC(Squirtle, 48, 48), + .backPic = gMonBackPic_Squirtle, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Squirtle), - ICON(Squirtle, 0), + .palette = gMonPalette_Squirtle, + .shinyPalette = gMonShinyPalette_Squirtle, + .iconSprite = gMonIcon_Squirtle, + .iconPalIndex = 0, FOOTPRINT(Squirtle) - LEARNSETS(Squirtle), + .levelUpLearnset = sSquirtleLevelUpLearnset, + .teachableLearnset = sSquirtleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_WARTORTLE}), }, @@ -591,47 +718,35 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Wartortle, 56, 56), + .frontPic = gMonFrontPic_Wartortle, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Wartortle, .frontAnimId = ANIM_SHRINK_GROW, - BACK_PIC(Wartortle, 64, 56), + .backPic = gMonBackPic_Wartortle, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Wartortle), - ICON(Wartortle, 2), + .palette = gMonPalette_Wartortle, + .shinyPalette = gMonShinyPalette_Wartortle, + .iconSprite = gMonIcon_Wartortle, + .iconPalIndex = 2, FOOTPRINT(Wartortle) - LEARNSETS(Wartortle), + .levelUpLearnset = sWartortleLevelUpLearnset, + .teachableLearnset = sWartortleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_BLASTOISE}), }, -#define BLASTOISE_MISC_INFO \ - .types = MON_TYPES(TYPE_WATER), \ - .catchRate = 45, \ - .evYield_SpDefense = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), \ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Blastoise"), \ - .natDexNum = NATIONAL_DEX_BLASTOISE, \ - .categoryName = _("Shellfish"), \ - FOOTPRINT(Blastoise) \ - LEARNSETS(Blastoise), \ - .formSpeciesIdTable = sBlastoiseFormSpeciesIdTable, \ - .formChangeTable = sBlastoiseFormChangeTable - [SPECIES_BLASTOISE] = { - BLASTOISE_MISC_INFO, .baseHP = 79, .baseAttack = 83, .baseDefense = 100, .baseSpeed = 78, .baseSpAttack = 85, .baseSpDefense = 105, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 265, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -639,8 +754,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #else .expYield = 210, #endif + .evYield_SpDefense = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Blastoise"), .cryId = CRY_BLASTOISE, + .natDexNum = NATIONAL_DEX_BLASTOISE, + .categoryName = _("Shellfish"), .height = 16, .weight = 855, .description = COMPOUND_STRING( @@ -652,31 +777,51 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = -1, .trainerScale = 293, .trainerOffset = 2, - FRONT_PIC(Blastoise, 64, 64), + .frontPic = gMonFrontPic_Blastoise, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Blastoise, .frontAnimId = ANIM_V_SHAKE_TWICE, .frontAnimDelay = 20, - BACK_PIC(Blastoise, 64, 56), + .backPic = gMonBackPic_Blastoise, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(Blastoise), - ICON(Blastoise, 2), + .palette = gMonPalette_Blastoise, + .shinyPalette = gMonShinyPalette_Blastoise, + .iconSprite = gMonIcon_Blastoise, + .iconPalIndex = 2, + FOOTPRINT(Blastoise) + .levelUpLearnset = sBlastoiseLevelUpLearnset, + .teachableLearnset = sBlastoiseTeachableLearnset, + .formSpeciesIdTable = sBlastoiseFormSpeciesIdTable, + .formChangeTable = sBlastoiseFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_BLASTOISE_MEGA] = { - BLASTOISE_MISC_INFO, .baseHP = 79, .baseAttack = 103, .baseDefense = 120, .baseSpeed = 78, .baseSpAttack = 135, .baseSpDefense = 115, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 315 : 284, + .evYield_SpDefense = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), .abilities = { ABILITY_MEGA_LAUNCHER, ABILITY_MEGA_LAUNCHER, ABILITY_MEGA_LAUNCHER }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Blastoise"), .cryId = CRY_BLASTOISE_MEGA, + .natDexNum = NATIONAL_DEX_BLASTOISE, + .categoryName = _("Shellfish"), .height = 16, .weight = 1011, .description = COMPOUND_STRING( @@ -688,32 +833,52 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = -1, .trainerScale = 293, .trainerOffset = 2, - FRONT_PIC(BlastoiseMega, 64, 64), + .frontPic = gMonFrontPic_BlastoiseMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_BlastoiseMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(BlastoiseMega, 64, 64), + .backPic = gMonBackPic_BlastoiseMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(BlastoiseMega), - ICON(BlastoiseMega, 2), + .palette = gMonPalette_BlastoiseMega, + .shinyPalette = gMonShinyPalette_BlastoiseMega, + .iconSprite = gMonIcon_BlastoiseMega, + .iconPalIndex = 2, + FOOTPRINT(Blastoise) .isMegaEvolution = TRUE, + .levelUpLearnset = sBlastoiseLevelUpLearnset, + .teachableLearnset = sBlastoiseTeachableLearnset, + .formSpeciesIdTable = sBlastoiseFormSpeciesIdTable, + .formChangeTable = sBlastoiseFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #if P_GIGANTAMAX_FORMS [SPECIES_BLASTOISE_GIGANTAMAX] = { - BLASTOISE_MISC_INFO, .baseHP = 79, .baseAttack = 83, .baseDefense = 100, .baseSpeed = 78, .baseSpAttack = 85, .baseSpDefense = 105, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 45, .expYield = 239, + .evYield_SpDefense = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Blastoise"), .cryId = CRY_BLASTOISE, + .natDexNum = NATIONAL_DEX_BLASTOISE, + .categoryName = _("Shellfish"), .height = 250, .weight = 0, .description = COMPOUND_STRING( @@ -725,16 +890,25 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = -1, .trainerScale = 293, .trainerOffset = 2, - FRONT_PIC(BlastoiseGigantamax, 64, 64), + .frontPic = gMonFrontPic_BlastoiseGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_BlastoiseGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(BlastoiseGigantamax, 64, 64), + .backPic = gMonBackPic_BlastoiseGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(BlastoiseGigantamax), - ICON(BlastoiseGigantamax, 0), + .palette = gMonPalette_BlastoiseGigantamax, + .shinyPalette = gMonShinyPalette_BlastoiseGigantamax, + .iconSprite = gMonIcon_BlastoiseGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Blastoise) .isGigantamax = TRUE, + .levelUpLearnset = sBlastoiseLevelUpLearnset, + .teachableLearnset = sBlastoiseTeachableLearnset, + .formSpeciesIdTable = sBlastoiseFormSpeciesIdTable, + .formChangeTable = sBlastoiseFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_SQUIRTLE @@ -774,18 +948,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 22, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Caterpie, 40, 40), + .frontPic = gMonFrontPic_Caterpie, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Caterpie, .frontAnimId = ANIM_SWING_CONCAVE, - BACK_PIC(Caterpie, 48, 40), + .backPic = gMonBackPic_Caterpie, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Caterpie), - ICON(Caterpie, 1), + .palette = gMonPalette_Caterpie, + .shinyPalette = gMonShinyPalette_Caterpie, + .iconSprite = gMonIcon_Caterpie, + .iconPalIndex = 1, FOOTPRINT(Caterpie) - LEARNSETS(Caterpie), .tmIlliterate = TRUE, + .levelUpLearnset = sCaterpieLevelUpLearnset, + .teachableLearnset = sCaterpieTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 7, SPECIES_METAPOD}), }, @@ -823,18 +1002,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 18, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Metapod, 40, 40), + .frontPic = gMonFrontPic_Metapod, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Metapod, .frontAnimId = ANIM_SWING_CONCAVE, - BACK_PIC(Metapod, 40, 48), + .backPic = gMonBackPic_Metapod, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Metapod), - ICON(Metapod, 1), + .palette = gMonPalette_Metapod, + .shinyPalette = gMonShinyPalette_Metapod, + .iconSprite = gMonIcon_Metapod, + .iconPalIndex = 1, FOOTPRINT(Metapod) - LEARNSETS(Metapod), .tmIlliterate = TRUE, + .levelUpLearnset = sMetapodLevelUpLearnset, + .teachableLearnset = sMetapodTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_BUTTERFREE}), }, @@ -848,38 +1032,31 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #define BUTTERFREE_EXP_YIELD 160 #endif -#define BUTTERFREE_MISC_INFO \ - .baseHP = 60, \ - .baseAttack = 45, \ - .baseDefense = 50, \ - .baseSpeed = 70, \ - .baseSpDefense = 80, \ - .baseSpAttack = P_UPDATED_STATS >= GEN_6 ? 90 : 80, \ - .types = MON_TYPES(TYPE_BUG, TYPE_FLYING), \ - .catchRate = 45, \ - .expYield = BUTTERFREE_EXP_YIELD, \ - .evYield_SpAttack = 2, \ - .evYield_SpDefense = 1, \ - .itemRare = ITEM_SILVER_POWDER, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), \ - .abilities = { ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_TINTED_LENS }, \ - .bodyColor = BODY_COLOR_WHITE, \ - .speciesName = _("Butterfree"), \ - .cryId = CRY_BUTTERFREE, \ - .natDexNum = NATIONAL_DEX_BUTTERFREE, \ - .categoryName = _("Butterfly"), \ - FOOTPRINT(Butterfree) \ - LEARNSETS(Butterfree), \ - .formSpeciesIdTable = sButterfreeFormSpeciesIdTable, \ - .formChangeTable = sButterfreeFormChangeTable - [SPECIES_BUTTERFREE] = { - BUTTERFREE_MISC_INFO, + .baseHP = 60, + .baseAttack = 45, + .baseDefense = 50, + .baseSpeed = 70, + .baseSpAttack = P_UPDATED_STATS >= GEN_6 ? 90 : 80, + .baseSpDefense = 80, + .types = MON_TYPES(TYPE_BUG, TYPE_FLYING), + .catchRate = 45, + .expYield = BUTTERFREE_EXP_YIELD, + .evYield_SpAttack = 2, + .evYield_SpDefense = 1, + .itemRare = ITEM_SILVER_POWDER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + .abilities = { ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_TINTED_LENS }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Butterfree"), + .cryId = CRY_BUTTERFREE, + .natDexNum = NATIONAL_DEX_BUTTERFREE, + .categoryName = _("Butterfly"), .height = 11, .weight = 320, .description = COMPOUND_STRING( @@ -891,24 +1068,57 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Butterfree, 64, 56), - FRONT_PIC_FEMALE(Butterfree, 64, 56), + .frontPic = gMonFrontPic_Butterfree, + .frontPicFemale = gMonFrontPic_ButterfreeF, + .frontPicSize = MON_COORDS_SIZE(64, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Butterfree, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 12, - BACK_PIC(Butterfree, 64, 56), - BACK_PIC_FEMALE(Butterfree, 64, 56), + .backPic = gMonBackPic_Butterfree, + .backPicFemale = gMonBackPic_ButterfreeF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Butterfree), - ICON(Butterfree, 0), + .palette = gMonPalette_Butterfree, + .shinyPalette = gMonShinyPalette_Butterfree, + .iconSprite = gMonIcon_Butterfree, + .iconPalIndex = 0, + FOOTPRINT(Butterfree) + .levelUpLearnset = sButterfreeLevelUpLearnset, + .teachableLearnset = sButterfreeTeachableLearnset, + .formSpeciesIdTable = sButterfreeFormSpeciesIdTable, + .formChangeTable = sButterfreeFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_BUTTERFREE_GIGANTAMAX] = { - BUTTERFREE_MISC_INFO, + .baseHP = 60, + .baseAttack = 45, + .baseDefense = 50, + .baseSpeed = 70, + .baseSpAttack = P_UPDATED_STATS >= GEN_6 ? 90 : 80, + .baseSpDefense = 80, + .types = MON_TYPES(TYPE_BUG, TYPE_FLYING), + .catchRate = 45, + .expYield = BUTTERFREE_EXP_YIELD, + .evYield_SpAttack = 2, + .evYield_SpDefense = 1, + .itemRare = ITEM_SILVER_POWDER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + .abilities = { ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_TINTED_LENS }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Butterfree"), + .cryId = CRY_BUTTERFREE, + .natDexNum = NATIONAL_DEX_BUTTERFREE, + .categoryName = _("Butterfly"), .height = 170, .weight = 0, .description = COMPOUND_STRING( @@ -920,17 +1130,26 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(ButterfreeGigantamax, 64, 64), + .frontPic = gMonFrontPic_ButterfreeGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_ButterfreeGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 7, - BACK_PIC(ButterfreeGigantamax, 64, 64), + .backPic = gMonBackPic_ButterfreeGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ButterfreeGigantamax), - ICON(ButterfreeGigantamax, 0), + .palette = gMonPalette_ButterfreeGigantamax, + .shinyPalette = gMonShinyPalette_ButterfreeGigantamax, + .iconSprite = gMonIcon_ButterfreeGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Butterfree) .isGigantamax = TRUE, + .levelUpLearnset = sButterfreeLevelUpLearnset, + .teachableLearnset = sButterfreeTeachableLearnset, + .formSpeciesIdTable = sButterfreeFormSpeciesIdTable, + .formChangeTable = sButterfreeFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_CATERPIE @@ -970,19 +1189,24 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 22, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Weedle, 40, 40), + .frontPic = gMonFrontPic_Weedle, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Weedle, .frontAnimId = ANIM_H_SLIDE_SLOW, .frontAnimDelay = 10, - BACK_PIC(Weedle, 56, 56), + .backPic = gMonBackPic_Weedle, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Weedle), - ICON(Weedle, 2), + .palette = gMonPalette_Weedle, + .shinyPalette = gMonShinyPalette_Weedle, + .iconSprite = gMonIcon_Weedle, + .iconPalIndex = 2, FOOTPRINT(Weedle) - LEARNSETS(Weedle), .tmIlliterate = TRUE, + .levelUpLearnset = sWeedleLevelUpLearnset, + .teachableLearnset = sWeedleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 7, SPECIES_KAKUNA}), }, @@ -1020,53 +1244,39 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Kakuna, 24, 48), + .frontPic = gMonFrontPic_Kakuna, + .frontPicSize = MON_COORDS_SIZE(24, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Kakuna, .frontAnimId = ANIM_GLOW_ORANGE, .frontAnimDelay = 20, - BACK_PIC(Kakuna, 32, 40), + .backPic = gMonBackPic_Kakuna, + .backPicSize = MON_COORDS_SIZE(32, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Kakuna), - ICON(Kakuna, 2), + .palette = gMonPalette_Kakuna, + .shinyPalette = gMonShinyPalette_Kakuna, + .iconSprite = gMonIcon_Kakuna, + .iconPalIndex = 2, FOOTPRINT(Kakuna) - LEARNSETS(Kakuna), .tmIlliterate = TRUE, + .levelUpLearnset = sKakunaLevelUpLearnset, + .teachableLearnset = sKakunaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_BEEDRILL}), }, #define BEEDRILL_ATTACK (P_UPDATED_STATS >= GEN_6 ? 90 : 80) -#define BEEDRILL_MISC_INFO \ - .types = MON_TYPES(TYPE_BUG, TYPE_POISON), \ - .catchRate = 45, \ - .evYield_Attack = 2, \ - .evYield_SpDefense = 1, \ - .itemRare = ITEM_POISON_BARB, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), \ - .bodyColor = BODY_COLOR_YELLOW, \ - .speciesName = _("Beedrill"), \ - .natDexNum = NATIONAL_DEX_BEEDRILL, \ - .categoryName = _("Poison Bee"), \ - FOOTPRINT(Beedrill) \ - LEARNSETS(Beedrill), \ - .formSpeciesIdTable = sBeedrillFormSpeciesIdTable, \ - .formChangeTable = sBeedrillFormChangeTable - [SPECIES_BEEDRILL] = { - BEEDRILL_MISC_INFO, .baseHP = 65, + .baseAttack = BEEDRILL_ATTACK, .baseDefense = 40, .baseSpeed = 75, .baseSpAttack = 45, .baseSpDefense = 80, - .baseAttack = BEEDRILL_ATTACK, + .types = MON_TYPES(TYPE_BUG, TYPE_POISON), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 198, #elif P_UPDATED_EXP_YIELDS >= GEN_7 @@ -1076,8 +1286,20 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #else .expYield = 159, #endif + .evYield_Attack = 2, + .evYield_SpDefense = 1, + .itemRare = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), .abilities = { ABILITY_SWARM, ABILITY_NONE, ABILITY_SNIPER }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Beedrill"), .cryId = CRY_BEEDRILL, + .natDexNum = NATIONAL_DEX_BEEDRILL, + .categoryName = _("Poison Bee"), .height = 10, .weight = 295, .description = COMPOUND_STRING( @@ -1089,31 +1311,53 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Beedrill, 64, 56), + .frontPic = gMonFrontPic_Beedrill, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Beedrill, .frontAnimId = ANIM_ZIGZAG_SLOW, .enemyMonElevation = 9, - BACK_PIC(Beedrill, 64, 56), + .backPic = gMonBackPic_Beedrill, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Beedrill), - ICON(Beedrill, 2), + .palette = gMonPalette_Beedrill, + .shinyPalette = gMonShinyPalette_Beedrill, + .iconSprite = gMonIcon_Beedrill, + .iconPalIndex = 2, + FOOTPRINT(Beedrill) + .levelUpLearnset = sBeedrillLevelUpLearnset, + .teachableLearnset = sBeedrillTeachableLearnset, + .formSpeciesIdTable = sBeedrillFormSpeciesIdTable, + .formChangeTable = sBeedrillFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_BEEDRILL_MEGA] = { - BEEDRILL_MISC_INFO, .baseHP = 65, .baseAttack = BEEDRILL_ATTACK + 60, .baseDefense = 40, .baseSpeed = 145, .baseSpAttack = 15, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_BUG, TYPE_POISON), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 248 : 223, + .evYield_Attack = 2, + .evYield_SpDefense = 1, + .itemRare = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), .abilities = { ABILITY_ADAPTABILITY, ABILITY_ADAPTABILITY, ABILITY_ADAPTABILITY }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Beedrill"), .cryId = CRY_BEEDRILL_MEGA, + .natDexNum = NATIONAL_DEX_BEEDRILL, + .categoryName = _("Poison Bee"), .height = 14, .weight = 405, .description = COMPOUND_STRING( @@ -1125,17 +1369,26 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(BeedrillMega, 64, 64), + .frontPic = gMonFrontPic_BeedrillMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_BeedrillMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 5, - BACK_PIC(BeedrillMega, 64, 64), + .backPic = gMonBackPic_BeedrillMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(BeedrillMega), - ICON(BeedrillMega, 2), + .palette = gMonPalette_BeedrillMega, + .shinyPalette = gMonShinyPalette_BeedrillMega, + .iconSprite = gMonIcon_BeedrillMega, + .iconPalIndex = 2, + FOOTPRINT(Beedrill) .isMegaEvolution = TRUE, + .levelUpLearnset = sBeedrillLevelUpLearnset, + .teachableLearnset = sBeedrillTeachableLearnset, + .formSpeciesIdTable = sBeedrillFormSpeciesIdTable, + .formChangeTable = sBeedrillFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_WEEDLE @@ -1175,17 +1428,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = -3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pidgey, 40, 40), + .frontPic = gMonFrontPic_Pidgey, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Pidgey, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Pidgey, 56, 48), + .backPic = gMonBackPic_Pidgey, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Pidgey), - ICON(Pidgey, 0), + .palette = gMonPalette_Pidgey, + .shinyPalette = gMonShinyPalette_Pidgey, + .iconSprite = gMonIcon_Pidgey, + .iconPalIndex = 0, FOOTPRINT(Pidgey) - LEARNSETS(Pidgey), + .levelUpLearnset = sPidgeyLevelUpLearnset, + .teachableLearnset = sPidgeyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_PIDGEOTTO}), }, @@ -1223,50 +1481,38 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pidgeotto, 56, 56), + .frontPic = gMonFrontPic_Pidgeotto, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Pidgeotto, .frontAnimId = ANIM_V_STRETCH, .frontAnimDelay = 25, - BACK_PIC(Pidgeotto, 64, 56), + .backPic = gMonBackPic_Pidgeotto, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Pidgeotto), - ICON(Pidgeotto, 0), + .palette = gMonPalette_Pidgeotto, + .shinyPalette = gMonShinyPalette_Pidgeotto, + .iconSprite = gMonIcon_Pidgeotto, + .iconPalIndex = 0, FOOTPRINT(Pidgeotto) - LEARNSETS(Pidgeotto), + .levelUpLearnset = sPidgeottoLevelUpLearnset, + .teachableLearnset = sPidgeottoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_PIDGEOT}), }, #define PIDGEOT_SPEED (P_UPDATED_STATS >= GEN_6 ? 101 : 91) -#define PIDGEOT_MISC_INFO \ - .types = MON_TYPES(TYPE_NORMAL, TYPE_FLYING), \ - .catchRate = 45, \ - .evYield_Speed = 3, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), \ - .bodyColor = BODY_COLOR_BROWN, \ - .speciesName = _("Pidgeot"), \ - .natDexNum = NATIONAL_DEX_PIDGEOT, \ - .categoryName = _("Bird"), \ - FOOTPRINT(Pidgeot) \ - LEARNSETS(Pidgeot), \ - .formSpeciesIdTable = sPidgeotFormSpeciesIdTable, \ - .formChangeTable = sPidgeotFormChangeTable - [SPECIES_PIDGEOT] = { - PIDGEOT_MISC_INFO, .baseHP = 83, .baseAttack = 80, .baseDefense = 75, + .baseSpeed = PIDGEOT_SPEED, .baseSpAttack = 70, .baseSpDefense = 70, - .baseSpeed = PIDGEOT_SPEED, + .types = MON_TYPES(TYPE_NORMAL, TYPE_FLYING), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 240, #elif P_UPDATED_EXP_YIELDS >= GEN_7 @@ -1276,8 +1522,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #else .expYield = 172, #endif + .evYield_Speed = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Pidgeot"), .cryId = CRY_PIDGEOT, + .natDexNum = NATIONAL_DEX_PIDGEOT, + .categoryName = _("Bird"), .height = 15, .weight = 395, .description = COMPOUND_STRING( @@ -1289,31 +1545,51 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pidgeot, 64, 64), + .frontPic = gMonFrontPic_Pidgeot, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Pidgeot, .frontAnimId = ANIM_GROW_VIBRATE, .enemyMonElevation = 5, - BACK_PIC(Pidgeot, 64, 56), + .backPic = gMonBackPic_Pidgeot, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Pidgeot), - ICON(Pidgeot, 0), + .palette = gMonPalette_Pidgeot, + .shinyPalette = gMonShinyPalette_Pidgeot, + .iconSprite = gMonIcon_Pidgeot, + .iconPalIndex = 0, + FOOTPRINT(Pidgeot) + .levelUpLearnset = sPidgeotLevelUpLearnset, + .teachableLearnset = sPidgeotTeachableLearnset, + .formSpeciesIdTable = sPidgeotFormSpeciesIdTable, + .formChangeTable = sPidgeotFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_PIDGEOT_MEGA] = { - PIDGEOT_MISC_INFO, .baseHP = 83, .baseAttack = 80, .baseDefense = 80, .baseSpeed = PIDGEOT_SPEED + 20, .baseSpAttack = 135, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_NORMAL, TYPE_FLYING), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 290 : 261, + .evYield_Speed = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_NO_GUARD, ABILITY_NO_GUARD, ABILITY_NO_GUARD }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Pidgeot"), .cryId = CRY_PIDGEOT_MEGA, + .natDexNum = NATIONAL_DEX_PIDGEOT, + .categoryName = _("Bird"), .height = 22, .weight = 505, .description = COMPOUND_STRING( @@ -1324,65 +1600,54 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(PidgeotMega, 64, 64), + .frontPic = gMonFrontPic_PidgeotMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_PidgeotMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 8, - BACK_PIC(PidgeotMega, 64, 64), + .backPic = gMonBackPic_PidgeotMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(PidgeotMega), - ICON(PidgeotMega, 0), + .palette = gMonPalette_PidgeotMega, + .shinyPalette = gMonShinyPalette_PidgeotMega, + .iconSprite = gMonIcon_PidgeotMega, + .iconPalIndex = 0, + FOOTPRINT(Pidgeot) .isMegaEvolution = TRUE, + .levelUpLearnset = sPidgeotLevelUpLearnset, + .teachableLearnset = sPidgeotTeachableLearnset, + .formSpeciesIdTable = sPidgeotFormSpeciesIdTable, + .formChangeTable = sPidgeotFormChangeTable, }, #endif #endif //P_FAMILY_PIDGEY #if P_FAMILY_RATTATA -#define RATTATA_FAMILY_MISC_INFO \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD) - -#define RATTATA_MISC_INFO \ - .baseHP = 30, \ - .baseAttack = 56, \ - .baseDefense = 35, \ - .baseSpeed = 72, \ - .baseSpAttack = 25, \ - .baseSpDefense = 35, \ - .catchRate = 255, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 51 : 57, \ - .evYield_Speed = 1, \ - .speciesName = _("Rattata"), \ - .cryId = CRY_RATTATA, \ - .natDexNum = NATIONAL_DEX_RATTATA, \ - .categoryName = _("Mouse"), \ - FOOTPRINT(Rattata) \ - .formSpeciesIdTable = sRattataFormSpeciesIdTable - -#define RATICATE_MISC_INFO \ - .catchRate = 127, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 145 : 116, \ - .evYield_Speed = 2, \ - .speciesName = _("Raticate"), \ - .cryId = CRY_RATICATE, \ - .natDexNum = NATIONAL_DEX_RATICATE, \ - .categoryName = _("Mouse"), \ - .height = 7, \ - FOOTPRINT(Raticate) \ - .formSpeciesIdTable = sRaticateFormSpeciesIdTable - [SPECIES_RATTATA] = { - RATTATA_FAMILY_MISC_INFO, - RATTATA_MISC_INFO, + .baseHP = 30, + .baseAttack = 56, + .baseDefense = 35, + .baseSpeed = 72, + .baseSpAttack = 25, + .baseSpDefense = 35, .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 255, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 51 : 57, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_RUN_AWAY, ABILITY_GUTS, ABILITY_HUSTLE }, .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Rattata"), + .cryId = CRY_RATTATA, + .natDexNum = NATIONAL_DEX_RATTATA, + .categoryName = _("Mouse"), .height = 3, .weight = 35, .description = COMPOUND_STRING( @@ -1394,25 +1659,32 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 21, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Rattata, 40, 40), - FRONT_PIC_FEMALE(Rattata, 40, 40), + .frontPic = gMonFrontPic_Rattata, + .frontPicFemale = gMonFrontPic_RattataF, + .frontPicSize = MON_COORDS_SIZE(40, 40), + .frontPicSizeFemale = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Rattata, .frontAnimId = ANIM_H_JUMPS, - BACK_PIC(Rattata, 64, 56), - BACK_PIC_FEMALE(Rattata, 64, 56), + .backPic = gMonBackPic_Rattata, + .backPicFemale = gMonBackPic_RattataF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Rattata), - ICON(Rattata, 2), - LEARNSETS(Rattata), + .palette = gMonPalette_Rattata, + .shinyPalette = gMonShinyPalette_Rattata, + .iconSprite = gMonIcon_Rattata, + .iconPalIndex = 2, + FOOTPRINT(Rattata) + .levelUpLearnset = sRattataLevelUpLearnset, + .teachableLearnset = sRattataTeachableLearnset, + .formSpeciesIdTable = sRattataFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_RATICATE}), }, [SPECIES_RATICATE] = { - RATTATA_FAMILY_MISC_INFO, - RATICATE_MISC_INFO, .baseHP = 55, .baseAttack = 81, .baseDefense = 60, @@ -1420,8 +1692,21 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 50, .baseSpDefense = 70, .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 127, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 145 : 116, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_RUN_AWAY, ABILITY_GUTS, ABILITY_HUSTLE }, .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Raticate"), + .cryId = CRY_RATICATE, + .natDexNum = NATIONAL_DEX_RATICATE, + .categoryName = _("Mouse"), + .height = 7, .weight = 185, .description = COMPOUND_STRING( "A Raticate's sturdy fangs grow steadily.\n" @@ -1432,29 +1717,54 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 18, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Raticate, 64, 56), - FRONT_PIC_FEMALE(Raticate, 64, 56), + .frontPic = gMonFrontPic_Raticate, + .frontPicFemale = gMonFrontPic_RaticateF, + .frontPicSize = MON_COORDS_SIZE(64, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Raticate, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - BACK_PIC(Raticate, 64, 48), - BACK_PIC_FEMALE(Raticate, 64, 48), + .backPic = gMonBackPic_Raticate, + .backPicFemale = gMonBackPic_RaticateF, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicSizeFemale = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Raticate), - ICON(Raticate, 2), - LEARNSETS(Raticate), + .palette = gMonPalette_Raticate, + .shinyPalette = gMonShinyPalette_Raticate, + .iconSprite = gMonIcon_Raticate, + .iconPalIndex = 2, + FOOTPRINT(Raticate) + .levelUpLearnset = sRaticateLevelUpLearnset, + .teachableLearnset = sRaticateTeachableLearnset, + .formSpeciesIdTable = sRaticateFormSpeciesIdTable, }, #if P_ALOLAN_FORMS [SPECIES_RATTATA_ALOLAN] = { - RATTATA_FAMILY_MISC_INFO, - RATTATA_MISC_INFO, + .baseHP = 30, + .baseAttack = 56, + .baseDefense = 35, + .baseSpeed = 72, + .baseSpAttack = 25, + .baseSpDefense = 35, .types = MON_TYPES(TYPE_DARK, TYPE_NORMAL), + .catchRate = 255, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 51 : 57, + .evYield_Speed = 1, .itemRare = ITEM_PECHA_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_GLUTTONY, ABILITY_HUSTLE, ABILITY_THICK_FAT }, .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Rattata"), + .cryId = CRY_RATTATA, + .natDexNum = NATIONAL_DEX_RATTATA, + .categoryName = _("Mouse"), .height = 3, .weight = 38, .description = COMPOUND_STRING( @@ -1466,24 +1776,29 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 21, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(RattataAlolan, 40, 48), + .frontPic = gMonFrontPic_RattataAlolan, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_RattataAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(RattataAlolan, 64, 56), + .backPic = gMonBackPic_RattataAlolan, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(RattataAlolan), - ICON(RattataAlolan, 2), - LEARNSETS(RattataAlolan), + .palette = gMonPalette_RattataAlolan, + .shinyPalette = gMonShinyPalette_RattataAlolan, + .iconSprite = gMonIcon_RattataAlolan, + .iconPalIndex = 2, + FOOTPRINT(Rattata) .isAlolanForm = TRUE, + .levelUpLearnset = sRattataAlolanLevelUpLearnset, + .teachableLearnset = sRattataAlolanTeachableLearnset, + .formSpeciesIdTable = sRattataFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 20, SPECIES_RATICATE_ALOLAN}), }, [SPECIES_RATICATE_ALOLAN] = { - RATTATA_FAMILY_MISC_INFO, - RATICATE_MISC_INFO, .baseHP = 75, .baseAttack = 71, .baseDefense = 70, @@ -1491,9 +1806,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 40, .baseSpDefense = 80, .types = MON_TYPES(TYPE_DARK, TYPE_NORMAL), + .catchRate = 127, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 145 : 116, + .evYield_Speed = 2, .itemRare = ITEM_PECHA_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_GLUTTONY, ABILITY_HUSTLE, ABILITY_THICK_FAT }, .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Raticate"), + .cryId = CRY_RATICATE, + .natDexNum = NATIONAL_DEX_RATICATE, + .categoryName = _("Mouse"), + .height = 7, .weight = 255, .description = COMPOUND_STRING( "It forms a group of Rattata, which it \n" @@ -1504,17 +1832,24 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 18, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(RaticateAlolan, 56, 48), + .frontPic = gMonFrontPic_RaticateAlolan, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_RaticateAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(RaticateAlolan, 64, 48), + .backPic = gMonBackPic_RaticateAlolan, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(RaticateAlolan), - ICON(RaticateAlolan, 2), - LEARNSETS(RaticateAlolan), + .palette = gMonPalette_RaticateAlolan, + .shinyPalette = gMonShinyPalette_RaticateAlolan, + .iconSprite = gMonIcon_RaticateAlolan, + .iconPalIndex = 2, + FOOTPRINT(Raticate) .isAlolanForm = TRUE, + .levelUpLearnset = sRaticateAlolanLevelUpLearnset, + .teachableLearnset = sRaticateAlolanTeachableLearnset, + .formSpeciesIdTable = sRaticateFormSpeciesIdTable, }, #endif //P_ALOLAN_FORMS #endif //P_FAMILY_RATTATA @@ -1555,17 +1890,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 22, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Spearow, 40, 40), + .frontPic = gMonFrontPic_Spearow, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Spearow, .frontAnimId = ANIM_V_JUMPS_SMALL, - BACK_PIC(Spearow, 56, 56), + .backPic = gMonBackPic_Spearow, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Spearow), - ICON(Spearow, 0), + .palette = gMonPalette_Spearow, + .shinyPalette = gMonShinyPalette_Spearow, + .iconSprite = gMonIcon_Spearow, + .iconPalIndex = 0, FOOTPRINT(Spearow) - LEARNSETS(Spearow), + .levelUpLearnset = sSpearowLevelUpLearnset, + .teachableLearnset = sSpearowTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_FEAROW}), }, @@ -1604,19 +1944,24 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Fearow, 64, 64), + .frontPic = gMonFrontPic_Fearow, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Fearow, .frontAnimId = ANIM_FIGURE_8, .frontAnimDelay = 2, .enemyMonElevation = 6, - BACK_PIC(Fearow, 64, 56), + .backPic = gMonBackPic_Fearow, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Fearow), - ICON(Fearow, 0), + .palette = gMonPalette_Fearow, + .shinyPalette = gMonShinyPalette_Fearow, + .iconSprite = gMonIcon_Fearow, + .iconPalIndex = 0, FOOTPRINT(Fearow) - LEARNSETS(Fearow), + .levelUpLearnset = sFearowLevelUpLearnset, + .teachableLearnset = sFearowTeachableLearnset, }, #endif //P_FAMILY_SPEAROW @@ -1655,18 +2000,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Ekans, 48, 48), + .frontPic = gMonFrontPic_Ekans, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Ekans, .frontAnimId = ANIM_V_STRETCH, .frontAnimDelay = 30, - BACK_PIC(Ekans, 56, 48), + .backPic = gMonBackPic_Ekans, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Ekans), - ICON(Ekans, 2), + .palette = gMonPalette_Ekans, + .shinyPalette = gMonShinyPalette_Ekans, + .iconSprite = gMonIcon_Ekans, + .iconPalIndex = 2, FOOTPRINT(Ekans) - LEARNSETS(Ekans), + .levelUpLearnset = sEkansLevelUpLearnset, + .teachableLearnset = sEkansTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARBOK}), }, @@ -1710,83 +2060,126 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 296, .trainerOffset = 2, - FRONT_PIC(Arbok, 64, 64), + .frontPic = gMonFrontPic_Arbok, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Arbok, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Arbok, 64, 64), + .backPic = gMonBackPic_Arbok, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Arbok), - ICON(Arbok, 2), + .palette = gMonPalette_Arbok, + .shinyPalette = gMonShinyPalette_Arbok, + .iconSprite = gMonIcon_Arbok, + .iconPalIndex = 2, FOOTPRINT(Arbok) - LEARNSETS(Arbok), + .levelUpLearnset = sArbokLevelUpLearnset, + .teachableLearnset = sArbokTeachableLearnset, }, #endif //P_FAMILY_EKANS #if P_FAMILY_PIKACHU #if P_GEN_2_CROSS_EVOS -#define PICHU_MISC_INFO \ - .baseHP = 20, \ - .baseAttack = 40, \ - .baseDefense = 15, \ - .baseSpeed = 60, \ - .baseSpAttack = 35, \ - .baseSpDefense = 35, \ - .types = MON_TYPES(TYPE_ELECTRIC), \ - .catchRate = 190, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 41 : 42, \ - .evYield_Speed = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 10, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, \ - .bodyColor = BODY_COLOR_YELLOW, \ - .speciesName = _("Pichu"), \ - .cryId = CRY_PICHU, \ - .natDexNum = NATIONAL_DEX_PICHU, \ - .categoryName = _("Tiny Mouse"), \ - .height = 3, \ - .weight = 20, \ - .description = gPichuPokedexText, \ - .pokemonScale = 508, \ - .pokemonOffset = 20, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Pichu) \ - LEARNSETS(Pichu), \ - .formSpeciesIdTable = sPichuFormSpeciesIdTable [SPECIES_PICHU] = { - PICHU_MISC_INFO, - FRONT_PIC(Pichu, 32, 40), + .baseHP = 20, + .baseAttack = 40, + .baseDefense = 15, + .baseSpeed = 60, + .baseSpAttack = 35, + .baseSpDefense = 35, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 41 : 42, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pichu"), + .cryId = CRY_PICHU, + .natDexNum = NATIONAL_DEX_PICHU, + .categoryName = _("Tiny Mouse"), + .height = 3, + .weight = 20, + .description = gPichuPokedexText, + .pokemonScale = 508, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Pichu, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Pichu, .frontAnimId = ANIM_V_JUMPS_BIG, - BACK_PIC(Pichu, 48, 56), + .backPic = gMonBackPic_Pichu, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Pichu), - ICON(Pichu, 1), + .palette = gMonPalette_Pichu, + .shinyPalette = gMonShinyPalette_Pichu, + .iconSprite = gMonIcon_Pichu, + .iconPalIndex = 1, + FOOTPRINT(Pichu) + .levelUpLearnset = sPichuLevelUpLearnset, + .teachableLearnset = sPichuTeachableLearnset, + .formSpeciesIdTable = sPichuFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}), }, [SPECIES_PICHU_SPIKY_EARED] = { - PICHU_MISC_INFO, + .baseHP = 20, + .baseAttack = 40, + .baseDefense = 15, + .baseSpeed = 60, + .baseSpAttack = 35, + .baseSpDefense = 35, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 41 : 42, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, - FRONT_PIC(PichuSpikyEared, 32, 40), + .speciesName = _("Pichu"), + .cryId = CRY_PICHU, + .natDexNum = NATIONAL_DEX_PICHU, + .categoryName = _("Tiny Mouse"), + .height = 3, + .weight = 20, + .description = gPichuPokedexText, + .pokemonScale = 508, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PichuSpikyEared, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_PichuSpikyEared, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PichuSpikyEared, 48, 56), + .backPic = gMonBackPic_PichuSpikyEared, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PichuSpikyEared), - ICON(PichuSpikyEared, 1), + .palette = gMonPalette_PichuSpikyEared, + .shinyPalette = gMonShinyPalette_PichuSpikyEared, + .iconSprite = gMonIcon_PichuSpikyEared, + .iconPalIndex = 1, + FOOTPRINT(Pichu) + .levelUpLearnset = sPichuLevelUpLearnset, + .teachableLearnset = sPichuTeachableLearnset, + .formSpeciesIdTable = sPichuFormSpeciesIdTable, }, #endif //P_GEN_2_CROSS_EVOS @@ -1798,322 +2191,806 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #define PIKACHU_EXP_YIELD 82 #endif -#define PIKACHU_MISC_INFO \ - .baseHP = 35, \ - .baseAttack = 55, \ - .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, \ - .baseSpeed = 90, \ - .baseSpAttack = 50, \ - .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, \ - .types = MON_TYPES(TYPE_ELECTRIC), \ - .catchRate = 190, \ - .expYield = PIKACHU_EXP_YIELD, \ - .evYield_Speed = 2, \ - .itemRare = ITEM_LIGHT_BALL, \ - .eggCycles = 10, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, \ - .bodyColor = BODY_COLOR_YELLOW, \ - .speciesName = _("Pikachu"), \ - .cryId = CRY_PIKACHU, \ - .natDexNum = NATIONAL_DEX_PIKACHU, \ - .categoryName = _("Mouse"), \ - FOOTPRINT(Pikachu) \ - LEARNSETS(Pikachu), \ - .formSpeciesIdTable = sPikachuFormSpeciesIdTable - -#define PIKACHU_REGULAR_SIZE_INFO \ - .height = 4, \ - .weight = 60, \ - .pokemonScale = 479, \ - .pokemonOffset = 19, \ - .trainerScale = 256, \ - .trainerOffset = 0 - [SPECIES_PIKACHU] = { - PIKACHU_MISC_INFO, - PIKACHU_REGULAR_SIZE_INFO, + .baseHP = 35, + .baseAttack = 55, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), + .height = 4, + .weight = 60, .description = gPikachuPokedexText, - FRONT_PIC(Pikachu, 48, 48), - FRONT_PIC_FEMALE(Pikachu, 48, 48), + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Pikachu, + .frontPicFemale = gMonFrontPic_PikachuF, + .frontPicSize = MON_COORDS_SIZE(48, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Pikachu, .frontAnimId = ANIM_FLASH_YELLOW, .frontAnimDelay = 25, - BACK_PIC(Pikachu, 64, 56), - BACK_PIC_FEMALE(Pikachu, 64, 56), + .backPic = gMonBackPic_Pikachu, + .backPicFemale = gMonBackPic_PikachuF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(Pikachu), - ICON(Pikachu, 2), + .palette = gMonPalette_Pikachu, + .shinyPalette = gMonShinyPalette_Pikachu, + .iconSprite = gMonIcon_Pikachu, + .iconPalIndex = 2, #if P_CUSTOM_GENDER_DIFF_ICONS == TRUE - ICON_FEMALE(Pikachu, 2), + .iconSpriteFemale = gMonIcon_PikachuF, + .iconPalIndexFemale = 2, #endif + FOOTPRINT(Pikachu) + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, .formChangeTable = sPikachuFormChangeTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}, {EVO_NONE, 0, SPECIES_RAICHU_ALOLAN}), }, #if P_COSPLAY_PIKACHU_FORMS -#define PIKACHU_COSPLAY_MISC_INFO \ - PIKACHU_MISC_INFO, \ - PIKACHU_REGULAR_SIZE_INFO, \ - .genderRatio = MON_FEMALE, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .description = gPikachuPokedexText - [SPECIES_PIKACHU_COSPLAY] = { - PIKACHU_COSPLAY_MISC_INFO, - FRONT_PIC(PikachuCosplay, 48, 48), + .baseHP = 35, + .baseAttack = 55, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, + .genderRatio = MON_FEMALE, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), + .height = 4, + .weight = 60, + .description = gPikachuPokedexText, + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PikachuCosplay, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_PikachuCosplay, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PikachuCosplay, 64, 56), + .backPic = gMonBackPic_PikachuCosplay, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PikachuCosplay), - ICON(PikachuCosplay, 2), + .palette = gMonPalette_PikachuCosplay, + .shinyPalette = gMonShinyPalette_PikachuCosplay, + .iconSprite = gMonIcon_PikachuCosplay, + .iconPalIndex = 2, + FOOTPRINT(Pikachu) + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, [SPECIES_PIKACHU_ROCK_STAR] = { - PIKACHU_COSPLAY_MISC_INFO, - FRONT_PIC(PikachuRockStar, 48, 48), + .baseHP = 35, + .baseAttack = 55, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, + .genderRatio = MON_FEMALE, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), + .height = 4, + .weight = 60, + .description = gPikachuPokedexText, + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PikachuRockStar, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_PikachuRockStar, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PikachuRockStar, 64, 56), + .backPic = gMonBackPic_PikachuRockStar, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PikachuRockStar), - ICON(PikachuRockStar, 1), + .palette = gMonPalette_PikachuRockStar, + .shinyPalette = gMonShinyPalette_PikachuRockStar, + .iconSprite = gMonIcon_PikachuRockStar, + .iconPalIndex = 1, + FOOTPRINT(Pikachu) + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, [SPECIES_PIKACHU_BELLE] = { - PIKACHU_COSPLAY_MISC_INFO, + .baseHP = 35, + .baseAttack = 55, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, + .genderRatio = MON_FEMALE, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, - FRONT_PIC(PikachuBelle, 48, 48), + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), + .height = 4, + .weight = 60, + .description = gPikachuPokedexText, + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PikachuBelle, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_PikachuBelle, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PikachuBelle, 64, 56), + .backPic = gMonBackPic_PikachuBelle, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PikachuBelle), - ICON(PikachuBelle, 0), + .palette = gMonPalette_PikachuBelle, + .shinyPalette = gMonShinyPalette_PikachuBelle, + .iconSprite = gMonIcon_PikachuBelle, + .iconPalIndex = 0, + FOOTPRINT(Pikachu) + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, [SPECIES_PIKACHU_POP_STAR] = { - PIKACHU_COSPLAY_MISC_INFO, + .baseHP = 35, + .baseAttack = 55, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, + .genderRatio = MON_FEMALE, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, - FRONT_PIC(PikachuPopStar, 48, 48), + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), + .height = 4, + .weight = 60, + .description = gPikachuPokedexText, + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PikachuPopStar, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_PikachuPopStar, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PikachuPopStar, 64, 56), + .backPic = gMonBackPic_PikachuPopStar, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PikachuPopStar), - ICON(PikachuPopStar, 0), + .palette = gMonPalette_PikachuPopStar, + .shinyPalette = gMonShinyPalette_PikachuPopStar, + .iconSprite = gMonIcon_PikachuPopStar, + .iconPalIndex = 0, + FOOTPRINT(Pikachu) + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, [SPECIES_PIKACHU_PH_D] = { - PIKACHU_COSPLAY_MISC_INFO, - FRONT_PIC(PikachuPhD, 48, 48), + .baseHP = 35, + .baseAttack = 55, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, + .genderRatio = MON_FEMALE, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), + .height = 4, + .weight = 60, + .description = gPikachuPokedexText, + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PikachuPhD, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_PikachuPhD, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PikachuPhD, 64, 56), + .backPic = gMonBackPic_PikachuPhD, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PikachuPhD), - ICON(PikachuPhD, 1), + .palette = gMonPalette_PikachuPhD, + .shinyPalette = gMonShinyPalette_PikachuPhD, + .iconSprite = gMonIcon_PikachuPhD, + .iconPalIndex = 1, + FOOTPRINT(Pikachu) + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, [SPECIES_PIKACHU_LIBRE] = { - PIKACHU_COSPLAY_MISC_INFO, - FRONT_PIC(PikachuLibre, 48, 48), + .baseHP = 35, + .baseAttack = 55, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, + .genderRatio = MON_FEMALE, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), + .height = 4, + .weight = 60, + .description = gPikachuPokedexText, + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PikachuLibre, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_PikachuLibre, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PikachuLibre, 64, 56), + .backPic = gMonBackPic_PikachuLibre, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PikachuLibre), - ICON(PikachuLibre, 0), + .palette = gMonPalette_PikachuLibre, + .shinyPalette = gMonShinyPalette_PikachuLibre, + .iconSprite = gMonIcon_PikachuLibre, + .iconPalIndex = 0, + FOOTPRINT(Pikachu) + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, #endif //P_COSPLAY_PIKACHU_FORMS #if P_CAP_PIKACHU_FORMS - -#define PIKACHU_CAP_MISC_INFO \ - PIKACHU_MISC_INFO, \ - PIKACHU_REGULAR_SIZE_INFO, \ - .genderRatio = MON_MALE, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED) - [SPECIES_PIKACHU_ORIGINAL_CAP] = { - PIKACHU_CAP_MISC_INFO, + .baseHP = 35, + .baseAttack = 55, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, + .genderRatio = MON_MALE, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), + .height = 4, + .weight = 60, .description = COMPOUND_STRING( "This Pikachu wears its partner's cap, which\n" "is proof of the strong bond Pikachu and\n" "its partner formed during adventures\n" "across many different regions."), - FRONT_PIC(PikachuOriginalCap, 48, 48), + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PikachuOriginalCap, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_PikachuOriginalCap, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PikachuOriginalCap, 64, 56), + .backPic = gMonBackPic_PikachuOriginalCap, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PikachuOriginalCap), - ICON(PikachuOriginalCap, 0), + .palette = gMonPalette_PikachuOriginalCap, + .shinyPalette = gMonShinyPalette_PikachuOriginalCap, + .iconSprite = gMonIcon_PikachuOriginalCap, + .iconPalIndex = 0, + FOOTPRINT(Pikachu) + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, [SPECIES_PIKACHU_HOENN_CAP] = { - PIKACHU_CAP_MISC_INFO, + .baseHP = 35, + .baseAttack = 55, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, + .genderRatio = MON_MALE, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), + .height = 4, + .weight = 60, .description = COMPOUND_STRING( "This Pikachu wears its partner's cap, which\n" "is proof of the strong bond Pikachu and\n" "its partner formed during adventures\n" "across the Hoenn region together."), - FRONT_PIC(PikachuHoennCap, 48, 48), + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PikachuHoennCap, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_PikachuHoennCap, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PikachuHoennCap, 64, 56), + .backPic = gMonBackPic_PikachuHoennCap, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PikachuHoennCap), - ICON(PikachuHoennCap, 0), + .palette = gMonPalette_PikachuHoennCap, + .shinyPalette = gMonShinyPalette_PikachuHoennCap, + .iconSprite = gMonIcon_PikachuHoennCap, + .iconPalIndex = 0, + FOOTPRINT(Pikachu) + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, [SPECIES_PIKACHU_SINNOH_CAP] = { - PIKACHU_CAP_MISC_INFO, + .baseHP = 35, + .baseAttack = 55, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, + .genderRatio = MON_MALE, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), + .height = 4, + .weight = 60, .description = COMPOUND_STRING( "This Pikachu wears its partner's cap, which\n" "is proof of the strong bond Pikachu and\n" "its partner formed during adventures\n" "across the Sinnoh region together."), - FRONT_PIC(PikachuSinnohCap, 48, 48), + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PikachuSinnohCap, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_PikachuSinnohCap, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PikachuSinnohCap, 64, 56), + .backPic = gMonBackPic_PikachuSinnohCap, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PikachuSinnohCap), - ICON(PikachuSinnohCap, 0), + .palette = gMonPalette_PikachuSinnohCap, + .shinyPalette = gMonShinyPalette_PikachuSinnohCap, + .iconSprite = gMonIcon_PikachuSinnohCap, + .iconPalIndex = 0, + FOOTPRINT(Pikachu) + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, [SPECIES_PIKACHU_UNOVA_CAP] = { - PIKACHU_CAP_MISC_INFO, + .baseHP = 35, + .baseAttack = 55, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, + .genderRatio = MON_MALE, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), + .height = 4, + .weight = 60, .description = COMPOUND_STRING( "This Pikachu wears its partner's cap, which\n" "is proof of the strong bond Pikachu and\n" "its partner formed during adventures\n" "across the Unova region together."), - FRONT_PIC(PikachuUnovaCap, 48, 48), + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PikachuUnovaCap, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_PikachuUnovaCap, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PikachuUnovaCap, 64, 56), + .backPic = gMonBackPic_PikachuUnovaCap, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PikachuUnovaCap), - ICON(PikachuUnovaCap, 0), + .palette = gMonPalette_PikachuUnovaCap, + .shinyPalette = gMonShinyPalette_PikachuUnovaCap, + .iconSprite = gMonIcon_PikachuUnovaCap, + .iconPalIndex = 0, + FOOTPRINT(Pikachu) + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, [SPECIES_PIKACHU_KALOS_CAP] = { - PIKACHU_CAP_MISC_INFO, + .baseHP = 35, + .baseAttack = 55, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, + .genderRatio = MON_MALE, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), + .height = 4, + .weight = 60, .description = COMPOUND_STRING( "This Pikachu wears its partner's cap, which\n" "is proof of the strong bond Pikachu and\n" "its partner formed during adventures\n" "across the Kalos region together."), - FRONT_PIC(PikachuKalosCap, 48, 48), + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PikachuKalosCap, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_PikachuKalosCap, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PikachuKalosCap, 64, 56), + .backPic = gMonBackPic_PikachuKalosCap, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PikachuKalosCap), - ICON(PikachuKalosCap, 0), + .palette = gMonPalette_PikachuKalosCap, + .shinyPalette = gMonShinyPalette_PikachuKalosCap, + .iconSprite = gMonIcon_PikachuKalosCap, + .iconPalIndex = 0, + FOOTPRINT(Pikachu) + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, [SPECIES_PIKACHU_ALOLA_CAP] = { - PIKACHU_CAP_MISC_INFO, + .baseHP = 35, + .baseAttack = 55, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, + .genderRatio = MON_MALE, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), + .height = 4, + .weight = 60, .description = COMPOUND_STRING( "This Pikachu wears its partner's cap, which\n" "is proof of the strong bond Pikachu and\n" "its partner formed during adventures\n" "across the Alola region together."), - FRONT_PIC(PikachuAlolaCap, 48, 48), + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PikachuAlolaCap, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_PikachuAlolaCap, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PikachuAlolaCap, 64, 56), + .backPic = gMonBackPic_PikachuAlolaCap, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PikachuAlolaCap), - ICON(PikachuAlolaCap, 0), + .palette = gMonPalette_PikachuAlolaCap, + .shinyPalette = gMonShinyPalette_PikachuAlolaCap, + .iconSprite = gMonIcon_PikachuAlolaCap, + .iconPalIndex = 0, + FOOTPRINT(Pikachu) + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, [SPECIES_PIKACHU_PARTNER_CAP] = { - PIKACHU_CAP_MISC_INFO, + .baseHP = 35, + .baseAttack = 55, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, + .genderRatio = MON_MALE, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), + .height = 4, + .weight = 60, .description = COMPOUND_STRING( "This Pikachu wears its partner's cap, which\n" "is proof of the strong bond Pikachu and\n" "its partner formed as the two overcame\n" "many hardships together."), - FRONT_PIC(PikachuPartnerCap, 48, 48), + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PikachuPartnerCap, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_PikachuPartnerCap, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PikachuPartnerCap, 64, 56), + .backPic = gMonBackPic_PikachuPartnerCap, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PikachuPartnerCap), - ICON(PikachuPartnerCap, 0), + .palette = gMonPalette_PikachuPartnerCap, + .shinyPalette = gMonShinyPalette_PikachuPartnerCap, + .iconSprite = gMonIcon_PikachuPartnerCap, + .iconPalIndex = 0, + FOOTPRINT(Pikachu) + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, [SPECIES_PIKACHU_WORLD_CAP] = { - PIKACHU_CAP_MISC_INFO, + .baseHP = 35, + .baseAttack = 55, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, + .genderRatio = MON_MALE, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), + .height = 4, + .weight = 60, .description = COMPOUND_STRING( "This Pikachu wears its partner's cap, which\n" "is proof of the strong bond Pikachu and\n" "its partner formed during adventures\n" "across the world together."), - FRONT_PIC(PikachuWorldCap, 48, 48), + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PikachuWorldCap, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_PikachuWorldCap, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PikachuWorldCap, 64, 56), + .backPic = gMonBackPic_PikachuWorldCap, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PikachuWorldCap), - ICON(PikachuWorldCap, 0), + .palette = gMonPalette_PikachuWorldCap, + .shinyPalette = gMonShinyPalette_PikachuWorldCap, + .iconSprite = gMonIcon_PikachuWorldCap, + .iconPalIndex = 0, + FOOTPRINT(Pikachu) + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, #endif //P_CAP_PIKACHU_FORMS @@ -2121,31 +2998,58 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #if P_GIGANTAMAX_FORMS [SPECIES_PIKACHU_GIGANTAMAX] = { - PIKACHU_MISC_INFO, + .baseHP = 35, + .baseAttack = 55, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), .height = 210, .weight = 0, - .pokemonScale = 479, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, .description = COMPOUND_STRING( "When it smashes its opponents with\n" "its bolt-shaped tail, it delivers a\n" "surge of electricity equivalent to a\n" "lightning strike."), - FRONT_PIC(PikachuGigantamax, 64, 64), + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PikachuGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_PikachuGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PikachuGigantamax, 64, 64), + .backPic = gMonBackPic_PikachuGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PikachuGigantamax), - ICON(PikachuGigantamax, 2), - .formChangeTable = sPikachuFormChangeTable, + .palette = gMonPalette_PikachuGigantamax, + .shinyPalette = gMonShinyPalette_PikachuGigantamax, + .iconSprite = gMonIcon_PikachuGigantamax, + .iconPalIndex = 2, + FOOTPRINT(Pikachu) .isGigantamax = TRUE, + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, + .formChangeTable = sPikachuFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS @@ -2161,25 +3065,8 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #define RAICHU_EXP_YIELD 122 #endif -#define RAICHU_MISC_INFO \ - .catchRate = 75, \ - .expYield = RAICHU_EXP_YIELD, \ - .evYield_Speed = 3, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 10, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), \ - .speciesName = _("Raichu"), \ - .cryId = CRY_RAICHU, \ - .natDexNum = NATIONAL_DEX_RAICHU, \ - .categoryName = _("Mouse"), \ - FOOTPRINT(Raichu) \ - .formSpeciesIdTable = sRaichuFormSpeciesIdTable - [SPECIES_RAICHU] = { - RAICHU_MISC_INFO, .baseHP = 60, .baseAttack = 90, .baseDefense = 55, @@ -2187,8 +3074,20 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 90, .baseSpDefense = 80, .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 75, + .expYield = RAICHU_EXP_YIELD, + .evYield_Speed = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Raichu"), + .cryId = CRY_RAICHU, + .natDexNum = NATIONAL_DEX_RAICHU, + .categoryName = _("Mouse"), .height = 8, .weight = 300, .description = COMPOUND_STRING( @@ -2200,23 +3099,30 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Raichu, 64, 64), - FRONT_PIC_FEMALE(Raichu, 64, 64), + .frontPic = gMonFrontPic_Raichu, + .frontPicFemale = gMonFrontPic_RaichuF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Raichu, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Raichu, 64, 56), + .backPic = gMonBackPic_Raichu, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(Raichu), - ICON(Raichu, 0), - LEARNSETS(Raichu), + .palette = gMonPalette_Raichu, + .shinyPalette = gMonShinyPalette_Raichu, + .iconSprite = gMonIcon_Raichu, + .iconPalIndex = 0, + FOOTPRINT(Raichu) + .levelUpLearnset = sRaichuLevelUpLearnset, + .teachableLearnset = sRaichuTeachableLearnset, + .formSpeciesIdTable = sRaichuFormSpeciesIdTable, }, #if P_ALOLAN_FORMS [SPECIES_RAICHU_ALOLAN] = { - RAICHU_MISC_INFO, .baseHP = 60, .baseAttack = 85, .baseDefense = 50, @@ -2224,9 +3130,20 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 95, .baseSpDefense = 85, .types = MON_TYPES(TYPE_ELECTRIC, TYPE_PSYCHIC), + .catchRate = 75, + .expYield = RAICHU_EXP_YIELD, + .evYield_Speed = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), .abilities = { ABILITY_SURGE_SURFER, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, - .isAlolanForm = TRUE, + .speciesName = _("Raichu"), + .cryId = CRY_RAICHU, + .natDexNum = NATIONAL_DEX_RAICHU, + .categoryName = _("Mouse"), .height = 7, .weight = 210, .description = COMPOUND_STRING( @@ -2238,57 +3155,32 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(RaichuAlolan, 64, 64), + .frontPic = gMonFrontPic_RaichuAlolan, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_RaichuAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 4, - BACK_PIC(RaichuAlolan, 56, 56), + .backPic = gMonBackPic_RaichuAlolan, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(RaichuAlolan), - ICON(RaichuAlolan, 2), - LEARNSETS(RaichuAlolan), + .palette = gMonPalette_RaichuAlolan, + .shinyPalette = gMonShinyPalette_RaichuAlolan, + .iconSprite = gMonIcon_RaichuAlolan, + .iconPalIndex = 2, + FOOTPRINT(Raichu) + .isAlolanForm = TRUE, + .levelUpLearnset = sRaichuAlolanLevelUpLearnset, + .teachableLearnset = sRaichuAlolanTeachableLearnset, + .formSpeciesIdTable = sRaichuFormSpeciesIdTable, }, #endif //P_ALOLAN_FORMS #endif //P_FAMILY_PIKACHU #if P_FAMILY_SANDSHREW -#define SANDSHREW_FAMILY_MISC_INFO \ - .itemRare = ITEM_GRIP_CLAW, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD) - -#define SANDSHREW_MISC_INFO \ - .catchRate = 255, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 60 : 93, \ - .evYield_Defense = 1, \ - .speciesName = _("Sandshrew"), \ - .cryId = CRY_SANDSHREW, \ - .natDexNum = NATIONAL_DEX_SANDSHREW, \ - .categoryName = _("Mouse"), \ - FOOTPRINT(Sandshrew) \ - .formSpeciesIdTable = sSandshrewFormSpeciesIdTable, \ - SANDSHREW_FAMILY_MISC_INFO - -#define SANDSLASH_MISC_INFO \ - .catchRate = 90, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 158 : 163, \ - .evYield_Defense = 2, \ - .speciesName = _("Sandslash"), \ - .cryId = CRY_SANDSLASH, \ - .natDexNum = NATIONAL_DEX_SANDSLASH, \ - .categoryName = _("Mouse"), \ - FOOTPRINT(Sandslash) \ - .formSpeciesIdTable = sSandslashFormSpeciesIdTable, \ - SANDSHREW_FAMILY_MISC_INFO - [SPECIES_SANDSHREW] = { - SANDSHREW_MISC_INFO, .baseHP = 50, .baseAttack = 75, .baseDefense = 85, @@ -2296,8 +3188,21 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 20, .baseSpDefense = 30, .types = MON_TYPES(TYPE_GROUND), + .catchRate = 255, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 60 : 93, + .evYield_Defense = 1, + .itemRare = ITEM_GRIP_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_SAND_RUSH }, .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Sandshrew"), + .cryId = CRY_SANDSHREW, + .natDexNum = NATIONAL_DEX_SANDSHREW, + .categoryName = _("Mouse"), .height = 6, .weight = 120, .description = COMPOUND_STRING( @@ -2309,22 +3214,28 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 18, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Sandshrew, 48, 48), + .frontPic = gMonFrontPic_Sandshrew, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Sandshrew, .frontAnimId = ANIM_SWING_CONCAVE_FAST_SHORT, - BACK_PIC(Sandshrew, 48, 40), + .backPic = gMonBackPic_Sandshrew, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Sandshrew), - ICON(Sandshrew, 2), - LEARNSETS(Sandshrew), + .palette = gMonPalette_Sandshrew, + .shinyPalette = gMonShinyPalette_Sandshrew, + .iconSprite = gMonIcon_Sandshrew, + .iconPalIndex = 2, + FOOTPRINT(Sandshrew) + .levelUpLearnset = sSandshrewLevelUpLearnset, + .teachableLearnset = sSandshrewTeachableLearnset, + .formSpeciesIdTable = sSandshrewFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_SANDSLASH}), }, [SPECIES_SANDSLASH] = { - SANDSLASH_MISC_INFO, .baseHP = 75, .baseAttack = 100, .baseDefense = 110, @@ -2332,8 +3243,21 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 45, .baseSpDefense = 55, .types = MON_TYPES(TYPE_GROUND), + .catchRate = 90, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 158 : 163, + .evYield_Defense = 2, + .itemRare = ITEM_GRIP_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_SAND_RUSH }, .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Sandslash"), + .cryId = CRY_SANDSLASH, + .natDexNum = NATIONAL_DEX_SANDSLASH, + .categoryName = _("Mouse"), .height = 10, .weight = 295, .description = COMPOUND_STRING( @@ -2345,22 +3269,28 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 11, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Sandslash, 64, 56), + .frontPic = gMonFrontPic_Sandslash, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Sandslash, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Sandslash, 64, 48), + .backPic = gMonBackPic_Sandslash, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Sandslash), - ICON(Sandslash, 2), - LEARNSETS(Sandslash), + .palette = gMonPalette_Sandslash, + .shinyPalette = gMonShinyPalette_Sandslash, + .iconSprite = gMonIcon_Sandslash, + .iconPalIndex = 2, + FOOTPRINT(Sandslash) + .levelUpLearnset = sSandslashLevelUpLearnset, + .teachableLearnset = sSandslashTeachableLearnset, + .formSpeciesIdTable = sSandslashFormSpeciesIdTable, }, #if P_ALOLAN_FORMS [SPECIES_SANDSHREW_ALOLAN] = { - SANDSHREW_MISC_INFO, .baseHP = 50, .baseAttack = 75, .baseDefense = 90, @@ -2368,8 +3298,21 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 10, .baseSpDefense = 35, .types = MON_TYPES(TYPE_ICE, TYPE_STEEL), + .catchRate = 255, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 60 : 93, + .evYield_Defense = 1, + .itemRare = ITEM_GRIP_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SLUSH_RUSH }, .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Sandshrew"), + .cryId = CRY_SANDSHREW, + .natDexNum = NATIONAL_DEX_SANDSHREW, + .categoryName = _("Mouse"), .height = 7, .weight = 400, .description = COMPOUND_STRING( @@ -2381,23 +3324,29 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 18, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(SandshrewAlolan, 40, 40), + .frontPic = gMonFrontPic_SandshrewAlolan, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_SandshrewAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SandshrewAlolan, 56, 40), + .backPic = gMonBackPic_SandshrewAlolan, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, - PALETTES(SandshrewAlolan), - ICON(SandshrewAlolan, 0), - LEARNSETS(SandshrewAlolan), + .palette = gMonPalette_SandshrewAlolan, + .shinyPalette = gMonShinyPalette_SandshrewAlolan, + .iconSprite = gMonIcon_SandshrewAlolan, + .iconPalIndex = 0, + FOOTPRINT(Sandshrew) .isAlolanForm = TRUE, + .levelUpLearnset = sSandshrewAlolanLevelUpLearnset, + .teachableLearnset = sSandshrewAlolanTeachableLearnset, + .formSpeciesIdTable = sSandshrewFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_SANDSLASH_ALOLAN}), }, [SPECIES_SANDSLASH_ALOLAN] = { - SANDSLASH_MISC_INFO, .baseHP = 75, .baseAttack = 100, .baseDefense = 120, @@ -2405,8 +3354,21 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 25, .baseSpDefense = 65, .types = MON_TYPES(TYPE_ICE, TYPE_STEEL), + .catchRate = 90, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 158 : 163, + .evYield_Defense = 2, + .itemRare = ITEM_GRIP_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SLUSH_RUSH }, .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Sandslash"), + .cryId = CRY_SANDSLASH, + .natDexNum = NATIONAL_DEX_SANDSLASH, + .categoryName = _("Mouse"), .height = 12, .weight = 550, .description = COMPOUND_STRING( @@ -2418,17 +3380,24 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 11, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(SandslashAlolan, 64, 64), + .frontPic = gMonFrontPic_SandslashAlolan, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_SandslashAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SandslashAlolan, 64, 56), + .backPic = gMonBackPic_SandslashAlolan, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(SandslashAlolan), - ICON(SandslashAlolan, 0), - LEARNSETS(SandslashAlolan), + .palette = gMonPalette_SandslashAlolan, + .shinyPalette = gMonShinyPalette_SandslashAlolan, + .iconSprite = gMonIcon_SandslashAlolan, + .iconPalIndex = 0, + FOOTPRINT(Sandslash) .isAlolanForm = TRUE, + .levelUpLearnset = sSandslashAlolanLevelUpLearnset, + .teachableLearnset = sSandslashAlolanTeachableLearnset, + .formSpeciesIdTable = sSandslashFormSpeciesIdTable, }, #endif //P_ALOLAN_FORMS #endif //P_FAMILY_SANDSHREW @@ -2468,18 +3437,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 21, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(NidoranF, 40, 40), + .frontPic = gMonFrontPic_NidoranF, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_NidoranF, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .frontAnimDelay = 28, - BACK_PIC(NidoranF, 48, 40), + .backPic = gMonBackPic_NidoranF, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(NidoranF), - ICON(NidoranF, 0), + .palette = gMonPalette_NidoranF, + .shinyPalette = gMonShinyPalette_NidoranF, + .iconSprite = gMonIcon_NidoranF, + .iconPalIndex = 0, FOOTPRINT(NidoranF) - LEARNSETS(NidoranF), + .levelUpLearnset = sNidoranFLevelUpLearnset, + .teachableLearnset = sNidoranFTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_NIDORINA}), }, @@ -2517,17 +3491,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Nidorina, 48, 48), + .frontPic = gMonFrontPic_Nidorina, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Nidorina, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Nidorina, 56, 56), + .backPic = gMonBackPic_Nidorina, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Nidorina), - ICON(Nidorina, 0), + .palette = gMonPalette_Nidorina, + .shinyPalette = gMonShinyPalette_Nidorina, + .iconSprite = gMonIcon_Nidorina, + .iconPalIndex = 0, FOOTPRINT(Nidorina) - LEARNSETS(Nidorina), + .levelUpLearnset = sNidorinaLevelUpLearnset, + .teachableLearnset = sNidorinaTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}), }, @@ -2573,17 +3552,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Nidoqueen, 64, 64), + .frontPic = gMonFrontPic_Nidoqueen, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Nidoqueen, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Nidoqueen, 64, 56), + .backPic = gMonBackPic_Nidoqueen, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Nidoqueen), - ICON(Nidoqueen, 2), + .palette = gMonPalette_Nidoqueen, + .shinyPalette = gMonShinyPalette_Nidoqueen, + .iconSprite = gMonIcon_Nidoqueen, + .iconPalIndex = 2, FOOTPRINT(Nidoqueen) - LEARNSETS(Nidoqueen), + .levelUpLearnset = sNidoqueenLevelUpLearnset, + .teachableLearnset = sNidoqueenTeachableLearnset, }, [SPECIES_NIDORAN_M] = @@ -2620,17 +3604,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(NidoranM, 40, 40), + .frontPic = gMonFrontPic_NidoranM, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_NidoranM, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(NidoranM, 48, 48), + .backPic = gMonBackPic_NidoranM, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(NidoranM), - ICON(NidoranM, 2), + .palette = gMonPalette_NidoranM, + .shinyPalette = gMonShinyPalette_NidoranM, + .iconSprite = gMonIcon_NidoranM, + .iconPalIndex = 2, FOOTPRINT(NidoranM) - LEARNSETS(NidoranM), + .levelUpLearnset = sNidoranMLevelUpLearnset, + .teachableLearnset = sNidoranMTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_NIDORINO}), }, @@ -2668,17 +3657,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Nidorino, 56, 48), + .frontPic = gMonFrontPic_Nidorino, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Nidorino, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Nidorino, 64, 56), + .backPic = gMonBackPic_Nidorino, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Nidorino), - ICON(Nidorino, 2), + .palette = gMonPalette_Nidorino, + .shinyPalette = gMonShinyPalette_Nidorino, + .iconSprite = gMonIcon_Nidorino, + .iconPalIndex = 2, FOOTPRINT(Nidorino) - LEARNSETS(Nidorino), + .levelUpLearnset = sNidorinoLevelUpLearnset, + .teachableLearnset = sNidorinoTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}), }, @@ -2724,18 +3718,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Nidoking, 64, 64), + .frontPic = gMonFrontPic_Nidoking, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Nidoking, .frontAnimId = ANIM_H_SHAKE, .frontAnimDelay = 25, - BACK_PIC(Nidoking, 64, 64), + .backPic = gMonBackPic_Nidoking, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Nidoking), - ICON(Nidoking, 2), + .palette = gMonPalette_Nidoking, + .shinyPalette = gMonShinyPalette_Nidoking, + .iconSprite = gMonIcon_Nidoking, + .iconPalIndex = 2, FOOTPRINT(Nidoking) - LEARNSETS(Nidoking), + .levelUpLearnset = sNidokingLevelUpLearnset, + .teachableLearnset = sNidokingTeachableLearnset, }, #endif //P_FAMILY_NIDORAN @@ -2783,17 +3782,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 23, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cleffa, 32, 32), + .frontPic = gMonFrontPic_Cleffa, + .frontPicSize = MON_COORDS_SIZE(32, 32), .frontPicYOffset = 18, .frontAnimFrames = sAnims_Cleffa, .frontAnimId = ANIM_V_JUMPS_SMALL, - BACK_PIC(Cleffa, 48, 40), + .backPic = gMonBackPic_Cleffa, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Cleffa), - ICON(Cleffa, 0), + .palette = gMonPalette_Cleffa, + .shinyPalette = gMonShinyPalette_Cleffa, + .iconSprite = gMonIcon_Cleffa, + .iconPalIndex = 0, FOOTPRINT(Cleffa) - LEARNSETS(Cleffa), + .levelUpLearnset = sCleffaLevelUpLearnset, + .teachableLearnset = sCleffaTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}), }, #endif //P_GEN_2_CROSS_EVOS @@ -2834,17 +3838,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Clefairy, 40, 40), + .frontPic = gMonFrontPic_Clefairy, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Clefairy, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Clefairy, 56, 40), + .backPic = gMonBackPic_Clefairy, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 14, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Clefairy), - ICON(Clefairy, 0), + .palette = gMonPalette_Clefairy, + .shinyPalette = gMonShinyPalette_Clefairy, + .iconSprite = gMonIcon_Clefairy, + .iconPalIndex = 0, FOOTPRINT(Clefairy) - LEARNSETS(Clefairy), + .levelUpLearnset = sClefairyLevelUpLearnset, + .teachableLearnset = sClefairyTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}), }, @@ -2892,99 +3901,83 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 5, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Clefable, 56, 56), + .frontPic = gMonFrontPic_Clefable, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Clefable, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Clefable, 64, 48), + .backPic = gMonBackPic_Clefable, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Clefable), - ICON(Clefable, 0), + .palette = gMonPalette_Clefable, + .shinyPalette = gMonShinyPalette_Clefable, + .iconSprite = gMonIcon_Clefable, + .iconPalIndex = 0, FOOTPRINT(Clefable) - LEARNSETS(Clefable), + .levelUpLearnset = sClefableLevelUpLearnset, + .teachableLearnset = sClefableTeachableLearnset, }, #endif //P_FAMILY_CLEFAIRY #if P_FAMILY_VULPIX -#define VULPIX_FAMILY_MISC_INFO \ - .genderRatio = PERCENT_FEMALE(75), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD) - -#define VULPIX_MISC_INFO \ - .baseHP = 38, \ - .baseAttack = 41, \ - .baseDefense = 40, \ - .baseSpeed = 65, \ - .baseSpAttack = 50, \ - .baseSpDefense = 65, \ - .catchRate = 190, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 60 : 63, \ - .evYield_Speed = 1, \ - .speciesName = _("Vulpix"), \ - .cryId = CRY_VULPIX, \ - .natDexNum = NATIONAL_DEX_VULPIX, \ - .categoryName = _("Fox"), \ - .height = 6, \ - .weight = 99, \ - .pokemonScale = 542, \ - .pokemonOffset = 19, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Vulpix) \ - .formSpeciesIdTable = sVulpixFormSpeciesIdTable, \ - VULPIX_FAMILY_MISC_INFO - -#define NINETALES_MISC_INFO \ - .catchRate = 75, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 177 : 178, \ - .evYield_Speed = 1, \ - .evYield_SpDefense = 1, \ - .speciesName = _("Ninetales"), \ - .cryId = CRY_NINETALES, \ - .natDexNum = NATIONAL_DEX_NINETALES, \ - .categoryName = _("Fox"), \ - .height = 11, \ - .weight = 199, \ - .pokemonScale = 339, \ - .pokemonOffset = 10, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Ninetales) \ - .formSpeciesIdTable = sNinetalesFormSpeciesIdTable, \ - VULPIX_FAMILY_MISC_INFO - [SPECIES_VULPIX] = { - VULPIX_MISC_INFO, + .baseHP = 38, + .baseAttack = 41, + .baseDefense = 40, + .baseSpeed = 65, + .baseSpAttack = 50, + .baseSpDefense = 65, .types = MON_TYPES(TYPE_FIRE), + .catchRate = 190, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 60 : 63, + .evYield_Speed = 1, .itemRare = ITEM_CHARCOAL, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_DROUGHT }, .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Vulpix"), + .cryId = CRY_VULPIX, + .natDexNum = NATIONAL_DEX_VULPIX, + .categoryName = _("Fox"), + .height = 6, + .weight = 99, .description = COMPOUND_STRING( "It can freely control fire, making fiery\n" "orbs fly like will-o'-the-wisps. Just\n" "before evolution, its six tails grow hot \n" "as if on fire."), - FRONT_PIC(Vulpix, 56, 48), + .pokemonScale = 542, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Vulpix, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Vulpix, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Vulpix, 64, 48), + .backPic = gMonBackPic_Vulpix, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Vulpix), - ICON(Vulpix, 5), - LEARNSETS(Vulpix), + .palette = gMonPalette_Vulpix, + .shinyPalette = gMonShinyPalette_Vulpix, + .iconSprite = gMonIcon_Vulpix, + .iconPalIndex = 5, + FOOTPRINT(Vulpix) + .levelUpLearnset = sVulpixLevelUpLearnset, + .teachableLearnset = sVulpixTeachableLearnset, + .formSpeciesIdTable = sVulpixFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}), }, [SPECIES_NINETALES] = { - NINETALES_MISC_INFO, .baseHP = 73, .baseAttack = 76, .baseDefense = 75, @@ -2992,56 +3985,111 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 81, .baseSpDefense = 100, .types = MON_TYPES(TYPE_FIRE), + .catchRate = 75, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 177 : 178, + .evYield_Speed = 1, + .evYield_SpDefense = 1, .itemRare = ITEM_CHARCOAL, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_DROUGHT }, .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Ninetales"), + .cryId = CRY_NINETALES, + .natDexNum = NATIONAL_DEX_NINETALES, + .categoryName = _("Fox"), + .height = 11, + .weight = 199, .description = COMPOUND_STRING( "It has long been said that each of the\n" "nine tails embody an enchanted power.\n" "A long-lived Ninetales will have fur that\n" "shines like gold."), - FRONT_PIC(Ninetales, 64, 64), + .pokemonScale = 339, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Ninetales, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Ninetales, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Ninetales, 64, 56), + .backPic = gMonBackPic_Ninetales, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Ninetales), - ICON(Ninetales, 3), - LEARNSETS(Ninetales), + .palette = gMonPalette_Ninetales, + .shinyPalette = gMonShinyPalette_Ninetales, + .iconSprite = gMonIcon_Ninetales, + .iconPalIndex = 3, + FOOTPRINT(Ninetales) + .levelUpLearnset = sNinetalesLevelUpLearnset, + .teachableLearnset = sNinetalesTeachableLearnset, + .formSpeciesIdTable = sNinetalesFormSpeciesIdTable, }, #if P_ALOLAN_FORMS [SPECIES_VULPIX_ALOLAN] = { - VULPIX_MISC_INFO, + .baseHP = 38, + .baseAttack = 41, + .baseDefense = 40, + .baseSpeed = 65, + .baseSpAttack = 50, + .baseSpDefense = 65, .types = MON_TYPES(TYPE_ICE), + .catchRate = 190, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 60 : 63, + .evYield_Speed = 1, .itemRare = ITEM_SNOWBALL, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SNOW_WARNING }, .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Vulpix"), + .cryId = CRY_VULPIX, + .natDexNum = NATIONAL_DEX_VULPIX, + .categoryName = _("Fox"), + .height = 6, + .weight = 99, .description = COMPOUND_STRING( "They live together in a skulk, helping\n" "one another. In hot weather, this Pokémon\n" "makes ice shards with its six tails and\n" "sprays them around to cool itself off."), - FRONT_PIC(VulpixAlolan, 48, 48), + .pokemonScale = 542, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_VulpixAlolan, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_VulpixAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(VulpixAlolan, 64, 56), + .backPic = gMonBackPic_VulpixAlolan, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(VulpixAlolan), - ICON(VulpixAlolan, 2), - LEARNSETS(VulpixAlolan), - .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_NINETALES_ALOLAN}), + .palette = gMonPalette_VulpixAlolan, + .shinyPalette = gMonShinyPalette_VulpixAlolan, + .iconSprite = gMonIcon_VulpixAlolan, + .iconPalIndex = 2, + FOOTPRINT(Vulpix) .isAlolanForm = TRUE, + .levelUpLearnset = sVulpixAlolanLevelUpLearnset, + .teachableLearnset = sVulpixAlolanTeachableLearnset, + .formSpeciesIdTable = sVulpixFormSpeciesIdTable, + .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_NINETALES_ALOLAN}), }, [SPECIES_NINETALES_ALOLAN] = { - NINETALES_MISC_INFO, .baseHP = 73, .baseAttack = 67, .baseDefense = 75, @@ -3049,25 +4097,51 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 81, .baseSpDefense = 100, .types = MON_TYPES(TYPE_ICE, TYPE_FAIRY), + .catchRate = 75, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 177 : 178, + .evYield_Speed = 1, + .evYield_SpDefense = 1, .itemRare = ITEM_SNOWBALL, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SNOW_WARNING }, .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Ninetales"), + .cryId = CRY_NINETALES, + .natDexNum = NATIONAL_DEX_NINETALES, + .categoryName = _("Fox"), + .height = 11, + .weight = 199, .description = COMPOUND_STRING( "While it will guide travelers who get lost\n" "on a snowy mountain down to the\n" "mountain's base, it won't forgive anyone\n" "who harms nature."), - FRONT_PIC(NinetalesAlolan, 64, 64), + .pokemonScale = 339, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_NinetalesAlolan, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_NinetalesAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(NinetalesAlolan, 64, 56), + .backPic = gMonBackPic_NinetalesAlolan, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(NinetalesAlolan), - ICON(NinetalesAlolan, 2), - LEARNSETS(NinetalesAlolan), + .palette = gMonPalette_NinetalesAlolan, + .shinyPalette = gMonShinyPalette_NinetalesAlolan, + .iconSprite = gMonIcon_NinetalesAlolan, + .iconPalIndex = 2, + FOOTPRINT(Ninetales) .isAlolanForm = TRUE, + .levelUpLearnset = sNinetalesAlolanLevelUpLearnset, + .teachableLearnset = sNinetalesAlolanTeachableLearnset, + .formSpeciesIdTable = sNinetalesFormSpeciesIdTable, }, #endif //P_ALOLAN_FORMS #endif //P_FAMILY_VULPIX @@ -3115,17 +4189,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = -1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Igglybuff, 32, 32), + .frontPic = gMonFrontPic_Igglybuff, + .frontPicSize = MON_COORDS_SIZE(32, 32), .frontPicYOffset = 17, .frontAnimFrames = sAnims_Igglybuff, .frontAnimId = ANIM_SWING_CONCAVE_FAST, - BACK_PIC(Igglybuff, 40, 40), + .backPic = gMonBackPic_Igglybuff, + .backPicSize = MON_COORDS_SIZE(40, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Igglybuff), - ICON(Igglybuff, 1), + .palette = gMonPalette_Igglybuff, + .shinyPalette = gMonShinyPalette_Igglybuff, + .iconSprite = gMonIcon_Igglybuff, + .iconPalIndex = 1, FOOTPRINT(Igglybuff) - LEARNSETS(Igglybuff), + .levelUpLearnset = sIgglybuffLevelUpLearnset, + .teachableLearnset = sIgglybuffTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}), }, #endif //P_GEN_2_CROSS_EVOS @@ -3166,17 +4245,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Jigglypuff, 40, 40), + .frontPic = gMonFrontPic_Jigglypuff, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Jigglypuff, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - BACK_PIC(Jigglypuff, 56, 48), + .backPic = gMonBackPic_Jigglypuff, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 12, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Jigglypuff), - ICON(Jigglypuff, 0), + .palette = gMonPalette_Jigglypuff, + .shinyPalette = gMonShinyPalette_Jigglypuff, + .iconSprite = gMonIcon_Jigglypuff, + .iconPalIndex = 0, FOOTPRINT(Jigglypuff) - LEARNSETS(Jigglypuff), + .levelUpLearnset = sJigglypuffLevelUpLearnset, + .teachableLearnset = sJigglypuffTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}), }, @@ -3224,17 +4308,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 11, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Wigglytuff, 48, 64), + .frontPic = gMonFrontPic_Wigglytuff, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Wigglytuff, .frontAnimId = ANIM_H_JUMPS, - BACK_PIC(Wigglytuff, 56, 64), + .backPic = gMonBackPic_Wigglytuff, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_GROW, - PALETTES(Wigglytuff), - ICON(Wigglytuff, 0), + .palette = gMonPalette_Wigglytuff, + .shinyPalette = gMonShinyPalette_Wigglytuff, + .iconSprite = gMonIcon_Wigglytuff, + .iconPalIndex = 0, FOOTPRINT(Wigglytuff) - LEARNSETS(Wigglytuff), + .levelUpLearnset = sWigglytuffLevelUpLearnset, + .teachableLearnset = sWigglytuffTeachableLearnset, }, #endif //P_FAMILY_JIGGLYPUFF @@ -3273,20 +4362,27 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = -5, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Zubat, 56, 48), - FRONT_PIC_FEMALE(Zubat, 56, 48), + .frontPic = gMonFrontPic_Zubat, + .frontPicFemale = gMonFrontPic_ZubatF, + .frontPicSize = MON_COORDS_SIZE(56, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Zubat, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 16, - BACK_PIC(Zubat, 56, 56), - BACK_PIC_FEMALE(Zubat, 56, 56), + .backPic = gMonBackPic_Zubat, + .backPicFemale = gMonBackPic_ZubatF, + .backPicSize = MON_COORDS_SIZE(56, 56), + .backPicSizeFemale = MON_COORDS_SIZE(56, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Zubat), - ICON(Zubat, 2), + .palette = gMonPalette_Zubat, + .shinyPalette = gMonShinyPalette_Zubat, + .iconSprite = gMonIcon_Zubat, + .iconPalIndex = 2, FOOTPRINT(Zubat) - LEARNSETS(Zubat), + .levelUpLearnset = sZubatLevelUpLearnset, + .teachableLearnset = sZubatTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_GOLBAT}), }, @@ -3324,20 +4420,27 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Golbat, 64, 56), - FRONT_PIC_FEMALE(Golbat, 64, 56), + .frontPic = gMonFrontPic_Golbat, + .frontPicFemale = gMonFrontPic_GolbatF, + .frontPicSize = MON_COORDS_SIZE(64, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Golbat, .frontAnimId = ANIM_H_SLIDE_WOBBLE, .enemyMonElevation = 10, - BACK_PIC(Golbat, 56, 40), - BACK_PIC_FEMALE(Golbat, 56, 40), + .backPic = gMonBackPic_Golbat, + .backPicFemale = gMonBackPic_GolbatF, + .backPicSize = MON_COORDS_SIZE(56, 40), + .backPicSizeFemale = MON_COORDS_SIZE(56, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Golbat), - ICON(Golbat, 2), + .palette = gMonPalette_Golbat, + .shinyPalette = gMonShinyPalette_Golbat, + .iconSprite = gMonIcon_Golbat, + .iconPalIndex = 2, FOOTPRINT(Golbat) - LEARNSETS(Golbat), + .levelUpLearnset = sGolbatLevelUpLearnset, + .teachableLearnset = sGolbatTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_CROBAT}), }, @@ -3382,18 +4485,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 281, .trainerOffset = 1, - FRONT_PIC(Crobat, 64, 56), + .frontPic = gMonFrontPic_Crobat, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Crobat, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 9, - BACK_PIC(Crobat, 64, 64), + .backPic = gMonBackPic_Crobat, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Crobat), - ICON(Crobat, 2), + .palette = gMonPalette_Crobat, + .shinyPalette = gMonShinyPalette_Crobat, + .iconSprite = gMonIcon_Crobat, + .iconPalIndex = 2, FOOTPRINT(Crobat) - LEARNSETS(Crobat), + .levelUpLearnset = sCrobatLevelUpLearnset, + .teachableLearnset = sCrobatTeachableLearnset, }, #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_ZUBAT @@ -3434,17 +4542,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Oddish, 40, 40), + .frontPic = gMonFrontPic_Oddish, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Oddish, .frontAnimId = ANIM_V_JUMPS_H_JUMPS, - BACK_PIC(Oddish, 48, 48), + .backPic = gMonBackPic_Oddish, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Oddish), - ICON(Oddish, 4), + .palette = gMonPalette_Oddish, + .shinyPalette = gMonShinyPalette_Oddish, + .iconSprite = gMonIcon_Oddish, + .iconPalIndex = 4, FOOTPRINT(Oddish) - LEARNSETS(Oddish), + .levelUpLearnset = sOddishLevelUpLearnset, + .teachableLearnset = sOddishTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 21, SPECIES_GLOOM}), }, @@ -3483,19 +4596,26 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Gloom, 56, 48), - FRONT_PIC_FEMALE(Gloom, 56, 48), + .frontPic = gMonFrontPic_Gloom, + .frontPicFemale = gMonFrontPic_GloomF, + .frontPicSize = MON_COORDS_SIZE(56, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Gloom, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Gloom, 64, 48), - BACK_PIC_FEMALE(Gloom, 64, 48), + .backPic = gMonBackPic_Gloom, + .backPicFemale = gMonBackPic_GloomF, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicSizeFemale = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Gloom), - ICON(Gloom, 0), + .palette = gMonPalette_Gloom, + .shinyPalette = gMonShinyPalette_Gloom, + .iconSprite = gMonIcon_Gloom, + .iconPalIndex = 0, FOOTPRINT(Gloom) - LEARNSETS(Gloom), + .levelUpLearnset = sGloomLevelUpLearnset, + .teachableLearnset = sGloomTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}), }, @@ -3543,19 +4663,26 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Vileplume, 56, 56), - FRONT_PIC_FEMALE(Vileplume, 56, 56), + .frontPic = gMonFrontPic_Vileplume, + .frontPicFemale = gMonFrontPic_VileplumeF, + .frontPicSize = MON_COORDS_SIZE(56, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Vileplume, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Vileplume, 64, 56), - BACK_PIC_FEMALE(Vileplume, 64, 56), + .backPic = gMonBackPic_Vileplume, + .backPicFemale = gMonBackPic_VileplumeF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Vileplume), - ICON(Vileplume, 0), + .palette = gMonPalette_Vileplume, + .shinyPalette = gMonShinyPalette_Vileplume, + .iconSprite = gMonIcon_Vileplume, + .iconPalIndex = 0, FOOTPRINT(Vileplume) - LEARNSETS(Vileplume), + .levelUpLearnset = sVileplumeLevelUpLearnset, + .teachableLearnset = sVileplumeTeachableLearnset, }, #if P_GEN_2_CROSS_EVOS @@ -3602,17 +4729,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 21, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Bellossom, 32, 40), + .frontPic = gMonFrontPic_Bellossom, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Bellossom, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(Bellossom, 48, 48), + .backPic = gMonBackPic_Bellossom, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Bellossom), - ICON(Bellossom, 1), + .palette = gMonPalette_Bellossom, + .shinyPalette = gMonShinyPalette_Bellossom, + .iconSprite = gMonIcon_Bellossom, + .iconPalIndex = 1, FOOTPRINT(Bellossom) - LEARNSETS(Bellossom), + .levelUpLearnset = sBellossomLevelUpLearnset, + .teachableLearnset = sBellossomTeachableLearnset, }, #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_ODDISH @@ -3654,18 +4786,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 22, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Paras, 48, 40), + .frontPic = gMonFrontPic_Paras, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Paras, .frontAnimId = ANIM_H_SLIDE_SLOW, .frontAnimDelay = 10, - BACK_PIC(Paras, 64, 32), + .backPic = gMonBackPic_Paras, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 18, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Paras), - ICON(Paras, 0), + .palette = gMonPalette_Paras, + .shinyPalette = gMonShinyPalette_Paras, + .iconSprite = gMonIcon_Paras, + .iconPalIndex = 0, FOOTPRINT(Paras) - LEARNSETS(Paras), + .levelUpLearnset = sParasLevelUpLearnset, + .teachableLearnset = sParasTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_PARASECT}), }, @@ -3706,18 +4843,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Parasect, 56, 56), + .frontPic = gMonFrontPic_Parasect, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Parasect, .frontAnimId = ANIM_H_SHAKE, .frontAnimDelay = 45, - BACK_PIC(Parasect, 64, 40), + .backPic = gMonBackPic_Parasect, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Parasect), - ICON(Parasect, 0), + .palette = gMonPalette_Parasect, + .shinyPalette = gMonShinyPalette_Parasect, + .iconSprite = gMonIcon_Parasect, + .iconPalIndex = 0, FOOTPRINT(Parasect) - LEARNSETS(Parasect), + .levelUpLearnset = sParasectLevelUpLearnset, + .teachableLearnset = sParasectTeachableLearnset, }, #endif //P_FAMILY_PARAS @@ -3756,18 +4898,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = -1, - FRONT_PIC(Venonat, 40, 56), + .frontPic = gMonFrontPic_Venonat, + .frontPicSize = MON_COORDS_SIZE(40, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Venonat, .frontAnimId = ANIM_V_JUMPS_H_JUMPS, .frontAnimDelay = 20, - BACK_PIC(Venonat, 64, 56), + .backPic = gMonBackPic_Venonat, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Venonat), - ICON(Venonat, 2), + .palette = gMonPalette_Venonat, + .shinyPalette = gMonShinyPalette_Venonat, + .iconSprite = gMonIcon_Venonat, + .iconPalIndex = 2, FOOTPRINT(Venonat) - LEARNSETS(Venonat), + .levelUpLearnset = sVenonatLevelUpLearnset, + .teachableLearnset = sVenonatTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_VENOMOTH}), }, @@ -3807,47 +4954,27 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 256, .trainerOffset = 1, - FRONT_PIC(Venomoth, 64, 48), + .frontPic = gMonFrontPic_Venomoth, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Venomoth, .frontAnimId = ANIM_ZIGZAG_SLOW, .enemyMonElevation = 16, - BACK_PIC(Venomoth, 64, 56), + .backPic = gMonBackPic_Venomoth, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Venomoth), - ICON(Venomoth, 2), + .palette = gMonPalette_Venomoth, + .shinyPalette = gMonShinyPalette_Venomoth, + .iconSprite = gMonIcon_Venomoth, + .iconPalIndex = 2, FOOTPRINT(Venomoth) - LEARNSETS(Venomoth), + .levelUpLearnset = sVenomothLevelUpLearnset, + .teachableLearnset = sVenomothTeachableLearnset, }, #endif //P_FAMILY_VENONAT #if P_FAMILY_DIGLETT -#define DIGLETT_FAMILY_MISC_INFO \ - .itemRare = ITEM_SOFT_SAND, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .bodyColor = BODY_COLOR_BROWN - -#define DIGLETT_MISC_INFO \ - .catchRate = 255, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 53 : 81, \ - .evYield_Speed = 1, \ - .speciesName = _("Diglett"), \ - .cryId = CRY_DIGLETT, \ - .natDexNum = NATIONAL_DEX_DIGLETT, \ - .categoryName = _("Mole"), \ - .height = 2, \ - .pokemonScale = 833, \ - .pokemonOffset = 25, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Diglett) \ - .formSpeciesIdTable = sDiglettFormSpeciesIdTable, \ - DIGLETT_FAMILY_MISC_INFO #if P_UPDATED_EXP_YIELDS >= GEN_7 #define DUGTRIO_EXP_YIELD 149 @@ -3857,28 +4984,10 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #define DUGTRIO_EXP_YIELD 153 #endif -#define DUGTRIO_MISC_INFO \ - .catchRate = 50, \ - .expYield = DUGTRIO_EXP_YIELD, \ - .evYield_Speed = 2, \ - .speciesName = _("Dugtrio"), \ - .cryId = CRY_DUGTRIO, \ - .natDexNum = NATIONAL_DEX_DUGTRIO, \ - .categoryName = _("Mole"), \ - .height = 7, \ - .pokemonScale = 406, \ - .pokemonOffset = 18, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Dugtrio) \ - .formSpeciesIdTable = sDugtrioFormSpeciesIdTable, \ - DIGLETT_FAMILY_MISC_INFO - #define DUGTRIO_ATTACK (P_UPDATED_STATS >= GEN_7 ? 100 : 80) [SPECIES_DIGLETT] = { - DIGLETT_MISC_INFO, .baseHP = 10, .baseAttack = 55, .baseDefense = 25, @@ -3886,30 +4995,55 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 35, .baseSpDefense = 45, .types = MON_TYPES(TYPE_GROUND), + .catchRate = 255, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 53 : 81, + .evYield_Speed = 1, + .itemRare = ITEM_SOFT_SAND, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_SAND_VEIL, ABILITY_ARENA_TRAP, ABILITY_SAND_FORCE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Diglett"), + .cryId = CRY_DIGLETT, + .natDexNum = NATIONAL_DEX_DIGLETT, + .categoryName = _("Mole"), + .height = 2, .weight = 8, .description = COMPOUND_STRING( "Diglett are raised in most farms.\n" "The reason is simple--wherever they\n" "burrow, the soil is left perfectly tilled\n" "for growing delicious crops."), - FRONT_PIC(Diglett, 32, 32), + .pokemonScale = 833, + .pokemonOffset = 25, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Diglett, + .frontPicSize = MON_COORDS_SIZE(32, 32), .frontPicYOffset = 17, .frontAnimFrames = sAnims_Diglett, .frontAnimId = ANIM_V_SHAKE, .frontAnimDelay = 25, - BACK_PIC(Diglett, 40, 40), + .backPic = gMonBackPic_Diglett, + .backPicSize = MON_COORDS_SIZE(40, 40), .backPicYOffset = 14, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Diglett), - ICON(Diglett, 2), - LEARNSETS(Diglett), + .palette = gMonPalette_Diglett, + .shinyPalette = gMonShinyPalette_Diglett, + .iconSprite = gMonIcon_Diglett, + .iconPalIndex = 2, + FOOTPRINT(Diglett) + .levelUpLearnset = sDiglettLevelUpLearnset, + .teachableLearnset = sDiglettTeachableLearnset, + .formSpeciesIdTable = sDiglettFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_DUGTRIO}), }, [SPECIES_DUGTRIO] = { - DUGTRIO_MISC_INFO, .baseHP = 35, .baseAttack = DUGTRIO_ATTACK, .baseDefense = 50, @@ -3917,30 +5051,55 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 50, .baseSpDefense = 70, .types = MON_TYPES(TYPE_GROUND), + .catchRate = 50, + .expYield = DUGTRIO_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_SOFT_SAND, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_SAND_VEIL, ABILITY_ARENA_TRAP, ABILITY_SAND_FORCE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Dugtrio"), + .cryId = CRY_DUGTRIO, + .natDexNum = NATIONAL_DEX_DUGTRIO, + .categoryName = _("Mole"), + .height = 7, .weight = 333, .description = COMPOUND_STRING( "Because the triplets originally split from\n" "one body, they think exactly alike.\n" "They work cooperatively to burrow\n" "endlessly through the ground."), - FRONT_PIC(Dugtrio, 48, 48), + .pokemonScale = 406, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Dugtrio, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Dugtrio, .frontAnimId = ANIM_H_SHAKE_SLOW, .frontAnimDelay = 35, - BACK_PIC(Dugtrio, 48, 32), + .backPic = gMonBackPic_Dugtrio, + .backPicSize = MON_COORDS_SIZE(48, 32), .backPicYOffset = 17, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Dugtrio), - ICON(Dugtrio, 2), - LEARNSETS(Dugtrio), + .palette = gMonPalette_Dugtrio, + .shinyPalette = gMonShinyPalette_Dugtrio, + .iconSprite = gMonIcon_Dugtrio, + .iconPalIndex = 2, + FOOTPRINT(Dugtrio) + .levelUpLearnset = sDugtrioLevelUpLearnset, + .teachableLearnset = sDugtrioTeachableLearnset, + .formSpeciesIdTable = sDugtrioFormSpeciesIdTable, }, #if P_ALOLAN_FORMS [SPECIES_DIGLETT_ALOLAN] = { - DIGLETT_MISC_INFO, .baseHP = 10, .baseAttack = 55, .baseDefense = 30, @@ -3948,30 +5107,55 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 35, .baseSpDefense = 45, .types = MON_TYPES(TYPE_GROUND, TYPE_STEEL), + .catchRate = 255, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 53 : 81, + .evYield_Speed = 1, + .itemRare = ITEM_SOFT_SAND, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_SAND_VEIL, ABILITY_TANGLING_HAIR, ABILITY_SAND_FORCE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Diglett"), + .cryId = CRY_DIGLETT, + .natDexNum = NATIONAL_DEX_DIGLETT, + .categoryName = _("Mole"), + .height = 2, .weight = 10, .description = COMPOUND_STRING( "The metal-rich geology of its habitat\n" "caused it to develop steel whiskers on its\n" "head that change shape depending on its\n" "mood and when communicating with others."), - FRONT_PIC(DiglettAlolan, 32, 40), + .pokemonScale = 833, + .pokemonOffset = 25, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_DiglettAlolan, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 19, .frontAnimFrames = sAnims_DiglettAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(DiglettAlolan, 40, 48), + .backPic = gMonBackPic_DiglettAlolan, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(DiglettAlolan), - ICON(DiglettAlolan, 2), - LEARNSETS(DiglettAlolan), + .palette = gMonPalette_DiglettAlolan, + .shinyPalette = gMonShinyPalette_DiglettAlolan, + .iconSprite = gMonIcon_DiglettAlolan, + .iconPalIndex = 2, + FOOTPRINT(Diglett) .isAlolanForm = TRUE, + .levelUpLearnset = sDiglettAlolanLevelUpLearnset, + .teachableLearnset = sDiglettAlolanTeachableLearnset, + .formSpeciesIdTable = sDiglettFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_DUGTRIO_ALOLAN}), }, [SPECIES_DUGTRIO_ALOLAN] = { - DUGTRIO_MISC_INFO, .baseHP = 35, .baseAttack = DUGTRIO_ATTACK, .baseDefense = 60, @@ -3979,76 +5163,80 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 50, .baseSpDefense = 70, .types = MON_TYPES(TYPE_GROUND, TYPE_STEEL), + .catchRate = 50, + .expYield = DUGTRIO_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_SOFT_SAND, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_SAND_VEIL, ABILITY_TANGLING_HAIR, ABILITY_SAND_FORCE }, + .bodyColor = BODY_COLOR_BROWN, .noFlip = TRUE, + .speciesName = _("Dugtrio"), + .cryId = CRY_DUGTRIO, + .natDexNum = NATIONAL_DEX_DUGTRIO, + .categoryName = _("Mole"), + .height = 7, .weight = 666, .description = COMPOUND_STRING( "Their beautiful, metallic whiskers create\n" "a sort of protective helmet on\n" "heir heads, and they also function\n" "as highly precise sensors."), - FRONT_PIC(DugtrioAlolan, 48, 48), + .pokemonScale = 406, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_DugtrioAlolan, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_DugtrioAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(DugtrioAlolan, 64, 32), + .backPic = gMonBackPic_DugtrioAlolan, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 17, //.backAnimId = BACK_ANIM_NONE, - PALETTES(DugtrioAlolan), - ICON(DugtrioAlolan, 2), - LEARNSETS(DugtrioAlolan), + .palette = gMonPalette_DugtrioAlolan, + .shinyPalette = gMonShinyPalette_DugtrioAlolan, + .iconSprite = gMonIcon_DugtrioAlolan, + .iconPalIndex = 2, + FOOTPRINT(Dugtrio) .isAlolanForm = TRUE, + .levelUpLearnset = sDugtrioAlolanLevelUpLearnset, + .teachableLearnset = sDugtrioAlolanTeachableLearnset, + .formSpeciesIdTable = sDugtrioFormSpeciesIdTable, }, #endif //P_ALOLAN_FORMS #endif //P_FAMILY_DIGLETT #if P_FAMILY_MEOWTH -#define MEOWTH_MISC_INFO \ - .catchRate = 255, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 58 : 69, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .speciesName = _("Meowth"), \ - .cryId = CRY_MEOWTH, \ - .natDexNum = NATIONAL_DEX_MEOWTH, \ - .categoryName = _("Scratch Cat"), \ - FOOTPRINT(Meowth) \ - .formSpeciesIdTable = sMeowthFormSpeciesIdTable - -#define PERSIAN_MISC_INFO \ - .catchRate = 90, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 154 : 148, \ - .evYield_Speed = 2, \ - .itemRare = ITEM_QUICK_CLAW, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .speciesName = _("Persian"), \ - .cryId = CRY_PERSIAN, \ - .natDexNum = NATIONAL_DEX_PERSIAN, \ - .categoryName = _("Classy Cat"), \ - FOOTPRINT(Persian) \ - .formSpeciesIdTable = sPersianFormSpeciesIdTable - [SPECIES_MEOWTH] = { - MEOWTH_MISC_INFO, .baseHP = 40, .baseAttack = 45, .baseDefense = 35, .baseSpeed = 90, .baseSpAttack = 40, .baseSpDefense = 40, - .evYield_Speed = 1, .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 255, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 58 : 69, + .evYield_Speed = 1, .itemRare = ITEM_QUICK_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_UNNERVE }, .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Meowth"), + .cryId = CRY_MEOWTH, + .natDexNum = NATIONAL_DEX_MEOWTH, + .categoryName = _("Scratch Cat"), .height = 4, .weight = 42, .description = COMPOUND_STRING( @@ -4060,24 +5248,30 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Meowth, 48, 48), + .frontPic = gMonFrontPic_Meowth, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Meowth, .frontAnimId = ANIM_V_JUMPS_SMALL, .frontAnimDelay = 40, - BACK_PIC(Meowth, 56, 56), + .backPic = gMonBackPic_Meowth, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Meowth), - ICON(Meowth, 1), - LEARNSETS(Meowth), + .palette = gMonPalette_Meowth, + .shinyPalette = gMonShinyPalette_Meowth, + .iconSprite = gMonIcon_Meowth, + .iconPalIndex = 1, + FOOTPRINT(Meowth) + .levelUpLearnset = sMeowthLevelUpLearnset, + .teachableLearnset = sMeowthTeachableLearnset, + .formSpeciesIdTable = sMeowthFormSpeciesIdTable, .formChangeTable = sMeowthFormChangeTable, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_PERSIAN}), }, [SPECIES_PERSIAN] = { - PERSIAN_MISC_INFO, .baseHP = 65, .baseAttack = 70, .baseDefense = 60, @@ -4085,8 +5279,21 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 65, .baseSpDefense = 65, .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 90, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 154 : 148, + .evYield_Speed = 2, + .itemRare = ITEM_QUICK_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_LIMBER, ABILITY_TECHNICIAN, ABILITY_UNNERVE }, .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Persian"), + .cryId = CRY_PERSIAN, + .natDexNum = NATIONAL_DEX_PERSIAN, + .categoryName = _("Classy Cat"), .height = 10, .weight = 320, .description = COMPOUND_STRING( @@ -4098,34 +5305,51 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Persian, 64, 56), + .frontPic = gMonFrontPic_Persian, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Persian, .frontAnimId = ANIM_V_STRETCH, .frontAnimDelay = 20, - BACK_PIC(Persian, 64, 56), + .backPic = gMonBackPic_Persian, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Persian), - ICON(Persian, 1), - LEARNSETS(Persian), + .palette = gMonPalette_Persian, + .shinyPalette = gMonShinyPalette_Persian, + .iconSprite = gMonIcon_Persian, + .iconPalIndex = 1, + FOOTPRINT(Persian) + .levelUpLearnset = sPersianLevelUpLearnset, + .teachableLearnset = sPersianTeachableLearnset, + .formSpeciesIdTable = sPersianFormSpeciesIdTable, }, #if P_ALOLAN_FORMS [SPECIES_MEOWTH_ALOLAN] = { - MEOWTH_MISC_INFO, .baseHP = 40, .baseAttack = 35, .baseDefense = 35, .baseSpeed = 90, .baseSpAttack = 50, .baseSpDefense = 40, - .evYield_Speed = 1, .types = MON_TYPES(TYPE_DARK), + .catchRate = 255, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 58 : 69, + .evYield_Speed = 1, .itemRare = ITEM_QUICK_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_RATTLED }, .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Meowth"), + .cryId = CRY_MEOWTH, + .natDexNum = NATIONAL_DEX_MEOWTH, + .categoryName = _("Scratch Cat"), .height = 4, .weight = 42, .description = COMPOUND_STRING( @@ -4137,23 +5361,29 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(MeowthAlolan, 48, 48), + .frontPic = gMonFrontPic_MeowthAlolan, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_MeowthAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(MeowthAlolan, 64, 56), + .backPic = gMonBackPic_MeowthAlolan, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(MeowthAlolan), - ICON(MeowthAlolan, 2), - LEARNSETS(MeowthAlolan), + .palette = gMonPalette_MeowthAlolan, + .shinyPalette = gMonShinyPalette_MeowthAlolan, + .iconSprite = gMonIcon_MeowthAlolan, + .iconPalIndex = 2, + FOOTPRINT(Meowth) .isAlolanForm = TRUE, + .levelUpLearnset = sMeowthAlolanLevelUpLearnset, + .teachableLearnset = sMeowthAlolanTeachableLearnset, + .formSpeciesIdTable = sMeowthFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_PERSIAN_ALOLAN}), }, [SPECIES_PERSIAN_ALOLAN] = { - PERSIAN_MISC_INFO, .baseHP = 65, .baseAttack = 60, .baseDefense = 60, @@ -4161,8 +5391,21 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 75, .baseSpDefense = 65, .types = MON_TYPES(TYPE_DARK), + .catchRate = 90, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 154 : 148, + .evYield_Speed = 2, + .itemRare = ITEM_QUICK_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_FUR_COAT, ABILITY_TECHNICIAN, ABILITY_RATTLED }, .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Persian"), + .cryId = CRY_PERSIAN, + .natDexNum = NATIONAL_DEX_PERSIAN, + .categoryName = _("Classy Cat"), .height = 11, .weight = 330, .description = COMPOUND_STRING( @@ -4174,34 +5417,51 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(PersianAlolan, 56, 56), + .frontPic = gMonFrontPic_PersianAlolan, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_PersianAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PersianAlolan, 64, 56), + .backPic = gMonBackPic_PersianAlolan, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PersianAlolan), - ICON(PersianAlolan, 2), - LEARNSETS(PersianAlolan), + .palette = gMonPalette_PersianAlolan, + .shinyPalette = gMonShinyPalette_PersianAlolan, + .iconSprite = gMonIcon_PersianAlolan, + .iconPalIndex = 2, + FOOTPRINT(Persian) .isAlolanForm = TRUE, + .levelUpLearnset = sPersianAlolanLevelUpLearnset, + .teachableLearnset = sPersianAlolanTeachableLearnset, + .formSpeciesIdTable = sPersianFormSpeciesIdTable, }, #endif //P_ALOLAN_FORMS #if P_GALARIAN_FORMS [SPECIES_MEOWTH_GALARIAN] = { - MEOWTH_MISC_INFO, .baseHP = 50, .baseAttack = 65, .baseDefense = 55, .baseSpeed = 40, .baseSpAttack = 40, .baseSpDefense = 40, - .evYield_Attack = 1, .types = MON_TYPES(TYPE_STEEL), + .catchRate = 255, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 58 : 69, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_PICKUP, ABILITY_TOUGH_CLAWS, ABILITY_UNNERVE }, .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Meowth"), + .cryId = CRY_MEOWTH, + .natDexNum = NATIONAL_DEX_MEOWTH, + .categoryName = _("Scratch Cat"), .height = 4, .weight = 75, .description = COMPOUND_STRING( @@ -4213,17 +5473,24 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(MeowthGalarian, 48, 48), + .frontPic = gMonFrontPic_MeowthGalarian, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_MeowthGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(MeowthGalarian, 64, 56), + .backPic = gMonBackPic_MeowthGalarian, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(MeowthGalarian), - ICON(MeowthGalarian, 0), - LEARNSETS(MeowthGalarian), + .palette = gMonPalette_MeowthGalarian, + .shinyPalette = gMonShinyPalette_MeowthGalarian, + .iconSprite = gMonIcon_MeowthGalarian, + .iconPalIndex = 0, + FOOTPRINT(Meowth) .isGalarianForm = TRUE, + .levelUpLearnset = sMeowthGalarianLevelUpLearnset, + .teachableLearnset = sMeowthGalarianTeachableLearnset, + .formSpeciesIdTable = sMeowthFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_PERRSERKER}), }, @@ -4260,35 +5527,50 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Perrserker, 48, 64), + .frontPic = gMonFrontPic_Perrserker, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Perrserker, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Perrserker, 64, 56), + .backPic = gMonBackPic_Perrserker, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Perrserker), - ICON(Perrserker, 2), + .palette = gMonPalette_Perrserker, + .shinyPalette = gMonShinyPalette_Perrserker, + .iconSprite = gMonIcon_Perrserker, + .iconPalIndex = 2, FOOTPRINT(Perrserker) - LEARNSETS(Perrserker), + .levelUpLearnset = sPerrserkerLevelUpLearnset, + .teachableLearnset = sPerrserkerTeachableLearnset, }, #endif //P_GALARIAN_FORMS #if P_GIGANTAMAX_FORMS [SPECIES_MEOWTH_GIGANTAMAX] = { - MEOWTH_MISC_INFO, .baseHP = 40, .baseAttack = 45, .baseDefense = 35, .baseSpeed = 90, .baseSpAttack = 40, .baseSpDefense = 40, - .evYield_Speed = 1, .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 255, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 58 : 69, + .evYield_Speed = 1, .itemRare = ITEM_QUICK_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_UNNERVE }, .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Meowth"), + .cryId = CRY_MEOWTH, + .natDexNum = NATIONAL_DEX_MEOWTH, + .categoryName = _("Scratch Cat"), .height = 330, .weight = 0, .description = COMPOUND_STRING( @@ -4300,17 +5582,24 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(MeowthGigantamax, 64, 64), + .frontPic = gMonFrontPic_MeowthGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_MeowthGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(MeowthGigantamax, 64, 64), + .backPic = gMonBackPic_MeowthGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(MeowthGigantamax), - ICON(MeowthGigantamax, 1), - LEARNSETS(Meowth), + .palette = gMonPalette_MeowthGigantamax, + .shinyPalette = gMonShinyPalette_MeowthGigantamax, + .iconSprite = gMonIcon_MeowthGigantamax, + .iconPalIndex = 1, + FOOTPRINT(Meowth) .isGigantamax = TRUE, + .levelUpLearnset = sMeowthLevelUpLearnset, + .teachableLearnset = sMeowthTeachableLearnset, + .formSpeciesIdTable = sMeowthFormSpeciesIdTable, .formChangeTable = sMeowthFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS @@ -4351,17 +5640,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Psyduck, 40, 48), + .frontPic = gMonFrontPic_Psyduck, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Psyduck, .frontAnimId = ANIM_V_JUMPS_H_JUMPS, - BACK_PIC(Psyduck, 48, 48), + .backPic = gMonBackPic_Psyduck, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Psyduck), - ICON(Psyduck, 1), + .palette = gMonPalette_Psyduck, + .shinyPalette = gMonShinyPalette_Psyduck, + .iconSprite = gMonIcon_Psyduck, + .iconPalIndex = 1, FOOTPRINT(Psyduck) - LEARNSETS(Psyduck), + .levelUpLearnset = sPsyduckLevelUpLearnset, + .teachableLearnset = sPsyduckTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_GOLDUCK}), }, @@ -4399,17 +5693,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 273, .trainerOffset = 1, - FRONT_PIC(Golduck, 64, 64), + .frontPic = gMonFrontPic_Golduck, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Golduck, .frontAnimId = ANIM_H_SHAKE_SLOW, - BACK_PIC(Golduck, 64, 64), + .backPic = gMonBackPic_Golduck, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Golduck), - ICON(Golduck, 0), + .palette = gMonPalette_Golduck, + .shinyPalette = gMonShinyPalette_Golduck, + .iconSprite = gMonIcon_Golduck, + .iconPalIndex = 0, FOOTPRINT(Golduck) - LEARNSETS(Golduck), + .levelUpLearnset = sGolduckLevelUpLearnset, + .teachableLearnset = sGolduckTeachableLearnset, }, #endif //P_FAMILY_PSYDUCK @@ -4448,18 +5747,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Mankey, 56, 48), + .frontPic = gMonFrontPic_Mankey, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Mankey, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, .frontAnimDelay = 20, - BACK_PIC(Mankey, 64, 48), + .backPic = gMonBackPic_Mankey, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Mankey), - ICON(Mankey, 1), + .palette = gMonPalette_Mankey, + .shinyPalette = gMonShinyPalette_Mankey, + .iconSprite = gMonIcon_Mankey, + .iconPalIndex = 1, FOOTPRINT(Mankey) - LEARNSETS(Mankey), + .levelUpLearnset = sMankeyLevelUpLearnset, + .teachableLearnset = sMankeyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_PRIMEAPE}), }, @@ -4497,17 +5801,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Primeape, 64, 56), + .frontPic = gMonFrontPic_Primeape, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Primeape, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES, - BACK_PIC(Primeape, 64, 48), + .backPic = gMonBackPic_Primeape, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Primeape), - ICON(Primeape, 2), + .palette = gMonPalette_Primeape, + .shinyPalette = gMonShinyPalette_Primeape, + .iconSprite = gMonIcon_Primeape, + .iconPalIndex = 2, FOOTPRINT(Primeape) - LEARNSETS(Primeape), + .levelUpLearnset = sPrimeapeLevelUpLearnset, + .teachableLearnset = sPrimeapeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_MOVE_TWENTY_TIMES, MOVE_RAGE_FIST, SPECIES_ANNIHILAPE}), }, @@ -4546,56 +5855,29 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Annihilape, 64, 64), + .frontPic = gMonFrontPic_Annihilape, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Annihilape, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Annihilape, 64, 64), + .backPic = gMonBackPic_Annihilape, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Annihilape), - ICON(Annihilape, 0), + .palette = gMonPalette_Annihilape, + .shinyPalette = gMonShinyPalette_Annihilape, + .iconSprite = gMonIcon_Annihilape, + .iconPalIndex = 0, //FOOTPRINT(Annihilape) - LEARNSETS(Annihilape), + .levelUpLearnset = sAnnihilapeLevelUpLearnset, + .teachableLearnset = sAnnihilapeTeachableLearnset, }, #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_MANKEY #if P_FAMILY_GROWLITHE -#define GROWLITHE_FAMILY_MISC_INFO \ - .genderRatio = PERCENT_FEMALE(25), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .bodyColor = BODY_COLOR_BROWN - -#define GROWLITHE_MISC_INFO \ - .catchRate = 190, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 70 : 91, \ - .evYield_Attack = 1, \ - .speciesName = _("Growlithe"), \ - .cryId = CRY_GROWLITHE, \ - .natDexNum = NATIONAL_DEX_GROWLITHE, \ - FOOTPRINT(Growlithe) \ - .formSpeciesIdTable = sGrowlitheFormSpeciesIdTable, \ - GROWLITHE_FAMILY_MISC_INFO - -#define ARCANINE_MISC_INFO \ - .catchRate = 75, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 194 : 213, \ - .evYield_Attack = 2, \ - .speciesName = _("Arcanine"), \ - .cryId = CRY_ARCANINE, \ - .natDexNum = NATIONAL_DEX_ARCANINE, \ - .categoryName = _("Legendary"), \ - FOOTPRINT(Arcanine) \ - .formSpeciesIdTable = sArcanineFormSpeciesIdTable, \ - GROWLITHE_FAMILY_MISC_INFO - [SPECIES_GROWLITHE] = { - GROWLITHE_MISC_INFO, .baseHP = 55, .baseAttack = 70, .baseDefense = 45, @@ -4603,7 +5885,19 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 70, .baseSpDefense = 50, .types = MON_TYPES(TYPE_FIRE), + .catchRate = 190, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 70 : 91, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Growlithe"), + .cryId = CRY_GROWLITHE, + .natDexNum = NATIONAL_DEX_GROWLITHE, .categoryName = _("Puppy"), .height = 7, .weight = 190, @@ -4616,23 +5910,29 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Growlithe, 48, 48), + .frontPic = gMonFrontPic_Growlithe, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Growlithe, .frontAnimId = ANIM_V_STRETCH, .frontAnimDelay = 30, - BACK_PIC(Growlithe, 48, 56), + .backPic = gMonBackPic_Growlithe, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Growlithe), - ICON(Growlithe, 3), - LEARNSETS(Growlithe), + .palette = gMonPalette_Growlithe, + .shinyPalette = gMonShinyPalette_Growlithe, + .iconSprite = gMonIcon_Growlithe, + .iconPalIndex = 3, + FOOTPRINT(Growlithe) + .levelUpLearnset = sGrowlitheLevelUpLearnset, + .teachableLearnset = sGrowlitheTeachableLearnset, + .formSpeciesIdTable = sGrowlitheFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}), }, [SPECIES_ARCANINE] = { - ARCANINE_MISC_INFO, .baseHP = 90, .baseAttack = 110, .baseDefense = 80, @@ -4640,7 +5940,20 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 100, .baseSpDefense = 80, .types = MON_TYPES(TYPE_FIRE), + .catchRate = 75, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 194 : 213, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Arcanine"), + .cryId = CRY_ARCANINE, + .natDexNum = NATIONAL_DEX_ARCANINE, + .categoryName = _("Legendary"), .height = 19, .weight = 1550, .description = COMPOUND_STRING( @@ -4652,23 +5965,29 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 312, .trainerOffset = 4, - FRONT_PIC(Arcanine, 64, 64), + .frontPic = gMonFrontPic_Arcanine, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Arcanine, .frontAnimId = ANIM_V_SHAKE, .frontAnimDelay = 8, - BACK_PIC(Arcanine, 64, 56), + .backPic = gMonBackPic_Arcanine, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Arcanine), - ICON(Arcanine, 3), - LEARNSETS(Arcanine), + .palette = gMonPalette_Arcanine, + .shinyPalette = gMonShinyPalette_Arcanine, + .iconSprite = gMonIcon_Arcanine, + .iconPalIndex = 3, + FOOTPRINT(Arcanine) + .levelUpLearnset = sArcanineLevelUpLearnset, + .teachableLearnset = sArcanineTeachableLearnset, + .formSpeciesIdTable = sArcanineFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_GROWLITHE_HISUIAN] = { - GROWLITHE_MISC_INFO, .baseHP = 60, .baseAttack = 75, .baseDefense = 45, @@ -4676,7 +5995,19 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 65, .baseSpDefense = 50, .types = MON_TYPES(TYPE_FIRE, TYPE_ROCK), + .catchRate = 190, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 70 : 91, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_ROCK_HEAD }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Growlithe"), + .cryId = CRY_GROWLITHE, + .natDexNum = NATIONAL_DEX_GROWLITHE, .categoryName = _("Scout"), .height = 8, .weight = 227, @@ -4689,23 +6020,29 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(GrowlitheHisuian, 48, 48), + .frontPic = gMonFrontPic_GrowlitheHisuian, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_GrowlitheHisuian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(GrowlitheHisuian, 56, 56), + .backPic = gMonBackPic_GrowlitheHisuian, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(GrowlitheHisuian), - ICON(GrowlitheHisuian, 0), - LEARNSETS(GrowlitheHisuian), + .palette = gMonPalette_GrowlitheHisuian, + .shinyPalette = gMonShinyPalette_GrowlitheHisuian, + .iconSprite = gMonIcon_GrowlitheHisuian, + .iconPalIndex = 0, + FOOTPRINT(Growlithe) .isHisuianForm = TRUE, + .levelUpLearnset = sGrowlitheHisuianLevelUpLearnset, + .teachableLearnset = sGrowlitheHisuianTeachableLearnset, + .formSpeciesIdTable = sGrowlitheFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE_HISUIAN}), }, [SPECIES_ARCANINE_HISUIAN] = { - ARCANINE_MISC_INFO, .baseHP = 95, .baseAttack = 115, .baseDefense = 80, @@ -4713,7 +6050,20 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 95, .baseSpDefense = 80, .types = MON_TYPES(TYPE_FIRE, TYPE_ROCK), + .catchRate = 75, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 194 : 213, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_ROCK_HEAD }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Arcanine"), + .cryId = CRY_ARCANINE, + .natDexNum = NATIONAL_DEX_ARCANINE, + .categoryName = _("Legendary"), .height = 20, .weight = 1680, .description = COMPOUND_STRING( @@ -4725,17 +6075,24 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 312, .trainerOffset = 4, - FRONT_PIC(ArcanineHisuian, 64, 64), + .frontPic = gMonFrontPic_ArcanineHisuian, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_ArcanineHisuian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ArcanineHisuian, 64, 64), + .backPic = gMonBackPic_ArcanineHisuian, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ArcanineHisuian), - ICON(ArcanineHisuian, 0), - LEARNSETS(ArcanineHisuian), + .palette = gMonPalette_ArcanineHisuian, + .shinyPalette = gMonShinyPalette_ArcanineHisuian, + .iconSprite = gMonIcon_ArcanineHisuian, + .iconPalIndex = 0, + FOOTPRINT(Arcanine) .isHisuianForm = TRUE, + .levelUpLearnset = sArcanineHisuianLevelUpLearnset, + .teachableLearnset = sArcanineHisuianTeachableLearnset, + .formSpeciesIdTable = sArcanineFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_GROWLITHE @@ -4776,17 +6133,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Poliwag, 64, 40), + .frontPic = gMonFrontPic_Poliwag, + .frontPicSize = MON_COORDS_SIZE(64, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Poliwag, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Poliwag, 48, 32), + .backPic = gMonBackPic_Poliwag, + .backPicSize = MON_COORDS_SIZE(48, 32), .backPicYOffset = 18, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Poliwag), - ICON(Poliwag, 0), + .palette = gMonPalette_Poliwag, + .shinyPalette = gMonShinyPalette_Poliwag, + .iconSprite = gMonIcon_Poliwag, + .iconPalIndex = 0, FOOTPRINT(Poliwag) - LEARNSETS(Poliwag), + .levelUpLearnset = sPoliwagLevelUpLearnset, + .teachableLearnset = sPoliwagTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_POLIWHIRL}), }, @@ -4826,18 +6188,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 11, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Poliwhirl, 64, 48), + .frontPic = gMonFrontPic_Poliwhirl, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Poliwhirl, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, .frontAnimDelay = 5, - BACK_PIC(Poliwhirl, 64, 40), + .backPic = gMonBackPic_Poliwhirl, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Poliwhirl), - ICON(Poliwhirl, 0), + .palette = gMonPalette_Poliwhirl, + .shinyPalette = gMonShinyPalette_Poliwhirl, + .iconSprite = gMonIcon_Poliwhirl, + .iconPalIndex = 0, FOOTPRINT(Poliwhirl) - LEARNSETS(Poliwhirl), + .levelUpLearnset = sPoliwhirlLevelUpLearnset, + .teachableLearnset = sPoliwhirlTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}, {EVO_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}), @@ -4887,17 +6254,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 6, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Poliwrath, 64, 56), + .frontPic = gMonFrontPic_Poliwrath, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Poliwrath, .frontAnimId = ANIM_V_SHAKE_TWICE, - BACK_PIC(Poliwrath, 64, 56), + .backPic = gMonBackPic_Poliwrath, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Poliwrath), - ICON(Poliwrath, 0), + .palette = gMonPalette_Poliwrath, + .shinyPalette = gMonShinyPalette_Poliwrath, + .iconSprite = gMonIcon_Poliwrath, + .iconPalIndex = 0, FOOTPRINT(Poliwrath) - LEARNSETS(Poliwrath), + .levelUpLearnset = sPoliwrathLevelUpLearnset, + .teachableLearnset = sPoliwrathTeachableLearnset, }, #if P_GEN_2_CROSS_EVOS @@ -4943,20 +6315,27 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 6, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Politoed, 48, 56), - FRONT_PIC_FEMALE(Politoed, 48, 56), + .frontPic = gMonFrontPic_Politoed, + .frontPicFemale = gMonFrontPic_PolitoedF, + .frontPicSize = MON_COORDS_SIZE(48, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Politoed, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, .frontAnimDelay = 40, - BACK_PIC(Politoed, 56, 56), - BACK_PIC_FEMALE(Politoed, 56, 56), + .backPic = gMonBackPic_Politoed, + .backPicFemale = gMonBackPic_PolitoedF, + .backPicSize = MON_COORDS_SIZE(56, 56), + .backPicSizeFemale = MON_COORDS_SIZE(56, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Politoed), - ICON(Politoed, 1), + .palette = gMonPalette_Politoed, + .shinyPalette = gMonShinyPalette_Politoed, + .iconSprite = gMonIcon_Politoed, + .iconPalIndex = 1, FOOTPRINT(Politoed) - LEARNSETS(Politoed), + .levelUpLearnset = sPolitoedLevelUpLearnset, + .teachableLearnset = sPolitoedTeachableLearnset, }, #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_POLIWAG @@ -5003,17 +6382,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Abra, 56, 48), + .frontPic = gMonFrontPic_Abra, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Abra, .frontAnimId = ANIM_H_VIBRATE, - BACK_PIC(Abra, 56, 48), + .backPic = gMonBackPic_Abra, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 12, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Abra), - ICON(Abra, 2), + .palette = gMonPalette_Abra, + .shinyPalette = gMonShinyPalette_Abra, + .iconSprite = gMonIcon_Abra, + .iconPalIndex = 2, FOOTPRINT(Abra) - LEARNSETS(Abra), + .levelUpLearnset = sAbraLevelUpLearnset, + .teachableLearnset = sAbraTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_KADABRA}), }, @@ -5053,53 +6437,42 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Kadabra, 64, 56), - FRONT_PIC_FEMALE(Kadabra, 64, 56), + .frontPic = gMonFrontPic_Kadabra, + .frontPicFemale = gMonFrontPic_KadabraF, + .frontPicSize = MON_COORDS_SIZE(64, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Kadabra, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Kadabra, 64, 48), - BACK_PIC_FEMALE(Kadabra, 64, 48), + .backPic = gMonBackPic_Kadabra, + .backPicFemale = gMonBackPic_KadabraF, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicSizeFemale = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Kadabra), - ICON(Kadabra, 2), + .palette = gMonPalette_Kadabra, + .shinyPalette = gMonShinyPalette_Kadabra, + .iconSprite = gMonIcon_Kadabra, + .iconPalIndex = 2, FOOTPRINT(Kadabra) - LEARNSETS(Kadabra), + .levelUpLearnset = sKadabraLevelUpLearnset, + .teachableLearnset = sKadabraTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_ALAKAZAM}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_ALAKAZAM}), }, #define ALAKAZAM_SP_DEF (P_UPDATED_STATS >= GEN_6 ? 95 : 85) -#define ALAKAZAM_MISC_INFO \ - .types = MON_TYPES(TYPE_PSYCHIC), \ - .catchRate = 50, \ - .evYield_SpAttack = 3, \ - .itemRare = ITEM_TWISTED_SPOON, \ - .genderRatio = PERCENT_FEMALE(25), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), \ - .bodyColor = BODY_COLOR_BROWN, \ - .speciesName = _("Alakazam"), \ - .natDexNum = NATIONAL_DEX_ALAKAZAM, \ - .categoryName = _("Psi"), \ - FOOTPRINT(Alakazam) \ - LEARNSETS(Alakazam), \ - .formSpeciesIdTable = sAlakazamFormSpeciesIdTable, \ - .formChangeTable = sAlakazamFormChangeTable - [SPECIES_ALAKAZAM] = { - ALAKAZAM_MISC_INFO, .baseHP = 55, .baseAttack = 50, .baseDefense = 45, .baseSpeed = 120, .baseSpAttack = 135, .baseSpDefense = ALAKAZAM_SP_DEF, + .types = MON_TYPES(TYPE_PSYCHIC), + .catchRate = 50, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 250, #elif P_UPDATED_EXP_YIELDS >= GEN_7 @@ -5109,8 +6482,19 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #else .expYield = 186, #endif + .evYield_SpAttack = 3, + .itemRare = ITEM_TWISTED_SPOON, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), .abilities = { ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS, ABILITY_MAGIC_GUARD }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Alakazam"), .cryId = CRY_ALAKAZAM, + .natDexNum = NATIONAL_DEX_ALAKAZAM, + .categoryName = _("Psi"), .height = 15, .weight = 480, .description = COMPOUND_STRING( @@ -5122,32 +6506,55 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Alakazam, 64, 64), - FRONT_PIC_FEMALE(Alakazam, 64, 64), + .frontPic = gMonFrontPic_Alakazam, + .frontPicFemale = gMonFrontPic_AlakazamF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Alakazam, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Alakazam, 64, 56), - BACK_PIC_FEMALE(Alakazam, 64, 56), + .backPic = gMonBackPic_Alakazam, + .backPicFemale = gMonBackPic_AlakazamF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(Alakazam), - ICON(Alakazam, 2), + .palette = gMonPalette_Alakazam, + .shinyPalette = gMonShinyPalette_Alakazam, + .iconSprite = gMonIcon_Alakazam, + .iconPalIndex = 2, + FOOTPRINT(Alakazam) + .levelUpLearnset = sAlakazamLevelUpLearnset, + .teachableLearnset = sAlakazamTeachableLearnset, + .formSpeciesIdTable = sAlakazamFormSpeciesIdTable, + .formChangeTable = sAlakazamFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_ALAKAZAM_MEGA] = { - ALAKAZAM_MISC_INFO, .baseHP = 55, .baseAttack = 50, .baseDefense = 65, .baseSpeed = 150, .baseSpAttack = 175, .baseSpDefense = ALAKAZAM_SP_DEF + 10, + .types = MON_TYPES(TYPE_PSYCHIC), + .catchRate = 50, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, + .evYield_SpAttack = 3, + .itemRare = ITEM_TWISTED_SPOON, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), .abilities = { ABILITY_TRACE, ABILITY_TRACE, ABILITY_TRACE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Alakazam"), .cryId = CRY_ALAKAZAM_MEGA, + .natDexNum = NATIONAL_DEX_ALAKAZAM, + .categoryName = _("Psi"), .height = 12, .weight = 480, .description = COMPOUND_STRING( @@ -5158,17 +6565,26 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(AlakazamMega, 64, 64), + .frontPic = gMonFrontPic_AlakazamMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_AlakazamMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 7, - BACK_PIC(AlakazamMega, 64, 64), + .backPic = gMonBackPic_AlakazamMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(AlakazamMega), - ICON(AlakazamMega, 2), + .palette = gMonPalette_AlakazamMega, + .shinyPalette = gMonShinyPalette_AlakazamMega, + .iconSprite = gMonIcon_AlakazamMega, + .iconPalIndex = 2, + FOOTPRINT(Alakazam) .isMegaEvolution = TRUE, + .levelUpLearnset = sAlakazamLevelUpLearnset, + .teachableLearnset = sAlakazamTeachableLearnset, + .formSpeciesIdTable = sAlakazamFormSpeciesIdTable, + .formChangeTable = sAlakazamFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_ABRA @@ -5215,17 +6631,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Machop, 48, 48), + .frontPic = gMonFrontPic_Machop, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Machop, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Machop, 48, 56), + .backPic = gMonBackPic_Machop, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Machop), - ICON(Machop, 0), + .palette = gMonPalette_Machop, + .shinyPalette = gMonShinyPalette_Machop, + .iconSprite = gMonIcon_Machop, + .iconPalIndex = 0, FOOTPRINT(Machop) - LEARNSETS(Machop), + .levelUpLearnset = sMachopLevelUpLearnset, + .teachableLearnset = sMachopTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_MACHOKE}), }, @@ -5265,17 +6686,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 9, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Machoke, 56, 56), + .frontPic = gMonFrontPic_Machoke, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Machoke, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Machoke, 64, 48), + .backPic = gMonBackPic_Machoke, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Machoke), - ICON(Machoke, 2), + .palette = gMonPalette_Machoke, + .shinyPalette = gMonShinyPalette_Machoke, + .iconSprite = gMonIcon_Machoke, + .iconPalIndex = 2, FOOTPRINT(Machoke) - LEARNSETS(Machoke), + .levelUpLearnset = sMachokeLevelUpLearnset, + .teachableLearnset = sMachokeTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_MACHAMP}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_MACHAMP}), }, @@ -5288,37 +6714,30 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #define MACHAMP_EXP_YIELD 193 #endif -#define MACHAMP_MISC_INFO \ - .baseHP = 90, \ - .baseAttack = 130, \ - .baseDefense = 80, \ - .baseSpeed = 55, \ - .baseSpAttack = 65, \ - .baseSpDefense = 85, \ - .types = MON_TYPES(TYPE_FIGHTING), \ - .catchRate = 45, \ - .expYield = MACHAMP_EXP_YIELD, \ - .evYield_Attack = 3, \ - .itemRare = ITEM_FOCUS_BAND, \ - .genderRatio = PERCENT_FEMALE(25), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), \ - .abilities = { ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST }, \ - .bodyColor = BODY_COLOR_GRAY, \ - .speciesName = _("Machamp"), \ - .cryId = CRY_MACHAMP, \ - .natDexNum = NATIONAL_DEX_MACHAMP, \ - .categoryName = _("Superpower"), \ - FOOTPRINT(Machamp) \ - LEARNSETS(Machamp), \ - .formSpeciesIdTable = sMachampFormSpeciesIdTable, \ - .formChangeTable = sMachampFormChangeTable - [SPECIES_MACHAMP] = { - MACHAMP_MISC_INFO, + .baseHP = 90, + .baseAttack = 130, + .baseDefense = 80, + .baseSpeed = 55, + .baseSpAttack = 65, + .baseSpDefense = 85, + .types = MON_TYPES(TYPE_FIGHTING), + .catchRate = 45, + .expYield = MACHAMP_EXP_YIELD, + .evYield_Attack = 3, + .itemRare = ITEM_FOCUS_BAND, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + .abilities = { ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Machamp"), + .cryId = CRY_MACHAMP, + .natDexNum = NATIONAL_DEX_MACHAMP, + .categoryName = _("Superpower"), .height = 16, .weight = 1300, .description = COMPOUND_STRING( @@ -5330,21 +6749,51 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 269, .trainerOffset = -1, - FRONT_PIC(Machamp, 64, 64), + .frontPic = gMonFrontPic_Machamp, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Machamp, .frontAnimId = ANIM_H_JUMPS, - BACK_PIC(Machamp, 64, 56), + .backPic = gMonBackPic_Machamp, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Machamp), - ICON(Machamp, 0), + .palette = gMonPalette_Machamp, + .shinyPalette = gMonShinyPalette_Machamp, + .iconSprite = gMonIcon_Machamp, + .iconPalIndex = 0, + FOOTPRINT(Machamp) + .levelUpLearnset = sMachampLevelUpLearnset, + .teachableLearnset = sMachampTeachableLearnset, + .formSpeciesIdTable = sMachampFormSpeciesIdTable, + .formChangeTable = sMachampFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_MACHAMP_GIGANTAMAX] = { - MACHAMP_MISC_INFO, + .baseHP = 90, + .baseAttack = 130, + .baseDefense = 80, + .baseSpeed = 55, + .baseSpAttack = 65, + .baseSpDefense = 85, + .types = MON_TYPES(TYPE_FIGHTING), + .catchRate = 45, + .expYield = MACHAMP_EXP_YIELD, + .evYield_Attack = 3, + .itemRare = ITEM_FOCUS_BAND, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + .abilities = { ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Machamp"), + .cryId = CRY_MACHAMP, + .natDexNum = NATIONAL_DEX_MACHAMP, + .categoryName = _("Superpower"), .height = 250, .weight = 0, .description = COMPOUND_STRING( @@ -5356,16 +6805,25 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 269, .trainerOffset = -1, - FRONT_PIC(MachampGigantamax, 64, 64), + .frontPic = gMonFrontPic_MachampGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_MachampGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(MachampGigantamax, 64, 64), + .backPic = gMonBackPic_MachampGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(MachampGigantamax), - ICON(MachampGigantamax, 0), + .palette = gMonPalette_MachampGigantamax, + .shinyPalette = gMonShinyPalette_MachampGigantamax, + .iconSprite = gMonIcon_MachampGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Machamp) .isGigantamax = TRUE, + .levelUpLearnset = sMachampLevelUpLearnset, + .teachableLearnset = sMachampTeachableLearnset, + .formSpeciesIdTable = sMachampFormSpeciesIdTable, + .formChangeTable = sMachampFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_MACHOP @@ -5405,17 +6863,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Bellsprout, 40, 40), + .frontPic = gMonFrontPic_Bellsprout, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Bellsprout, .frontAnimId = ANIM_H_JUMPS, - BACK_PIC(Bellsprout, 40, 48), + .backPic = gMonBackPic_Bellsprout, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Bellsprout), - ICON(Bellsprout, 1), + .palette = gMonPalette_Bellsprout, + .shinyPalette = gMonShinyPalette_Bellsprout, + .iconSprite = gMonIcon_Bellsprout, + .iconPalIndex = 1, FOOTPRINT(Bellsprout) - LEARNSETS(Bellsprout), + .levelUpLearnset = sBellsproutLevelUpLearnset, + .teachableLearnset = sBellsproutTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 21, SPECIES_WEEPINBELL}), }, @@ -5453,18 +6916,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Weepinbell, 56, 48), + .frontPic = gMonFrontPic_Weepinbell, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Weepinbell, .frontAnimId = ANIM_SWING_CONVEX, .frontAnimDelay = 3, - BACK_PIC(Weepinbell, 64, 48), + .backPic = gMonBackPic_Weepinbell, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Weepinbell), - ICON(Weepinbell, 1), + .palette = gMonPalette_Weepinbell, + .shinyPalette = gMonShinyPalette_Weepinbell, + .iconSprite = gMonIcon_Weepinbell, + .iconPalIndex = 1, FOOTPRINT(Weepinbell) - LEARNSETS(Weepinbell), + .levelUpLearnset = sWeepinbellLevelUpLearnset, + .teachableLearnset = sWeepinbellTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}), }, @@ -5510,17 +6978,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 312, .trainerOffset = 3, - FRONT_PIC(Victreebel, 64, 56), + .frontPic = gMonFrontPic_Victreebel, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Victreebel, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(Victreebel, 64, 56), + .backPic = gMonBackPic_Victreebel, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Victreebel), - ICON(Victreebel, 1), + .palette = gMonPalette_Victreebel, + .shinyPalette = gMonShinyPalette_Victreebel, + .iconSprite = gMonIcon_Victreebel, + .iconPalIndex = 1, FOOTPRINT(Victreebel) - LEARNSETS(Victreebel), + .levelUpLearnset = sVictreebelLevelUpLearnset, + .teachableLearnset = sVictreebelTeachableLearnset, }, #endif //P_FAMILY_BELLSPROUT @@ -5560,17 +7033,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Tentacool, 48, 56), + .frontPic = gMonFrontPic_Tentacool, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Tentacool, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Tentacool, 64, 48), + .backPic = gMonBackPic_Tentacool, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Tentacool), - ICON(Tentacool, 0), + .palette = gMonPalette_Tentacool, + .shinyPalette = gMonShinyPalette_Tentacool, + .iconSprite = gMonIcon_Tentacool, + .iconPalIndex = 0, FOOTPRINT(Tentacool) - LEARNSETS(Tentacool), + .levelUpLearnset = sTentacoolLevelUpLearnset, + .teachableLearnset = sTentacoolTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_TENTACRUEL}), }, @@ -5609,33 +7087,26 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 312, .trainerOffset = 1, - FRONT_PIC(Tentacruel, 64, 56), + .frontPic = gMonFrontPic_Tentacruel, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Tentacruel, .frontAnimId = ANIM_V_SLIDE_WOBBLE, - BACK_PIC(Tentacruel, 64, 48), + .backPic = gMonBackPic_Tentacruel, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Tentacruel), - ICON(Tentacruel, 0), + .palette = gMonPalette_Tentacruel, + .shinyPalette = gMonShinyPalette_Tentacruel, + .iconSprite = gMonIcon_Tentacruel, + .iconPalIndex = 0, FOOTPRINT(Tentacruel) - LEARNSETS(Tentacruel), + .levelUpLearnset = sTentacruelLevelUpLearnset, + .teachableLearnset = sTentacruelTeachableLearnset, }, #endif //P_FAMILY_TENTACOOL #if P_FAMILY_GEODUDE -#define KANTONIAN_GEODUDE_FAMILY_INFO \ - .types = MON_TYPES(TYPE_ROCK, TYPE_GROUND), \ - .itemRare = ITEM_EVERSTONE, \ - .abilities = { ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SAND_VEIL } - -#define GEODUDE_FAMILY_MISC_INFO \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), \ - .bodyColor = BODY_COLOR_BROWN #if P_UPDATED_EXP_YIELDS >= GEN_5 #define GEODUDE_EXP_YIELD 60 @@ -5645,52 +7116,6 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #define GEODUDE_EXP_YIELD 86 #endif -#define GEODUDE_MISC_INFO \ - .baseHP = 40, \ - .baseAttack = 80, \ - .baseDefense = 100, \ - .baseSpeed = 20, \ - .baseSpAttack = 30, \ - .baseSpDefense = 30, \ - .catchRate = 255, \ - .expYield = GEODUDE_EXP_YIELD, \ - .evYield_Defense = 1, \ - .speciesName = _("Geodude"), \ - .cryId = CRY_GEODUDE, \ - .natDexNum = NATIONAL_DEX_GEODUDE, \ - .categoryName = _("Rock"), \ - .height = 4, \ - .pokemonScale = 347, \ - .pokemonOffset = 18, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Geodude) \ - .formSpeciesIdTable = sGeodudeFormSpeciesIdTable, \ - GEODUDE_FAMILY_MISC_INFO - -#define GRAVELER_MISC_INFO \ - .baseHP = 55, \ - .baseAttack = 95, \ - .baseDefense = 115, \ - .baseSpeed = 35, \ - .baseSpAttack = 45, \ - .baseSpDefense = 45, \ - .catchRate = 120, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 137 : 134, \ - .evYield_Defense = 2, \ - .speciesName = _("Graveler"), \ - .cryId = CRY_GRAVELER, \ - .natDexNum = NATIONAL_DEX_GRAVELER, \ - .categoryName = _("Rock"), \ - .height = 10, \ - .pokemonScale = 256, \ - .pokemonOffset = 2, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Graveler) \ - .formSpeciesIdTable = sGravelerFormSpeciesIdTable, \ - GEODUDE_FAMILY_MISC_INFO - #define GOLEM_ATTACK (P_UPDATED_STATS >= GEN_6 ? 120 : 110) #if P_UPDATED_EXP_YIELDS >= GEN_8 @@ -5703,76 +7128,142 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #define GOLEM_EXP_YIELD 177 #endif -#define GOLEM_MISC_INFO \ - .baseHP = 80, \ - .baseAttack = GOLEM_ATTACK, \ - .baseDefense = 130, \ - .baseSpeed = 45, \ - .baseSpAttack = 55, \ - .baseSpDefense = 65, \ - .catchRate = 45, \ - .expYield = GOLEM_EXP_YIELD, \ - .evYield_Defense = 3, \ - .speciesName = _("Golem"), \ - .cryId = CRY_GOLEM, \ - .natDexNum = NATIONAL_DEX_GOLEM, \ - .categoryName = _("Megaton"), \ - FOOTPRINT(Golem) \ - .formSpeciesIdTable = sGolemFormSpeciesIdTable, \ - GEODUDE_FAMILY_MISC_INFO - [SPECIES_GEODUDE] = { - KANTONIAN_GEODUDE_FAMILY_INFO, - GEODUDE_MISC_INFO, + .baseHP = 40, + .baseAttack = 80, + .baseDefense = 100, + .baseSpeed = 20, + .baseSpAttack = 30, + .baseSpDefense = 30, + .types = MON_TYPES(TYPE_ROCK, TYPE_GROUND), + .catchRate = 255, + .expYield = GEODUDE_EXP_YIELD, + .evYield_Defense = 1, + .itemRare = ITEM_EVERSTONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + .abilities = { ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SAND_VEIL }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Geodude"), + .cryId = CRY_GEODUDE, + .natDexNum = NATIONAL_DEX_GEODUDE, + .categoryName = _("Rock"), + .height = 4, .weight = 200, .description = COMPOUND_STRING( "It climbs mountain paths using only the\n" "power of its arms. Because they look just\n" "like boulders lining paths, hikers may step\n" "on them without noticing."), - FRONT_PIC(Geodude, 64, 32), + .pokemonScale = 347, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Geodude, + .frontPicSize = MON_COORDS_SIZE(64, 32), .frontPicYOffset = 19, .frontAnimFrames = sAnims_Geodude, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, .enemyMonElevation = 10, - BACK_PIC(Geodude, 64, 48), + .backPic = gMonBackPic_Geodude, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Geodude), - ICON(Geodude, 1), - LEARNSETS(Geodude), + .palette = gMonPalette_Geodude, + .shinyPalette = gMonShinyPalette_Geodude, + .iconSprite = gMonIcon_Geodude, + .iconPalIndex = 1, + FOOTPRINT(Geodude) + .levelUpLearnset = sGeodudeLevelUpLearnset, + .teachableLearnset = sGeodudeTeachableLearnset, + .formSpeciesIdTable = sGeodudeFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_GRAVELER}), }, [SPECIES_GRAVELER] = { - KANTONIAN_GEODUDE_FAMILY_INFO, - GRAVELER_MISC_INFO, + .baseHP = 55, + .baseAttack = 95, + .baseDefense = 115, + .baseSpeed = 35, + .baseSpAttack = 45, + .baseSpDefense = 45, + .types = MON_TYPES(TYPE_ROCK, TYPE_GROUND), + .catchRate = 120, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 137 : 134, + .evYield_Defense = 2, + .itemRare = ITEM_EVERSTONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + .abilities = { ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SAND_VEIL }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Graveler"), + .cryId = CRY_GRAVELER, + .natDexNum = NATIONAL_DEX_GRAVELER, + .categoryName = _("Rock"), + .height = 10, .weight = 1050, .description = COMPOUND_STRING( "They descend from mountains by tumbling\n" "down steep slopes. They are so brutal,\n" "they smash aside obstructing trees and\n" "massive boulders with thunderous tackles."), - FRONT_PIC(Graveler, 64, 48), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Graveler, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Graveler, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Graveler, 64, 48), + .backPic = gMonBackPic_Graveler, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Graveler), - ICON(Graveler, 1), - LEARNSETS(Graveler), + .palette = gMonPalette_Graveler, + .shinyPalette = gMonShinyPalette_Graveler, + .iconSprite = gMonIcon_Graveler, + .iconPalIndex = 1, + FOOTPRINT(Graveler) + .levelUpLearnset = sGravelerLevelUpLearnset, + .teachableLearnset = sGravelerTeachableLearnset, + .formSpeciesIdTable = sGravelerFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOLEM}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOLEM}), }, [SPECIES_GOLEM] = { - KANTONIAN_GEODUDE_FAMILY_INFO, - GOLEM_MISC_INFO, + .baseHP = 80, + .baseAttack = GOLEM_ATTACK, + .baseDefense = 130, + .baseSpeed = 45, + .baseSpAttack = 55, + .baseSpDefense = 65, + .types = MON_TYPES(TYPE_ROCK, TYPE_GROUND), + .catchRate = 45, + .expYield = GOLEM_EXP_YIELD, + .evYield_Defense = 3, + .itemRare = ITEM_EVERSTONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + .abilities = { ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SAND_VEIL }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Golem"), + .cryId = CRY_GOLEM, + .natDexNum = NATIONAL_DEX_GOLEM, + .categoryName = _("Megaton"), .height = 14, .weight = 3000, .description = COMPOUND_STRING( @@ -5784,79 +7275,164 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 3, .trainerScale = 296, .trainerOffset = 2, - FRONT_PIC(Golem, 64, 56), + .frontPic = gMonFrontPic_Golem, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Golem, .frontAnimId = ANIM_ROTATE_UP_SLAM_DOWN, - BACK_PIC(Golem, 64, 48), + .backPic = gMonBackPic_Golem, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Golem), - ICON(Golem, 2), - LEARNSETS(Golem), + .palette = gMonPalette_Golem, + .shinyPalette = gMonShinyPalette_Golem, + .iconSprite = gMonIcon_Golem, + .iconPalIndex = 2, + FOOTPRINT(Golem) + .levelUpLearnset = sGolemLevelUpLearnset, + .teachableLearnset = sGolemTeachableLearnset, + .formSpeciesIdTable = sGolemFormSpeciesIdTable, }, #if P_ALOLAN_FORMS -#define ALOLAN_GEODUDE_FAMILY_INFO \ - .types = MON_TYPES(TYPE_ROCK, TYPE_ELECTRIC), \ - .abilities = { ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE },\ - .isAlolanForm = TRUE - [SPECIES_GEODUDE_ALOLAN] = { - ALOLAN_GEODUDE_FAMILY_INFO, - GEODUDE_MISC_INFO, + .baseHP = 40, + .baseAttack = 80, + .baseDefense = 100, + .baseSpeed = 20, + .baseSpAttack = 30, + .baseSpDefense = 30, + .types = MON_TYPES(TYPE_ROCK, TYPE_ELECTRIC), + .catchRate = 255, + .expYield = GEODUDE_EXP_YIELD, + .evYield_Defense = 1, .itemRare = ITEM_CELL_BATTERY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + .abilities = { ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Geodude"), + .cryId = CRY_GEODUDE, + .natDexNum = NATIONAL_DEX_GEODUDE, + .categoryName = _("Rock"), + .height = 4, .weight = 203, .description = COMPOUND_STRING( "Its body is a magnetic stone. Iron sand\n" "attach to parts of its body with stronger\n" "magnetism. If you carelessly step on one,\n" "it will headbutt and shock you in anger."), - FRONT_PIC(GeodudeAlolan, 48, 32), + .pokemonScale = 347, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_GeodudeAlolan, + .frontPicSize = MON_COORDS_SIZE(48, 32), .frontPicYOffset = 17, .frontAnimFrames = sAnims_GeodudeAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 16, - BACK_PIC(GeodudeAlolan, 64, 56), + .backPic = gMonBackPic_GeodudeAlolan, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, - PALETTES(GeodudeAlolan), - ICON(GeodudeAlolan, 2), - LEARNSETS(GeodudeAlolan), + .palette = gMonPalette_GeodudeAlolan, + .shinyPalette = gMonShinyPalette_GeodudeAlolan, + .iconSprite = gMonIcon_GeodudeAlolan, + .iconPalIndex = 2, + FOOTPRINT(Geodude) + .isAlolanForm = TRUE, + .levelUpLearnset = sGeodudeAlolanLevelUpLearnset, + .teachableLearnset = sGeodudeAlolanTeachableLearnset, + .formSpeciesIdTable = sGeodudeFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_GRAVELER_ALOLAN}), }, [SPECIES_GRAVELER_ALOLAN] = { - ALOLAN_GEODUDE_FAMILY_INFO, - GRAVELER_MISC_INFO, + .baseHP = 55, + .baseAttack = 95, + .baseDefense = 115, + .baseSpeed = 35, + .baseSpAttack = 45, + .baseSpDefense = 45, + .types = MON_TYPES(TYPE_ROCK, TYPE_ELECTRIC), + .catchRate = 120, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 137 : 134, + .evYield_Defense = 2, .itemRare = ITEM_CELL_BATTERY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + .abilities = { ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Graveler"), + .cryId = CRY_GRAVELER, + .natDexNum = NATIONAL_DEX_GRAVELER, + .categoryName = _("Rock"), + .height = 10, .weight = 1100, .description = COMPOUND_STRING( "When two Graveler smash each other over\n" "dravite, their favorite food, they cause\n" "flashes of light and booming noises.\n" "People call them “fireworks of the earth.”"), - FRONT_PIC(GravelerAlolan, 64, 56), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_GravelerAlolan, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_GravelerAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(GravelerAlolan, 64, 48), + .backPic = gMonBackPic_GravelerAlolan, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, //.backAnimId = BACK_ANIM_NONE, - PALETTES(GravelerAlolan), - ICON(GravelerAlolan, 2), - LEARNSETS(GravelerAlolan), + .palette = gMonPalette_GravelerAlolan, + .shinyPalette = gMonShinyPalette_GravelerAlolan, + .iconSprite = gMonIcon_GravelerAlolan, + .iconPalIndex = 2, + FOOTPRINT(Graveler) + .isAlolanForm = TRUE, + .levelUpLearnset = sGravelerAlolanLevelUpLearnset, + .teachableLearnset = sGravelerAlolanTeachableLearnset, + .formSpeciesIdTable = sGravelerFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOLEM_ALOLAN}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOLEM_ALOLAN}), }, [SPECIES_GOLEM_ALOLAN] = { - ALOLAN_GEODUDE_FAMILY_INFO, - GOLEM_MISC_INFO, + .baseHP = 80, + .baseAttack = GOLEM_ATTACK, + .baseDefense = 130, + .baseSpeed = 45, + .baseSpAttack = 55, + .baseSpDefense = 65, + .types = MON_TYPES(TYPE_ROCK, TYPE_ELECTRIC), + .catchRate = 45, + .expYield = GOLEM_EXP_YIELD, + .evYield_Defense = 3, .itemCommon = ITEM_CELL_BATTERY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + .abilities = { ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Golem"), + .cryId = CRY_GOLEM, + .natDexNum = NATIONAL_DEX_GOLEM, + .categoryName = _("Megaton"), .height = 17, .weight = 3160, .description = COMPOUND_STRING( @@ -5868,76 +7444,51 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 3, .trainerScale = 296, .trainerOffset = 2, - FRONT_PIC(GolemAlolan, 56, 64), + .frontPic = gMonFrontPic_GolemAlolan, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_GolemAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(GolemAlolan, 64, 48), + .backPic = gMonBackPic_GolemAlolan, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, - PALETTES(GolemAlolan), - ICON(GolemAlolan, 2), - LEARNSETS(GolemAlolan), + .palette = gMonPalette_GolemAlolan, + .shinyPalette = gMonShinyPalette_GolemAlolan, + .iconSprite = gMonIcon_GolemAlolan, + .iconPalIndex = 2, + FOOTPRINT(Golem) + .isAlolanForm = TRUE, + .levelUpLearnset = sGolemAlolanLevelUpLearnset, + .teachableLearnset = sGolemAlolanTeachableLearnset, + .formSpeciesIdTable = sGolemFormSpeciesIdTable, }, #endif //P_ALOLAN_FORMS #endif //P_FAMILY_GEODUDE #if P_FAMILY_PONYTA -#define KANTONIAN_PONYTA_FAMILY_INFO \ - .types = MON_TYPES(TYPE_FIRE), \ - .abilities = { ABILITY_RUN_AWAY, ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY }, \ - .bodyColor = BODY_COLOR_YELLOW - -#define PONYTA_FAMILY_MISC_INFO \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD) - -#define PONYTA_MISC_INFO \ - .baseHP = 50, \ - .baseAttack = 85, \ - .baseDefense = 55, \ - .baseSpeed = 90, \ - .baseSpAttack = 65, \ - .baseSpDefense = 65, \ - .catchRate = 190, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 82 : 152, \ - .evYield_Speed = 1, \ - .speciesName = _("Ponyta"), \ - .cryId = CRY_PONYTA, \ - .natDexNum = NATIONAL_DEX_PONYTA, \ - FOOTPRINT(Ponyta) \ - .formSpeciesIdTable = sPonytaFormSpeciesIdTable, \ - PONYTA_FAMILY_MISC_INFO - -#define RAPIDASH_MISC_INFO \ - .baseHP = 65, \ - .baseAttack = 100, \ - .baseDefense = 70, \ - .baseSpeed = 105, \ - .baseSpAttack = 80, \ - .baseSpDefense = 80, \ - .catchRate = 60, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 175 : 192, \ - .evYield_Speed = 2, \ - .speciesName = _("Rapidash"), \ - .cryId = CRY_RAPIDASH, \ - .natDexNum = NATIONAL_DEX_RAPIDASH, \ - .height = 17, \ - .pokemonScale = 256, \ - .pokemonOffset = 0, \ - .trainerScale = 289, \ - .trainerOffset = 1, \ - FOOTPRINT(Rapidash) \ - .formSpeciesIdTable = sRapidashFormSpeciesIdTable, \ - PONYTA_FAMILY_MISC_INFO - [SPECIES_PONYTA] = { - KANTONIAN_PONYTA_FAMILY_INFO, - PONYTA_MISC_INFO, + .baseHP = 50, + .baseAttack = 85, + .baseDefense = 55, + .baseSpeed = 90, + .baseSpAttack = 65, + .baseSpDefense = 65, + .types = MON_TYPES(TYPE_FIRE), + .catchRate = 190, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 82 : 152, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_RUN_AWAY, ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Ponyta"), + .cryId = CRY_PONYTA, + .natDexNum = NATIONAL_DEX_PONYTA, .categoryName = _("Fire Horse"), .height = 10, .weight = 300, @@ -5950,54 +7501,103 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Ponyta, 56, 56), + .frontPic = gMonFrontPic_Ponyta, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Ponyta, .frontAnimId = ANIM_V_SHAKE, .frontAnimDelay = 10, - BACK_PIC(Ponyta, 64, 56), + .backPic = gMonBackPic_Ponyta, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Ponyta), - ICON(Ponyta, 3), - LEARNSETS(Ponyta), + .palette = gMonPalette_Ponyta, + .shinyPalette = gMonShinyPalette_Ponyta, + .iconSprite = gMonIcon_Ponyta, + .iconPalIndex = 3, + FOOTPRINT(Ponyta) + .levelUpLearnset = sPonytaLevelUpLearnset, + .teachableLearnset = sPonytaTeachableLearnset, + .formSpeciesIdTable = sPonytaFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_RAPIDASH}), }, [SPECIES_RAPIDASH] = { - KANTONIAN_PONYTA_FAMILY_INFO, - RAPIDASH_MISC_INFO, + .baseHP = 65, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 105, + .baseSpAttack = 80, + .baseSpDefense = 80, + .types = MON_TYPES(TYPE_FIRE), + .catchRate = 60, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 175 : 192, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_RUN_AWAY, ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Rapidash"), + .cryId = CRY_RAPIDASH, + .natDexNum = NATIONAL_DEX_RAPIDASH, .categoryName = _("Fire Horse"), + .height = 17, .weight = 950, .description = COMPOUND_STRING( "It usually canters casually in the fields\n" "and plains. But once a Rapidash turns\n" "serious, its fiery manes flare and blaze\n" "as it gallops its way up to 150 mph."), - FRONT_PIC(Rapidash, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 289, + .trainerOffset = 1, + .frontPic = gMonFrontPic_Rapidash, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Rapidash, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Rapidash, 64, 64), + .backPic = gMonBackPic_Rapidash, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Rapidash), - ICON(Rapidash, 3), - LEARNSETS(Rapidash), + .palette = gMonPalette_Rapidash, + .shinyPalette = gMonShinyPalette_Rapidash, + .iconSprite = gMonIcon_Rapidash, + .iconPalIndex = 3, + FOOTPRINT(Rapidash) + .levelUpLearnset = sRapidashLevelUpLearnset, + .teachableLearnset = sRapidashTeachableLearnset, + .formSpeciesIdTable = sRapidashFormSpeciesIdTable, }, -#define GALARIAN_PONYTA_FAMILY_INFO \ - .abilities = { ABILITY_RUN_AWAY, ABILITY_PASTEL_VEIL, ABILITY_ANTICIPATION },\ - .bodyColor = BODY_COLOR_WHITE, \ - .isGalarianForm = TRUE - #if P_GALARIAN_FORMS [SPECIES_PONYTA_GALARIAN] = { - GALARIAN_PONYTA_FAMILY_INFO, - PONYTA_MISC_INFO, + .baseHP = 50, + .baseAttack = 85, + .baseDefense = 55, + .baseSpeed = 90, + .baseSpAttack = 65, + .baseSpDefense = 65, .types = MON_TYPES(TYPE_PSYCHIC), + .catchRate = 190, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 82 : 152, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_RUN_AWAY, ABILITY_PASTEL_VEIL, ABILITY_ANTICIPATION }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Ponyta"), + .cryId = CRY_PONYTA, + .natDexNum = NATIONAL_DEX_PONYTA, .categoryName = _("Unique Horn"), .height = 8, .weight = 240, @@ -6010,128 +7610,136 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(PonytaGalarian, 64, 56), + .frontPic = gMonFrontPic_PonytaGalarian, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_PonytaGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PonytaGalarian, 64, 56), + .backPic = gMonBackPic_PonytaGalarian, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PonytaGalarian), - ICON(PonytaGalarian, 2), - LEARNSETS(PonytaGalarian), + .palette = gMonPalette_PonytaGalarian, + .shinyPalette = gMonShinyPalette_PonytaGalarian, + .iconSprite = gMonIcon_PonytaGalarian, + .iconPalIndex = 2, + FOOTPRINT(Ponyta) + .isGalarianForm = TRUE, + .levelUpLearnset = sPonytaGalarianLevelUpLearnset, + .teachableLearnset = sPonytaGalarianTeachableLearnset, + .formSpeciesIdTable = sPonytaFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_RAPIDASH_GALARIAN}), }, [SPECIES_RAPIDASH_GALARIAN] = { - GALARIAN_PONYTA_FAMILY_INFO, - RAPIDASH_MISC_INFO, + .baseHP = 65, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 105, + .baseSpAttack = 80, + .baseSpDefense = 80, .types = MON_TYPES(TYPE_PSYCHIC, TYPE_FAIRY), + .catchRate = 60, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 175 : 192, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_RUN_AWAY, ABILITY_PASTEL_VEIL, ABILITY_ANTICIPATION }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Rapidash"), + .cryId = CRY_RAPIDASH, + .natDexNum = NATIONAL_DEX_RAPIDASH, .categoryName = _("Unique Horn"), + .height = 17, .weight = 800, .description = COMPOUND_STRING( "Little can stand up to its psycho cut.\n" "Unleashed from this Pokémon's horn,\n" "the move will punch a hole right\n" "through a thick metal sheet."), - FRONT_PIC(RapidashGalarian, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 289, + .trainerOffset = 1, + .frontPic = gMonFrontPic_RapidashGalarian, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_RapidashGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(RapidashGalarian, 64, 56), + .backPic = gMonBackPic_RapidashGalarian, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(RapidashGalarian), - ICON(RapidashGalarian, 2), - LEARNSETS(RapidashGalarian), + .palette = gMonPalette_RapidashGalarian, + .shinyPalette = gMonShinyPalette_RapidashGalarian, + .iconSprite = gMonIcon_RapidashGalarian, + .iconPalIndex = 2, + FOOTPRINT(Rapidash) + .isGalarianForm = TRUE, + .levelUpLearnset = sRapidashGalarianLevelUpLearnset, + .teachableLearnset = sRapidashGalarianTeachableLearnset, + .formSpeciesIdTable = sRapidashFormSpeciesIdTable, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_PONYTA #if P_FAMILY_SLOWPOKE -#define SLOWPOKE_MISC_INFO \ - .baseHP = 90, \ - .baseAttack = 65, \ - .baseDefense = 65, \ - .baseSpeed = 15, \ - .baseSpAttack = 40, \ - .baseSpDefense = 40, \ - .catchRate = 190, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 63 : 99, \ - .evYield_HP = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), \ - .bodyColor = BODY_COLOR_PINK, \ - .speciesName = _("Slowpoke"), \ - .natDexNum = NATIONAL_DEX_SLOWPOKE, \ - .categoryName = _("Dopey"), \ - .height = 12, \ - .weight = 360, \ - .pokemonScale = 256, \ - .pokemonOffset = 10, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Slowpoke) \ - .formSpeciesIdTable = sSlowpokeFormSpeciesIdTable - -#define SLOWBRO_MISC_INFO \ - .catchRate = 75, \ - .itemRare = ITEM_KINGS_ROCK, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), \ - .bodyColor = BODY_COLOR_PINK, \ - .speciesName = _("Slowbro"), \ - .cryId = CRY_SLOWBRO, \ - .natDexNum = NATIONAL_DEX_SLOWBRO, \ - .categoryName = _("Hermit Crab"), \ - FOOTPRINT(Slowbro) \ - .formSpeciesIdTable = sSlowbroFormSpeciesIdTable - -#define SLOWKING_MISC_INFO \ - .catchRate = 70, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 172 : 164, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), \ - .bodyColor = BODY_COLOR_PINK, \ - .speciesName = _("Slowking"), \ - .cryId = CRY_SLOWKING, \ - .natDexNum = NATIONAL_DEX_SLOWKING, \ - .weight = 795, \ - FOOTPRINT(Slowking) \ - .formSpeciesIdTable = sSlowkingFormSpeciesIdTable - [SPECIES_SLOWPOKE] = { - SLOWPOKE_MISC_INFO, + .baseHP = 90, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 15, + .baseSpAttack = 40, + .baseSpDefense = 40, .types = MON_TYPES(TYPE_WATER, TYPE_PSYCHIC), + .catchRate = 190, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 63 : 99, + .evYield_HP = 1, .itemRare = ITEM_LAGGING_TAIL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), .abilities = { ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Slowpoke"), .cryId = CRY_SLOWPOKE, + .natDexNum = NATIONAL_DEX_SLOWPOKE, + .categoryName = _("Dopey"), + .height = 12, + .weight = 360, .description = COMPOUND_STRING( "It catches prey by dipping its tail in\n" "water at the side of a river. But it often\n" "forgets what it is doing and spends entire\n" "days just loafing at water's edge."), - FRONT_PIC(Slowpoke, 64, 32), + .pokemonScale = 256, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Slowpoke, + .frontPicSize = MON_COORDS_SIZE(64, 32), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Slowpoke, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Slowpoke, 64, 40), + .backPic = gMonBackPic_Slowpoke, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Slowpoke), - ICON(Slowpoke, 0), - LEARNSETS(Slowpoke), + .palette = gMonPalette_Slowpoke, + .shinyPalette = gMonShinyPalette_Slowpoke, + .iconSprite = gMonIcon_Slowpoke, + .iconPalIndex = 0, + FOOTPRINT(Slowpoke) + .levelUpLearnset = sSlowpokeLevelUpLearnset, + .teachableLearnset = sSlowpokeTeachableLearnset, + .formSpeciesIdTable = sSlowpokeFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_SLOWBRO}, {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}, {EVO_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}), @@ -6139,7 +7747,6 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = [SPECIES_SLOWBRO] = { - SLOWBRO_MISC_INFO, .baseHP = 95, .baseAttack = 75, .baseDefense = 110, @@ -6147,9 +7754,21 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 100, .baseSpDefense = 80, .types = MON_TYPES(TYPE_WATER, TYPE_PSYCHIC), + .catchRate = 75, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 172 : 164, .evYield_Defense = (P_UPDATED_EVS >= GEN_8) ? 2 : 3, + .itemRare = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), .abilities = { ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Slowbro"), + .cryId = CRY_SLOWBRO, + .natDexNum = NATIONAL_DEX_SLOWBRO, + .categoryName = _("Hermit Crab"), .height = 16, .weight = 785, .description = COMPOUND_STRING( @@ -6161,23 +7780,29 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 6, .trainerScale = 296, .trainerOffset = 2, - FRONT_PIC(Slowbro, 56, 56), + .frontPic = gMonFrontPic_Slowbro, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Slowbro, .frontAnimId = ANIM_H_STRETCH, - BACK_PIC(Slowbro, 64, 48), + .backPic = gMonBackPic_Slowbro, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Slowbro), - ICON(Slowbro, 0), - LEARNSETS(Slowbro), + .palette = gMonPalette_Slowbro, + .shinyPalette = gMonShinyPalette_Slowbro, + .iconSprite = gMonIcon_Slowbro, + .iconPalIndex = 0, + FOOTPRINT(Slowbro) + .levelUpLearnset = sSlowbroLevelUpLearnset, + .teachableLearnset = sSlowbroTeachableLearnset, + .formSpeciesIdTable = sSlowbroFormSpeciesIdTable, .formChangeTable = sSlowbroFormChangeTable, }, #if P_GEN_2_CROSS_EVOS [SPECIES_SLOWKING] = { - SLOWKING_MISC_INFO, .baseHP = 95, .baseAttack = 75, .baseDefense = 80, @@ -6185,11 +7810,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 100, .baseSpDefense = 110, .types = MON_TYPES(TYPE_WATER, TYPE_PSYCHIC), + .catchRate = 70, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 172 : 164, .evYield_SpDefense = 3, .itemRare = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), .abilities = { ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Slowking"), + .cryId = CRY_SLOWKING, + .natDexNum = NATIONAL_DEX_SLOWKING, .categoryName = _("Royal"), .height = 20, + .weight = 795, .description = COMPOUND_STRING( "It undertakes research every day to\n" "solve the mysteries of the world.\n" @@ -6199,23 +7836,29 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 309, .trainerOffset = 5, - FRONT_PIC(Slowking, 48, 64), + .frontPic = gMonFrontPic_Slowking, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Slowking, .frontAnimId = ANIM_SHRINK_GROW, - BACK_PIC(Slowking, 56, 64), + .backPic = gMonBackPic_Slowking, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Slowking), - ICON(Slowking, 0), - LEARNSETS(Slowking), + .palette = gMonPalette_Slowking, + .shinyPalette = gMonShinyPalette_Slowking, + .iconSprite = gMonIcon_Slowking, + .iconPalIndex = 0, + FOOTPRINT(Slowking) + .levelUpLearnset = sSlowkingLevelUpLearnset, + .teachableLearnset = sSlowkingTeachableLearnset, + .formSpeciesIdTable = sSlowkingFormSpeciesIdTable, }, #endif //P_GEN_2_CROSS_EVOS #if P_MEGA_EVOLUTIONS [SPECIES_SLOWBRO_MEGA] = { - SLOWBRO_MISC_INFO, .baseHP = 95, .baseAttack = 75, .baseDefense = 180, @@ -6223,9 +7866,21 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 130, .baseSpDefense = 80, .types = MON_TYPES(TYPE_WATER, TYPE_PSYCHIC), + .catchRate = 75, .expYield = 207, .evYield_Defense = 2, + .itemRare = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), .abilities = { ABILITY_SHELL_ARMOR, ABILITY_SHELL_ARMOR, ABILITY_SHELL_ARMOR }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Slowbro"), + .cryId = CRY_SLOWBRO, + .natDexNum = NATIONAL_DEX_SLOWBRO, + .categoryName = _("Hermit Crab"), .height = 20, .weight = 1200, .description = COMPOUND_STRING( @@ -6237,51 +7892,87 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 6, .trainerScale = 296, .trainerOffset = 2, - FRONT_PIC(SlowbroMega, 56, 64), + .frontPic = gMonFrontPic_SlowbroMega, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_SlowbroMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SlowbroMega, 64, 48), + .backPic = gMonBackPic_SlowbroMega, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(SlowbroMega), - ICON(SlowbroMega, 0), - LEARNSETS(Slowbro), - .formChangeTable = sSlowbroFormChangeTable, + .palette = gMonPalette_SlowbroMega, + .shinyPalette = gMonShinyPalette_SlowbroMega, + .iconSprite = gMonIcon_SlowbroMega, + .iconPalIndex = 0, + FOOTPRINT(Slowbro) .isMegaEvolution = TRUE, + .levelUpLearnset = sSlowbroLevelUpLearnset, + .teachableLearnset = sSlowbroTeachableLearnset, + .formSpeciesIdTable = sSlowbroFormSpeciesIdTable, + .formChangeTable = sSlowbroFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #if P_GALARIAN_FORMS [SPECIES_SLOWPOKE_GALARIAN] = { - SLOWPOKE_MISC_INFO, + .baseHP = 90, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 15, + .baseSpAttack = 40, + .baseSpDefense = 40, .types = MON_TYPES(TYPE_PSYCHIC), + .catchRate = 190, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 63 : 99, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), .abilities = { ABILITY_GLUTTONY, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Slowpoke"), .cryId = CRY_SLOWPOKE_GALARIAN, + .natDexNum = NATIONAL_DEX_SLOWPOKE, + .categoryName = _("Dopey"), + .height = 12, + .weight = 360, .description = COMPOUND_STRING( "Although it is normally zoned out, its\n" "expression abruptly sharpens on occasion.\n" "The cause seems to lie in Slowpoke's diet,\n" "which also give their tails a spicy flavor."), - FRONT_PIC(SlowpokeGalarian, 56, 32), + .pokemonScale = 256, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_SlowpokeGalarian, + .frontPicSize = MON_COORDS_SIZE(56, 32), .frontPicYOffset = 19, .frontAnimFrames = sAnims_SlowpokeGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SlowpokeGalarian, 64, 40), + .backPic = gMonBackPic_SlowpokeGalarian, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, - PALETTES(SlowpokeGalarian), - ICON(SlowpokeGalarian, 1), - LEARNSETS(SlowpokeGalarian), + .palette = gMonPalette_SlowpokeGalarian, + .shinyPalette = gMonShinyPalette_SlowpokeGalarian, + .iconSprite = gMonIcon_SlowpokeGalarian, + .iconPalIndex = 1, + FOOTPRINT(Slowpoke) .isGalarianForm = TRUE, + .levelUpLearnset = sSlowpokeGalarianLevelUpLearnset, + .teachableLearnset = sSlowpokeGalarianTeachableLearnset, + .formSpeciesIdTable = sSlowpokeFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_GALARICA_CUFF, SPECIES_SLOWBRO_GALARIAN}, {EVO_ITEM, ITEM_GALARICA_WREATH, SPECIES_SLOWKING_GALARIAN}), }, [SPECIES_SLOWBRO_GALARIAN] = { - SLOWBRO_MISC_INFO, .baseHP = 95, .baseAttack = 100, .baseDefense = 95, @@ -6289,9 +7980,21 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 100, .baseSpDefense = 70, .types = MON_TYPES(TYPE_POISON, TYPE_PSYCHIC), + .catchRate = 75, .expYield = 172, .evYield_Attack = 2, + .itemRare = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), .abilities = { ABILITY_QUICK_DRAW, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Slowbro"), + .cryId = CRY_SLOWBRO, + .natDexNum = NATIONAL_DEX_SLOWBRO, + .categoryName = _("Hermit Crab"), .height = 16, .weight = 705, .description = COMPOUND_STRING( @@ -6303,23 +8006,29 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 6, .trainerScale = 296, .trainerOffset = 2, - FRONT_PIC(SlowbroGalarian, 64, 56), + .frontPic = gMonFrontPic_SlowbroGalarian, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_SlowbroGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SlowbroGalarian, 64, 48), + .backPic = gMonBackPic_SlowbroGalarian, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(SlowbroGalarian), - ICON(SlowbroGalarian, 0), - LEARNSETS(SlowbroGalarian), + .palette = gMonPalette_SlowbroGalarian, + .shinyPalette = gMonShinyPalette_SlowbroGalarian, + .iconSprite = gMonIcon_SlowbroGalarian, + .iconPalIndex = 0, + FOOTPRINT(Slowbro) .isGalarianForm = TRUE, + .levelUpLearnset = sSlowbroGalarianLevelUpLearnset, + .teachableLearnset = sSlowbroGalarianTeachableLearnset, + .formSpeciesIdTable = sSlowbroFormSpeciesIdTable, }, #if P_GEN_2_CROSS_EVOS [SPECIES_SLOWKING_GALARIAN] = { - SLOWKING_MISC_INFO, .baseHP = 95, .baseAttack = 65, .baseDefense = 80, @@ -6327,10 +8036,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 110, .baseSpDefense = 110, .types = MON_TYPES(TYPE_POISON, TYPE_PSYCHIC), + .catchRate = 70, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 172 : 164, .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), .abilities = { ABILITY_CURIOUS_MEDICINE, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Slowking"), + .cryId = CRY_SLOWKING, + .natDexNum = NATIONAL_DEX_SLOWKING, .categoryName = _("Hexpert"), .height = 18, + .weight = 795, .description = COMPOUND_STRING( "A combination of toxins and the shock of\n" "evolving has increased Shellder's\n" @@ -6340,17 +8061,24 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 309, .trainerOffset = 5, - FRONT_PIC(SlowkingGalarian, 48, 64), + .frontPic = gMonFrontPic_SlowkingGalarian, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_SlowkingGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SlowkingGalarian, 56, 64), + .backPic = gMonBackPic_SlowkingGalarian, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(SlowkingGalarian), - ICON(SlowkingGalarian, 2), - LEARNSETS(SlowkingGalarian), + .palette = gMonPalette_SlowkingGalarian, + .shinyPalette = gMonShinyPalette_SlowkingGalarian, + .iconSprite = gMonIcon_SlowkingGalarian, + .iconPalIndex = 2, + FOOTPRINT(Slowking) .isGalarianForm = TRUE, + .levelUpLearnset = sSlowkingGalarianLevelUpLearnset, + .teachableLearnset = sSlowkingGalarianTeachableLearnset, + .formSpeciesIdTable = sSlowkingFormSpeciesIdTable, }, #endif //P_GEN_2_CROSS_EVOS #endif //P_GALARIAN_FORMS @@ -6392,18 +8120,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = -9, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Magnemite, 48, 32), + .frontPic = gMonFrontPic_Magnemite, + .frontPicSize = MON_COORDS_SIZE(48, 32), .frontPicYOffset = 20, .frontAnimFrames = sAnims_Magnemite, .frontAnimId = ANIM_TUMBLING_FRONT_FLIP_TWICE, .enemyMonElevation = 17, - BACK_PIC(Magnemite, 48, 40), + .backPic = gMonBackPic_Magnemite, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 15, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Magnemite), - ICON(Magnemite, 0), + .palette = gMonPalette_Magnemite, + .shinyPalette = gMonShinyPalette_Magnemite, + .iconSprite = gMonIcon_Magnemite, + .iconPalIndex = 0, FOOTPRINT(Magnemite) - LEARNSETS(Magnemite), + .levelUpLearnset = sMagnemiteLevelUpLearnset, + .teachableLearnset = sMagnemiteTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MAGNETON}), }, @@ -6442,18 +8175,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Magneton, 64, 56), + .frontPic = gMonFrontPic_Magneton, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Magneton, .frontAnimId = ANIM_FLASH_YELLOW, .enemyMonElevation = 9, - BACK_PIC(Magneton, 64, 56), + .backPic = gMonBackPic_Magneton, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Magneton), - ICON(Magneton, 0), + .palette = gMonPalette_Magneton, + .shinyPalette = gMonShinyPalette_Magneton, + .iconSprite = gMonIcon_Magneton, + .iconPalIndex = 0, FOOTPRINT(Magneton) - LEARNSETS(Magneton), + .levelUpLearnset = sMagnetonLevelUpLearnset, + .teachableLearnset = sMagnetonTeachableLearnset, .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_MAGNEZONE}, {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_MAGNEZONE}), }, @@ -6500,18 +8238,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Magnezone, 64, 56), + .frontPic = gMonFrontPic_Magnezone, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Magnezone, .frontAnimId = ANIM_H_SLIDE_WOBBLE, .enemyMonElevation = 4, - BACK_PIC(Magnezone, 64, 40), + .backPic = gMonBackPic_Magnezone, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Magnezone), - ICON(Magnezone, 0), + .palette = gMonPalette_Magnezone, + .shinyPalette = gMonShinyPalette_Magnezone, + .iconSprite = gMonIcon_Magnezone, + .iconPalIndex = 0, FOOTPRINT(Magnezone) - LEARNSETS(Magnezone), + .levelUpLearnset = sMagnezoneLevelUpLearnset, + .teachableLearnset = sMagnezoneTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_MAGNEMITE @@ -6527,35 +8270,30 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #define FARFETCHD_EXP_YIELD 94 #endif -#define FARFETCHD_MISC_INFO \ - .catchRate = 45, \ - .expYield = FARFETCHD_EXP_YIELD, \ - .evYield_Attack = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING, EGG_GROUP_FIELD),\ - .bodyColor = BODY_COLOR_BROWN, \ - .speciesName = _("Farfetch'd"), \ - .cryId = CRY_FARFETCHD, \ - .natDexNum = NATIONAL_DEX_FARFETCHD, \ - .categoryName = _("Wild Duck"), \ - FOOTPRINT(Farfetchd) \ - .formSpeciesIdTable = sFarfetchdFormSpeciesIdTable - [SPECIES_FARFETCHD] = { - FARFETCHD_MISC_INFO, .baseHP = 52, + .baseAttack = FARFETCHD_ATTACK, .baseDefense = 55, .baseSpeed = 60, .baseSpAttack = 58, .baseSpDefense = 62, - .baseAttack = FARFETCHD_ATTACK, .types = MON_TYPES(TYPE_NORMAL, TYPE_FLYING), + .catchRate = 45, + .expYield = FARFETCHD_EXP_YIELD, + .evYield_Attack = 1, .itemRare = ITEM_LEEK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING, EGG_GROUP_FIELD), .abilities = { ABILITY_KEEN_EYE, ABILITY_INNER_FOCUS, ABILITY_DEFIANT }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Farfetch'd"), + .cryId = CRY_FARFETCHD, + .natDexNum = NATIONAL_DEX_FARFETCHD, + .categoryName = _("Wild Duck"), .height = 8, .weight = 150, .description = COMPOUND_STRING( @@ -6567,22 +8305,28 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 293, .trainerOffset = 2, - FRONT_PIC(Farfetchd, 48, 56), + .frontPic = gMonFrontPic_Farfetchd, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Farfetchd, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - BACK_PIC(Farfetchd, 64, 48), + .backPic = gMonBackPic_Farfetchd, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Farfetchd), - ICON(Farfetchd, 1), - LEARNSETS(Farfetchd), + .palette = gMonPalette_Farfetchd, + .shinyPalette = gMonShinyPalette_Farfetchd, + .iconSprite = gMonIcon_Farfetchd, + .iconPalIndex = 1, + FOOTPRINT(Farfetchd) + .levelUpLearnset = sFarfetchdLevelUpLearnset, + .teachableLearnset = sFarfetchdTeachableLearnset, + .formSpeciesIdTable = sFarfetchdFormSpeciesIdTable, }, #if P_GALARIAN_FORMS [SPECIES_FARFETCHD_GALARIAN] = { - FARFETCHD_MISC_INFO, .baseHP = 52, .baseAttack = FARFETCHD_ATTACK + 5, .baseDefense = 55, @@ -6590,8 +8334,21 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 58, .baseSpDefense = 62, .types = MON_TYPES(TYPE_FIGHTING), + .catchRate = 45, + .expYield = FARFETCHD_EXP_YIELD, + .evYield_Attack = 1, .itemCommon = ITEM_LEEK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING, EGG_GROUP_FIELD), .abilities = { ABILITY_STEADFAST, ABILITY_NONE, ABILITY_SCRAPPY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Farfetch'd"), + .cryId = CRY_FARFETCHD, + .natDexNum = NATIONAL_DEX_FARFETCHD, + .categoryName = _("Wild Duck"), .height = 8, .weight = 420, .description = COMPOUND_STRING( @@ -6603,17 +8360,24 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 293, .trainerOffset = 2, - FRONT_PIC(FarfetchdGalarian, 64, 48), + .frontPic = gMonFrontPic_FarfetchdGalarian, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_FarfetchdGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(FarfetchdGalarian, 64, 48), + .backPic = gMonBackPic_FarfetchdGalarian, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(FarfetchdGalarian), - ICON(FarfetchdGalarian, 1), - LEARNSETS(FarfetchdGalarian), + .palette = gMonPalette_FarfetchdGalarian, + .shinyPalette = gMonShinyPalette_FarfetchdGalarian, + .iconSprite = gMonIcon_FarfetchdGalarian, + .iconPalIndex = 1, + FOOTPRINT(Farfetchd) .isGalarianForm = TRUE, + .levelUpLearnset = sFarfetchdGalarianLevelUpLearnset, + .teachableLearnset = sFarfetchdGalarianTeachableLearnset, + .formSpeciesIdTable = sFarfetchdFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_CRITICAL_HITS, 3, SPECIES_SIRFETCHD}), }, @@ -6652,17 +8416,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Sirfetchd, 64, 64), + .frontPic = gMonFrontPic_Sirfetchd, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Sirfetchd, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Sirfetchd, 64, 48), + .backPic = gMonBackPic_Sirfetchd, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Sirfetchd), - ICON(Sirfetchd, 1), + .palette = gMonPalette_Sirfetchd, + .shinyPalette = gMonShinyPalette_Sirfetchd, + .iconSprite = gMonIcon_Sirfetchd, + .iconPalIndex = 1, FOOTPRINT(Sirfetchd) - LEARNSETS(Sirfetchd), + .levelUpLearnset = sSirfetchdLevelUpLearnset, + .teachableLearnset = sSirfetchdTeachableLearnset, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_FARFETCHD @@ -6703,19 +8472,26 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 3, .trainerScale = 257, .trainerOffset = -1, - FRONT_PIC(Doduo, 64, 56), - FRONT_PIC_FEMALE(Doduo, 64, 56), + .frontPic = gMonFrontPic_Doduo, + .frontPicFemale = gMonFrontPic_DoduoF, + .frontPicSize = MON_COORDS_SIZE(64, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Doduo, .frontAnimId = ANIM_H_SHAKE_SLOW, - BACK_PIC(Doduo, 64, 56), - BACK_PIC_FEMALE(Doduo, 64, 56), + .backPic = gMonBackPic_Doduo, + .backPicFemale = gMonBackPic_DoduoF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Doduo), - ICON(Doduo, 2), + .palette = gMonPalette_Doduo, + .shinyPalette = gMonShinyPalette_Doduo, + .iconSprite = gMonIcon_Doduo, + .iconPalIndex = 2, FOOTPRINT(Doduo) - LEARNSETS(Doduo), + .levelUpLearnset = sDoduoLevelUpLearnset, + .teachableLearnset = sDoduoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_DODRIO}), }, @@ -6760,19 +8536,26 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 268, .trainerOffset = 0, - FRONT_PIC(Dodrio, 64, 64), - FRONT_PIC_FEMALE(Dodrio, 64, 64), + .frontPic = gMonFrontPic_Dodrio, + .frontPicFemale = gMonFrontPic_DodrioF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Dodrio, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Dodrio, 64, 64), - BACK_PIC_FEMALE(Dodrio, 64, 64), + .backPic = gMonBackPic_Dodrio, + .backPicFemale = gMonBackPic_DodrioF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Dodrio), - ICON(Dodrio, 2), + .palette = gMonPalette_Dodrio, + .shinyPalette = gMonShinyPalette_Dodrio, + .iconSprite = gMonIcon_Dodrio, + .iconPalIndex = 2, FOOTPRINT(Dodrio) - LEARNSETS(Dodrio), + .levelUpLearnset = sDodrioLevelUpLearnset, + .teachableLearnset = sDodrioTeachableLearnset, }, #endif //P_FAMILY_DODUO @@ -6811,17 +8594,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Seel, 56, 48), + .frontPic = gMonFrontPic_Seel, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Seel, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(Seel, 64, 40), + .backPic = gMonBackPic_Seel, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Seel), - ICON(Seel, 0), + .palette = gMonPalette_Seel, + .shinyPalette = gMonShinyPalette_Seel, + .iconSprite = gMonIcon_Seel, + .iconPalIndex = 0, FOOTPRINT(Seel) - LEARNSETS(Seel), + .levelUpLearnset = sSeelLevelUpLearnset, + .teachableLearnset = sSeelTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_DEWGONG}), }, @@ -6859,75 +8647,50 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 275, .trainerOffset = 0, - FRONT_PIC(Dewgong, 64, 64), + .frontPic = gMonFrontPic_Dewgong, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Dewgong, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Dewgong, 64, 56), + .backPic = gMonBackPic_Dewgong, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Dewgong), - ICON(Dewgong, 2), + .palette = gMonPalette_Dewgong, + .shinyPalette = gMonShinyPalette_Dewgong, + .iconSprite = gMonIcon_Dewgong, + .iconPalIndex = 2, FOOTPRINT(Dewgong) - LEARNSETS(Dewgong), + .levelUpLearnset = sDewgongLevelUpLearnset, + .teachableLearnset = sDewgongTeachableLearnset, }, #endif //P_FAMILY_SEEL #if P_FAMILY_GRIMER -#define GRIMER_FAMILY_MISC_INFO \ - .itemRare = ITEM_BLACK_SLUDGE, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS) - -#define GRIMER_MISC_INFO \ - .baseHP = 80, \ - .baseAttack = 80, \ - .baseDefense = 50, \ - .baseSpeed = 25, \ - .baseSpAttack = 40, \ - .baseSpDefense = 50, \ - .catchRate = 190, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 65 : 90, \ - .evYield_HP = 1, \ - .speciesName = _("Grimer"), \ - .cryId = CRY_GRIMER, \ - .natDexNum = NATIONAL_DEX_GRIMER, \ - .categoryName = _("Sludge"), \ - FOOTPRINT(Grimer) \ - .formSpeciesIdTable = sGrimerFormSpeciesIdTable, \ - GRIMER_FAMILY_MISC_INFO - -#define MUK_MISC_INFO \ - .baseHP = 105, \ - .baseAttack = 105, \ - .baseDefense = 75, \ - .baseSpeed = 50, \ - .baseSpAttack = 65, \ - .baseSpDefense = 100, \ - .catchRate = 75, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 175 : 157,\ - .evYield_HP = 1, \ - .evYield_Attack = 1, \ - .speciesName = _("Muk"), \ - .cryId = CRY_MUK, \ - .natDexNum = NATIONAL_DEX_MUK, \ - .categoryName = _("Sludge"), \ - FOOTPRINT(Muk) \ - .formSpeciesIdTable = sMukFormSpeciesIdTable, \ - GRIMER_FAMILY_MISC_INFO - -#define KANTONIAN_GRIMER_FAMILY_INFO \ - .types = MON_TYPES(TYPE_POISON), \ - .abilities = { ABILITY_STENCH, ABILITY_STICKY_HOLD, ABILITY_POISON_TOUCH }, \ - .bodyColor = BODY_COLOR_PURPLE - [SPECIES_GRIMER] = { - KANTONIAN_GRIMER_FAMILY_INFO, - GRIMER_MISC_INFO, + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 25, + .baseSpAttack = 40, + .baseSpDefense = 50, + .types = MON_TYPES(TYPE_POISON), + .catchRate = 190, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 65 : 90, + .evYield_HP = 1, + .itemRare = ITEM_BLACK_SLUDGE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_STENCH, ABILITY_STICKY_HOLD, ABILITY_POISON_TOUCH }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Grimer"), + .cryId = CRY_GRIMER, + .natDexNum = NATIONAL_DEX_GRIMER, + .categoryName = _("Sludge"), .height = 9, .weight = 300, .description = COMPOUND_STRING( @@ -6939,23 +8702,51 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Grimer, 48, 48), + .frontPic = gMonFrontPic_Grimer, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Grimer, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(Grimer, 64, 40), + .backPic = gMonBackPic_Grimer, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Grimer), - ICON(Grimer, 2), - LEARNSETS(Grimer), + .palette = gMonPalette_Grimer, + .shinyPalette = gMonShinyPalette_Grimer, + .iconSprite = gMonIcon_Grimer, + .iconPalIndex = 2, + FOOTPRINT(Grimer) + .levelUpLearnset = sGrimerLevelUpLearnset, + .teachableLearnset = sGrimerTeachableLearnset, + .formSpeciesIdTable = sGrimerFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_MUK}), }, [SPECIES_MUK] = { - KANTONIAN_GRIMER_FAMILY_INFO, - MUK_MISC_INFO, + .baseHP = 105, + .baseAttack = 105, + .baseDefense = 75, + .baseSpeed = 50, + .baseSpAttack = 65, + .baseSpDefense = 100, + .types = MON_TYPES(TYPE_POISON), + .catchRate = 75, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 175 : 157, + .evYield_HP = 1, + .evYield_Attack = 1, + .itemRare = ITEM_BLACK_SLUDGE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_STENCH, ABILITY_STICKY_HOLD, ABILITY_POISON_TOUCH }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Muk"), + .cryId = CRY_MUK, + .natDexNum = NATIONAL_DEX_MUK, + .categoryName = _("Sludge"), .height = 12, .weight = 300, .description = COMPOUND_STRING( @@ -6967,30 +8758,51 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Muk, 64, 56), + .frontPic = gMonFrontPic_Muk, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Muk, .frontAnimId = ANIM_DEEP_V_SQUISH_AND_BOUNCE, .frontAnimDelay = 45, - BACK_PIC(Muk, 64, 56), + .backPic = gMonBackPic_Muk, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_H_STRETCH, - PALETTES(Muk), - ICON(Muk, 2), - LEARNSETS(Muk), + .palette = gMonPalette_Muk, + .shinyPalette = gMonShinyPalette_Muk, + .iconSprite = gMonIcon_Muk, + .iconPalIndex = 2, + FOOTPRINT(Muk) + .levelUpLearnset = sMukLevelUpLearnset, + .teachableLearnset = sMukTeachableLearnset, + .formSpeciesIdTable = sMukFormSpeciesIdTable, }, #if P_ALOLAN_FORMS -#define ALOLAN_GRIMER_FAMILY_INFO \ - .types = MON_TYPES(TYPE_POISON, TYPE_DARK), \ - .abilities = { ABILITY_POISON_TOUCH, ABILITY_GLUTTONY, ABILITY_POWER_OF_ALCHEMY }, \ - .bodyColor = BODY_COLOR_GREEN, \ - .isAlolanForm = TRUE - [SPECIES_GRIMER_ALOLAN] = { - ALOLAN_GRIMER_FAMILY_INFO, - GRIMER_MISC_INFO, + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 25, + .baseSpAttack = 40, + .baseSpDefense = 50, + .types = MON_TYPES(TYPE_POISON, TYPE_DARK), + .catchRate = 190, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 65 : 90, + .evYield_HP = 1, + .itemRare = ITEM_BLACK_SLUDGE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_POISON_TOUCH, ABILITY_GLUTTONY, ABILITY_POWER_OF_ALCHEMY }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Grimer"), + .cryId = CRY_GRIMER, + .natDexNum = NATIONAL_DEX_GRIMER, + .categoryName = _("Sludge"), .height = 7, .weight = 420, .description = COMPOUND_STRING( @@ -7002,24 +8814,53 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(GrimerAlolan, 56, 48), + .frontPic = gMonFrontPic_GrimerAlolan, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_GrimerAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(GrimerAlolan, 64, 40), + .backPic = gMonBackPic_GrimerAlolan, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(GrimerAlolan), - ICON(GrimerAlolan, 1), - LEARNSETS(GrimerAlolan), + .palette = gMonPalette_GrimerAlolan, + .shinyPalette = gMonShinyPalette_GrimerAlolan, + .iconSprite = gMonIcon_GrimerAlolan, + .iconPalIndex = 1, + FOOTPRINT(Grimer) + .isAlolanForm = TRUE, + .levelUpLearnset = sGrimerAlolanLevelUpLearnset, + .teachableLearnset = sGrimerAlolanTeachableLearnset, + .formSpeciesIdTable = sGrimerFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_MUK_ALOLAN}), }, [SPECIES_MUK_ALOLAN] = { - MUK_MISC_INFO, - ALOLAN_GRIMER_FAMILY_INFO, + .baseHP = 105, + .baseAttack = 105, + .baseDefense = 75, + .baseSpeed = 50, + .baseSpAttack = 65, + .baseSpDefense = 100, + .types = MON_TYPES(TYPE_POISON, TYPE_DARK), + .catchRate = 75, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 175 : 157, + .evYield_HP = 1, + .evYield_Attack = 1, + .itemRare = ITEM_BLACK_SLUDGE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_POISON_TOUCH, ABILITY_GLUTTONY, ABILITY_POWER_OF_ALCHEMY }, + .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, + .speciesName = _("Muk"), + .cryId = CRY_MUK, + .natDexNum = NATIONAL_DEX_MUK, + .categoryName = _("Sludge"), .height = 10, .weight = 520, .description = COMPOUND_STRING( @@ -7031,16 +8872,24 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(MukAlolan, 64, 64), + .frontPic = gMonFrontPic_MukAlolan, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_MukAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(MukAlolan, 64, 56), + .backPic = gMonBackPic_MukAlolan, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(MukAlolan), - ICON(MukAlolan, 0), - LEARNSETS(MukAlolan), + .palette = gMonPalette_MukAlolan, + .shinyPalette = gMonShinyPalette_MukAlolan, + .iconSprite = gMonIcon_MukAlolan, + .iconPalIndex = 0, + FOOTPRINT(Muk) + .isAlolanForm = TRUE, + .levelUpLearnset = sMukAlolanLevelUpLearnset, + .teachableLearnset = sMukAlolanTeachableLearnset, + .formSpeciesIdTable = sMukFormSpeciesIdTable, }, #endif //P_ALOLAN_FORMS #endif //P_FAMILY_GRIMER @@ -7082,18 +8931,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Shellder, 40, 40), + .frontPic = gMonFrontPic_Shellder, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Shellder, .frontAnimId = ANIM_TWIST, .frontAnimDelay = 20, - BACK_PIC(Shellder, 48, 24), + .backPic = gMonBackPic_Shellder, + .backPicSize = MON_COORDS_SIZE(48, 24), .backPicYOffset = 21, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Shellder), - ICON(Shellder, 2), + .palette = gMonPalette_Shellder, + .shinyPalette = gMonShinyPalette_Shellder, + .iconSprite = gMonIcon_Shellder, + .iconPalIndex = 2, FOOTPRINT(Shellder) - LEARNSETS(Shellder), + .levelUpLearnset = sShellderLevelUpLearnset, + .teachableLearnset = sShellderTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}), }, @@ -7133,17 +8987,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 269, .trainerOffset = 1, - FRONT_PIC(Cloyster, 64, 64), + .frontPic = gMonFrontPic_Cloyster, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Cloyster, .frontAnimId = ANIM_V_SHAKE_TWICE, - BACK_PIC(Cloyster, 64, 56), + .backPic = gMonBackPic_Cloyster, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Cloyster), - ICON(Cloyster, 2), + .palette = gMonPalette_Cloyster, + .shinyPalette = gMonShinyPalette_Cloyster, + .iconSprite = gMonIcon_Cloyster, + .iconPalIndex = 2, FOOTPRINT(Cloyster) - LEARNSETS(Cloyster), + .levelUpLearnset = sCloysterLevelUpLearnset, + .teachableLearnset = sCloysterTeachableLearnset, }, #endif //P_FAMILY_SHELLDER @@ -7182,18 +9041,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Gastly, 64, 48), + .frontPic = gMonFrontPic_Gastly, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Gastly, .frontAnimId = ANIM_SHRINK_GROW, .enemyMonElevation = 13, - BACK_PIC(Gastly, 64, 56), + .backPic = gMonBackPic_Gastly, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Gastly), - ICON(Gastly, 2), + .palette = gMonPalette_Gastly, + .shinyPalette = gMonShinyPalette_Gastly, + .iconSprite = gMonIcon_Gastly, + .iconPalIndex = 2, FOOTPRINT(Gastly) - LEARNSETS(Gastly), + .levelUpLearnset = sGastlyLevelUpLearnset, + .teachableLearnset = sGastlyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_HAUNTER}), }, @@ -7231,19 +9095,24 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 293, .trainerOffset = 2, - FRONT_PIC(Haunter, 64, 48), + .frontPic = gMonFrontPic_Haunter, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Haunter, .frontAnimId = ANIM_FLICKER_INCREASING, .frontAnimDelay = 23, .enemyMonElevation = 14, - BACK_PIC(Haunter, 64, 56), + .backPic = gMonBackPic_Haunter, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Haunter), - ICON(Haunter, 2), + .palette = gMonPalette_Haunter, + .shinyPalette = gMonShinyPalette_Haunter, + .iconSprite = gMonIcon_Haunter, + .iconPalIndex = 2, FOOTPRINT(Haunter) - LEARNSETS(Haunter), + .levelUpLearnset = sHaunterLevelUpLearnset, + .teachableLearnset = sHaunterTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GENGAR}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GENGAR}), }, @@ -7254,33 +9123,16 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #define GENGAR_ABILITIES {ABILITY_LEVITATE, ABILITY_NONE} #endif -#define GENGAR_MISC_INFO \ - .types = MON_TYPES(TYPE_GHOST, TYPE_POISON), \ - .catchRate = 45, \ - .evYield_SpAttack = 3, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS),\ - .bodyColor = BODY_COLOR_PURPLE, \ - .speciesName = _("Gengar"), \ - .natDexNum = NATIONAL_DEX_GENGAR, \ - .categoryName = _("Shadow"), \ - FOOTPRINT(Gengar) \ - LEARNSETS(Gengar), \ - .formSpeciesIdTable = sGengarFormSpeciesIdTable,\ - .formChangeTable = sGengarFormChangeTable - [SPECIES_GENGAR] = { - GENGAR_MISC_INFO, .baseHP = 60, .baseAttack = 65, .baseDefense = 60, .baseSpeed = 110, .baseSpAttack = 130, .baseSpDefense = 75, + .types = MON_TYPES(TYPE_GHOST, TYPE_POISON), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 250, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -7288,7 +9140,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #else .expYield = 190, #endif + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), .abilities = GENGAR_ABILITIES, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Gengar"), + .natDexNum = NATIONAL_DEX_GENGAR, + .categoryName = _("Shadow"), .height = 15, .weight = 405, .description = COMPOUND_STRING( @@ -7300,30 +9162,49 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 302, .trainerOffset = 2, - FRONT_PIC(Gengar, 56, 56), + .frontPic = gMonFrontPic_Gengar, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Gengar, .frontAnimId = ANIM_GROW_IN_STAGES, - BACK_PIC(Gengar, 64, 48), + .backPic = gMonBackPic_Gengar, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Gengar), - ICON(Gengar, 2), + .palette = gMonPalette_Gengar, + .shinyPalette = gMonShinyPalette_Gengar, + .iconSprite = gMonIcon_Gengar, + .iconPalIndex = 2, + FOOTPRINT(Gengar) + .levelUpLearnset = sGengarLevelUpLearnset, + .teachableLearnset = sGengarTeachableLearnset, + .formSpeciesIdTable = sGengarFormSpeciesIdTable, + .formChangeTable = sGengarFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_GENGAR_MEGA] = { - GENGAR_MISC_INFO, .baseHP = 60, .baseAttack = 65, .baseDefense = 80, .baseSpeed = 130, .baseSpAttack = 170, .baseSpDefense = 95, + .types = MON_TYPES(TYPE_GHOST, TYPE_POISON), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), .abilities = { ABILITY_SHADOW_TAG, ABILITY_SHADOW_TAG, ABILITY_SHADOW_TAG }, - .isMegaEvolution = TRUE, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Gengar"), + .natDexNum = NATIONAL_DEX_GENGAR, + .categoryName = _("Shadow"), .height = 14, .weight = 405, .description = COMPOUND_STRING( @@ -7335,31 +9216,51 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 302, .trainerOffset = 2, - FRONT_PIC(GengarMega, 64, 64), + .frontPic = gMonFrontPic_GengarMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 7, .frontAnimFrames = sAnims_GengarMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(GengarMega, 64, 64), + .backPic = gMonBackPic_GengarMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(GengarMega), - ICON(GengarMega, 2), + .palette = gMonPalette_GengarMega, + .shinyPalette = gMonShinyPalette_GengarMega, + .iconSprite = gMonIcon_GengarMega, + .iconPalIndex = 2, + FOOTPRINT(Gengar) + .isMegaEvolution = TRUE, + .levelUpLearnset = sGengarLevelUpLearnset, + .teachableLearnset = sGengarTeachableLearnset, + .formSpeciesIdTable = sGengarFormSpeciesIdTable, + .formChangeTable = sGengarFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #if P_GIGANTAMAX_FORMS [SPECIES_GENGAR_GIGANTAMAX] = { - GENGAR_MISC_INFO, .baseHP = 60, .baseAttack = 65, .baseDefense = 60, .baseSpeed = 110, .baseSpAttack = 130, .baseSpDefense = 75, + .types = MON_TYPES(TYPE_GHOST, TYPE_POISON), + .catchRate = 45, .expYield = 225, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), .abilities = GENGAR_ABILITIES, - .isGigantamax = TRUE, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Gengar"), + .natDexNum = NATIONAL_DEX_GENGAR, + .categoryName = _("Shadow"), .height = 200, .weight = 0, .description = COMPOUND_STRING( @@ -7371,15 +9272,25 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 302, .trainerOffset = 2, - FRONT_PIC(GengarGigantamax, 64, 64), + .frontPic = gMonFrontPic_GengarGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 7, .frontAnimFrames = sAnims_GengarGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(GengarGigantamax, 64, 64), + .backPic = gMonBackPic_GengarGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(GengarGigantamax), - ICON(GengarGigantamax, 2), + .palette = gMonPalette_GengarGigantamax, + .shinyPalette = gMonShinyPalette_GengarGigantamax, + .iconSprite = gMonIcon_GengarGigantamax, + .iconPalIndex = 2, + FOOTPRINT(Gengar) + .isGigantamax = TRUE, + .levelUpLearnset = sGengarLevelUpLearnset, + .teachableLearnset = sGengarTeachableLearnset, + .formSpeciesIdTable = sGengarFormSpeciesIdTable, + .formChangeTable = sGengarFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_GASTLY @@ -7419,53 +9330,51 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 515, .trainerOffset = 14, - FRONT_PIC(Onix, 64, 64), + .frontPic = gMonFrontPic_Onix, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Onix, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Onix, 64, 64), + .backPic = gMonBackPic_Onix, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Onix), - ICON(Onix, 2), + .palette = gMonPalette_Onix, + .shinyPalette = gMonShinyPalette_Onix, + .iconSprite = gMonIcon_Onix, + .iconPalIndex = 2, FOOTPRINT(Onix) - LEARNSETS(Onix), + .levelUpLearnset = sOnixLevelUpLearnset, + .teachableLearnset = sOnixTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}, {EVO_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}), }, #if P_GEN_2_CROSS_EVOS -#define STEELIX_MISC_INFO \ - .types = MON_TYPES(TYPE_STEEL, TYPE_GROUND), \ - .catchRate = 25, \ - .evYield_Defense = 2, \ - .itemRare = ITEM_METAL_COAT, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), \ - .bodyColor = BODY_COLOR_GRAY, \ - .speciesName = _("Steelix"), \ - .natDexNum = NATIONAL_DEX_STEELIX, \ - .categoryName = _("Iron Snake"), \ - FOOTPRINT(Steelix) \ - LEARNSETS(Steelix), \ - .formSpeciesIdTable = sSteelixFormSpeciesIdTable, \ - .formChangeTable = sSteelixFormChangeTable - [SPECIES_STEELIX] = { - STEELIX_MISC_INFO, .baseHP = 75, .baseAttack = 85, .baseDefense = 200, .baseSpeed = 30, .baseSpAttack = 55, .baseSpDefense = 65, + .types = MON_TYPES(TYPE_STEEL, TYPE_GROUND), + .catchRate = 25, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 179 : 196, + .evYield_Defense = 2, + .itemRare = ITEM_METAL_COAT, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), .abilities = { ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Steelix"), .cryId = CRY_STEELIX, + .natDexNum = NATIONAL_DEX_STEELIX, + .categoryName = _("Iron Snake"), .height = 92, .weight = 4000, .description = COMPOUND_STRING( @@ -7477,33 +9386,56 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 516, .trainerOffset = 13, - FRONT_PIC(Steelix, 64, 64), - FRONT_PIC_FEMALE(Steelix, 64, 64), + .frontPic = gMonFrontPic_Steelix, + .frontPicFemale = gMonFrontPic_SteelixF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Steelix, .frontAnimId = ANIM_V_SHAKE, .frontAnimDelay = 45, - BACK_PIC(Steelix, 64, 64), - BACK_PIC_FEMALE(Steelix, 64, 64), + .backPic = gMonBackPic_Steelix, + .backPicFemale = gMonBackPic_SteelixF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Steelix), - ICON(Steelix, 0), + .palette = gMonPalette_Steelix, + .shinyPalette = gMonShinyPalette_Steelix, + .iconSprite = gMonIcon_Steelix, + .iconPalIndex = 0, + FOOTPRINT(Steelix) + .levelUpLearnset = sSteelixLevelUpLearnset, + .teachableLearnset = sSteelixTeachableLearnset, + .formSpeciesIdTable = sSteelixFormSpeciesIdTable, + .formChangeTable = sSteelixFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_STEELIX_MEGA] = { - STEELIX_MISC_INFO, .baseHP = 75, .baseAttack = 125, .baseDefense = 230, .baseSpeed = 30, .baseSpAttack = 55, .baseSpDefense = 95, + .types = MON_TYPES(TYPE_STEEL, TYPE_GROUND), + .catchRate = 25, .expYield = 214, + .evYield_Defense = 2, + .itemRare = ITEM_METAL_COAT, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), .abilities = { ABILITY_SAND_FORCE, ABILITY_SAND_FORCE, ABILITY_SAND_FORCE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Steelix"), .cryId = CRY_STEELIX_MEGA, + .natDexNum = NATIONAL_DEX_STEELIX, + .categoryName = _("Iron Snake"), .height = 105, .weight = 7400, .description = COMPOUND_STRING( @@ -7515,16 +9447,25 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 516, .trainerOffset = 13, - FRONT_PIC(SteelixMega, 64, 64), + .frontPic = gMonFrontPic_SteelixMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_SteelixMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SteelixMega, 64, 64), + .backPic = gMonBackPic_SteelixMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(SteelixMega), - ICON(SteelixMega, 0), + .palette = gMonPalette_SteelixMega, + .shinyPalette = gMonShinyPalette_SteelixMega, + .iconSprite = gMonIcon_SteelixMega, + .iconPalIndex = 0, + FOOTPRINT(Steelix) .isMegaEvolution = TRUE, + .levelUpLearnset = sSteelixLevelUpLearnset, + .teachableLearnset = sSteelixTeachableLearnset, + .formSpeciesIdTable = sSteelixFormSpeciesIdTable, + .formChangeTable = sSteelixFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_GEN_2_CROSS_EVOS @@ -7565,18 +9506,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 6, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Drowzee, 48, 56), + .frontPic = gMonFrontPic_Drowzee, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Drowzee, .frontAnimId = ANIM_V_STRETCH, .frontAnimDelay = 48, - BACK_PIC(Drowzee, 56, 48), + .backPic = gMonBackPic_Drowzee, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Drowzee), - ICON(Drowzee, 2), + .palette = gMonPalette_Drowzee, + .shinyPalette = gMonShinyPalette_Drowzee, + .iconSprite = gMonIcon_Drowzee, + .iconPalIndex = 2, FOOTPRINT(Drowzee) - LEARNSETS(Drowzee), + .levelUpLearnset = sDrowzeeLevelUpLearnset, + .teachableLearnset = sDrowzeeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_HYPNO}), }, @@ -7614,20 +9560,27 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 3, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Hypno, 64, 64), - FRONT_PIC_FEMALE(Hypno, 64, 64), + .frontPic = gMonFrontPic_Hypno, + .frontPicFemale = gMonFrontPic_HypnoF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Hypno, .frontAnimId = ANIM_GROW_VIBRATE, .frontAnimDelay = 40, - BACK_PIC(Hypno, 64, 56), - BACK_PIC_FEMALE(Hypno, 64, 56), + .backPic = gMonBackPic_Hypno, + .backPicFemale = gMonBackPic_HypnoF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Hypno), - ICON(Hypno, 2), + .palette = gMonPalette_Hypno, + .shinyPalette = gMonShinyPalette_Hypno, + .iconSprite = gMonIcon_Hypno, + .iconPalIndex = 2, FOOTPRINT(Hypno) - LEARNSETS(Hypno), + .levelUpLearnset = sHypnoLevelUpLearnset, + .teachableLearnset = sHypnoTeachableLearnset, }, #endif //P_FAMILY_DROWZEE @@ -7666,51 +9619,49 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Krabby, 64, 48), + .frontPic = gMonFrontPic_Krabby, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Krabby, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(Krabby, 56, 40), + .backPic = gMonBackPic_Krabby, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 15, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Krabby), - ICON(Krabby, 0), + .palette = gMonPalette_Krabby, + .shinyPalette = gMonShinyPalette_Krabby, + .iconSprite = gMonIcon_Krabby, + .iconPalIndex = 0, FOOTPRINT(Krabby) - LEARNSETS(Krabby), + .levelUpLearnset = sKrabbyLevelUpLearnset, + .teachableLearnset = sKrabbyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_KINGLER}), }, -#define KINGLER_MISC_INFO \ - .baseHP = 55, \ - .baseAttack = 130, \ - .baseDefense = 115, \ - .baseSpeed = 75, \ - .baseSpAttack = 50, \ - .baseSpDefense = 50, \ - .types = MON_TYPES(TYPE_WATER), \ - .catchRate = 60, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 166 : 206, \ - .evYield_Attack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_3), \ - .abilities = { ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE },\ - .bodyColor = BODY_COLOR_RED, \ - .noFlip = TRUE, \ - .speciesName = _("Kingler"), \ - .cryId = CRY_KINGLER, \ - .natDexNum = NATIONAL_DEX_KINGLER, \ - .categoryName = _("Pincer"), \ - FOOTPRINT(Kingler) \ - LEARNSETS(Kingler), \ - .formSpeciesIdTable = sKinglerFormSpeciesIdTable, \ - .formChangeTable = sKinglerFormChangeTable - [SPECIES_KINGLER] = { - KINGLER_MISC_INFO, + .baseHP = 55, + .baseAttack = 130, + .baseDefense = 115, + .baseSpeed = 75, + .baseSpAttack = 50, + .baseSpDefense = 50, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 60, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 166 : 206, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_3), + .abilities = { ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_RED, + .noFlip = TRUE, + .speciesName = _("Kingler"), + .cryId = CRY_KINGLER, + .natDexNum = NATIONAL_DEX_KINGLER, + .categoryName = _("Pincer"), .height = 13, .weight = 600, .description = COMPOUND_STRING( @@ -7722,22 +9673,52 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Kingler, 64, 48), + .frontPic = gMonFrontPic_Kingler, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Kingler, .frontAnimId = ANIM_V_SHAKE_TWICE, .frontAnimDelay = 4, - BACK_PIC(Kingler, 64, 56), + .backPic = gMonBackPic_Kingler, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Kingler), - ICON(Kingler, 0), + .palette = gMonPalette_Kingler, + .shinyPalette = gMonShinyPalette_Kingler, + .iconSprite = gMonIcon_Kingler, + .iconPalIndex = 0, + FOOTPRINT(Kingler) + .levelUpLearnset = sKinglerLevelUpLearnset, + .teachableLearnset = sKinglerTeachableLearnset, + .formSpeciesIdTable = sKinglerFormSpeciesIdTable, + .formChangeTable = sKinglerFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_KINGLER_GIGANTAMAX] = { - KINGLER_MISC_INFO, + .baseHP = 55, + .baseAttack = 130, + .baseDefense = 115, + .baseSpeed = 75, + .baseSpAttack = 50, + .baseSpDefense = 50, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 60, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 166 : 206, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_3), + .abilities = { ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_RED, + .noFlip = TRUE, + .speciesName = _("Kingler"), + .cryId = CRY_KINGLER, + .natDexNum = NATIONAL_DEX_KINGLER, + .categoryName = _("Pincer"), .height = 190, .weight = 0, .description = COMPOUND_STRING( @@ -7749,52 +9730,30 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(KinglerGigantamax, 64, 64), + .frontPic = gMonFrontPic_KinglerGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_KinglerGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(KinglerGigantamax, 64, 64), + .backPic = gMonBackPic_KinglerGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(KinglerGigantamax), - ICON(KinglerGigantamax, 0), + .palette = gMonPalette_KinglerGigantamax, + .shinyPalette = gMonShinyPalette_KinglerGigantamax, + .iconSprite = gMonIcon_KinglerGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Kingler) .isGigantamax = TRUE, + .levelUpLearnset = sKinglerLevelUpLearnset, + .teachableLearnset = sKinglerTeachableLearnset, + .formSpeciesIdTable = sKinglerFormSpeciesIdTable, + .formChangeTable = sKinglerFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_KRABBY #if P_FAMILY_VOLTORB -#define VOLTORB_FAMILY_MISC_INFO \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), \ - .abilities = { ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH }, \ - .bodyColor = BODY_COLOR_RED - -#define VOLTORB_MISC_INFO \ - .baseHP = 40, \ - .baseAttack = 30, \ - .baseDefense = 50, \ - .baseSpeed = 100, \ - .baseSpAttack = 55, \ - .baseSpDefense = 55, \ - .catchRate = 190, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 66 : 103, \ - .evYield_Speed = 1, \ - .speciesName = _("Voltorb"), \ - .cryId = CRY_VOLTORB, \ - .natDexNum = NATIONAL_DEX_VOLTORB, \ - .height = 5, \ - .pokemonScale = 364, \ - .pokemonOffset = -8, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Voltorb) \ - .formSpeciesIdTable = sVoltorbFormSpeciesIdTable, \ - VOLTORB_FAMILY_MISC_INFO - #if P_UPDATED_EXP_YIELDS >= GEN_7 #define ELECTRODE_EXP_YIELD 172 #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -7803,123 +9762,221 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #define ELECTRODE_EXP_YIELD 150 #endif -#define ELECTRODE_MISC_INFO \ - .baseHP = 60, \ - .baseAttack = 50, \ - .baseDefense = 70, \ - .baseSpAttack = 80, \ - .baseSpDefense = 80, \ - .baseSpeed = P_UPDATED_STATS >= GEN_7 ? 150 : 140, \ - .catchRate = 60, \ - .expYield = ELECTRODE_EXP_YIELD, \ - .evYield_Speed = 2, \ - .speciesName = _("Electrode"), \ - .cryId = CRY_ELECTRODE, \ - .natDexNum = NATIONAL_DEX_ELECTRODE, \ - .height = 12, \ - .pokemonScale = 256, \ - .pokemonOffset = 0, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Electrode) \ - .formSpeciesIdTable = sElectrodeFormSpeciesIdTable, \ - VOLTORB_FAMILY_MISC_INFO - [SPECIES_VOLTORB] = { - VOLTORB_MISC_INFO, + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 50, + .baseSpeed = 100, + .baseSpAttack = 55, + .baseSpDefense = 55, .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 66 : 103, + .evYield_Speed = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + .abilities = { ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Voltorb"), + .cryId = CRY_VOLTORB, + .natDexNum = NATIONAL_DEX_VOLTORB, .categoryName = _("Ball"), + .height = 5, .weight = 104, .description = COMPOUND_STRING( "It bears an uncanny and unexplained\n" "resemblance to a Poké Ball. Because it\n" "explodes at the slightest shock, even\n" "veteran Trainers treat it with caution."), - FRONT_PIC(Voltorb, 32, 40), + .pokemonScale = 364, + .pokemonOffset = -8, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Voltorb, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Voltorb, .frontAnimId = ANIM_SWING_CONCAVE, - BACK_PIC(Voltorb, 48, 40), + .backPic = gMonBackPic_Voltorb, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 14, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Voltorb), - ICON(Voltorb, 0), - LEARNSETS(Voltorb), + .palette = gMonPalette_Voltorb, + .shinyPalette = gMonShinyPalette_Voltorb, + .iconSprite = gMonIcon_Voltorb, + .iconPalIndex = 0, + FOOTPRINT(Voltorb) + .levelUpLearnset = sVoltorbLevelUpLearnset, + .teachableLearnset = sVoltorbTeachableLearnset, + .formSpeciesIdTable = sVoltorbFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ELECTRODE}), }, [SPECIES_ELECTRODE] = { - ELECTRODE_MISC_INFO, + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 70, + .baseSpeed = P_UPDATED_STATS >= GEN_7 ? 150 : 140, + .baseSpAttack = 80, + .baseSpDefense = 80, .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 60, + .expYield = ELECTRODE_EXP_YIELD, + .evYield_Speed = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + .abilities = { ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Electrode"), + .cryId = CRY_ELECTRODE, + .natDexNum = NATIONAL_DEX_ELECTRODE, .categoryName = _("Ball"), + .height = 12, .weight = 666, .description = COMPOUND_STRING( "They appear in great numbers at electric\n" "power plants. Because they feed on\n" "electricity, they cause massive and\n" "chaotic blackouts in nearby cities."), - FRONT_PIC(Electrode, 48, 48), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Electrode, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Electrode, .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_SLOW, - BACK_PIC(Electrode, 64, 40), + .backPic = gMonBackPic_Electrode, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Electrode), - ICON(Electrode, 0), - LEARNSETS(Electrode), + .palette = gMonPalette_Electrode, + .shinyPalette = gMonShinyPalette_Electrode, + .iconSprite = gMonIcon_Electrode, + .iconPalIndex = 0, + FOOTPRINT(Electrode) + .levelUpLearnset = sElectrodeLevelUpLearnset, + .teachableLearnset = sElectrodeTeachableLearnset, + .formSpeciesIdTable = sElectrodeFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_VOLTORB_HISUIAN] = { - VOLTORB_MISC_INFO, + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 50, + .baseSpeed = 100, + .baseSpAttack = 55, + .baseSpDefense = 55, .types = MON_TYPES(TYPE_ELECTRIC, TYPE_GRASS), + .catchRate = 190, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 66 : 103, + .evYield_Speed = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + .abilities = { ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Voltorb"), + .cryId = CRY_VOLTORB, + .natDexNum = NATIONAL_DEX_VOLTORB, .categoryName = _("Sphere"), + .height = 5, .weight = 130, .description = COMPOUND_STRING( "It esembles an ancient Poké Ball design.\n" "When excited, it discharges the electric\n" "current it has stored in its belly, then\n" "lets out a great, uproarious laugh."), - FRONT_PIC(VoltorbHisuian, 32, 32), + .pokemonScale = 364, + .pokemonOffset = -8, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_VoltorbHisuian, + .frontPicSize = MON_COORDS_SIZE(32, 32), .frontPicYOffset = 17, .frontAnimFrames = sAnims_VoltorbHisuian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(VoltorbHisuian, 48, 32), + .backPic = gMonBackPic_VoltorbHisuian, + .backPicSize = MON_COORDS_SIZE(48, 32), .backPicYOffset = 10, //.backAnimId = BACK_ANIM_NONE, - PALETTES(VoltorbHisuian), - ICON(VoltorbHisuian, 0), - LEARNSETS(VoltorbHisuian), + .palette = gMonPalette_VoltorbHisuian, + .shinyPalette = gMonShinyPalette_VoltorbHisuian, + .iconSprite = gMonIcon_VoltorbHisuian, + .iconPalIndex = 0, + FOOTPRINT(Voltorb) .isHisuianForm = TRUE, + .levelUpLearnset = sVoltorbHisuianLevelUpLearnset, + .teachableLearnset = sVoltorbHisuianTeachableLearnset, + .formSpeciesIdTable = sVoltorbFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_ELECTRODE_HISUIAN}), }, [SPECIES_ELECTRODE_HISUIAN] = { - ELECTRODE_MISC_INFO, + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 70, + .baseSpeed = P_UPDATED_STATS >= GEN_7 ? 150 : 140, + .baseSpAttack = 80, + .baseSpDefense = 80, .types = MON_TYPES(TYPE_ELECTRIC, TYPE_GRASS), + .catchRate = 60, + .expYield = ELECTRODE_EXP_YIELD, + .evYield_Speed = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + .abilities = { ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Electrode"), + .cryId = CRY_ELECTRODE, + .natDexNum = NATIONAL_DEX_ELECTRODE, .categoryName = _("Sphere"), + .height = 12, .weight = 710, .description = COMPOUND_STRING( "The tissue on the surface of its body is\n" "similar in composition to an Apricorn.\n" "When irritated, it lets loose an electric\n" "current equal to 20 lightning bolts."), - FRONT_PIC(ElectrodeHisuian, 48, 48), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_ElectrodeHisuian, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_ElectrodeHisuian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ElectrodeHisuian, 64, 40), + .backPic = gMonBackPic_ElectrodeHisuian, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ElectrodeHisuian), - ICON(ElectrodeHisuian, 1), - LEARNSETS(ElectrodeHisuian), + .palette = gMonPalette_ElectrodeHisuian, + .shinyPalette = gMonShinyPalette_ElectrodeHisuian, + .iconSprite = gMonIcon_ElectrodeHisuian, + .iconPalIndex = 1, + FOOTPRINT(Electrode) .isHisuianForm = TRUE, + .levelUpLearnset = sElectrodeHisuianLevelUpLearnset, + .teachableLearnset = sElectrodeHisuianTeachableLearnset, + .formSpeciesIdTable = sElectrodeFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_VOLTORB @@ -7960,17 +10017,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = -4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Exeggcute, 56, 40), + .frontPic = gMonFrontPic_Exeggcute, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Exeggcute, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(Exeggcute, 64, 32), + .backPic = gMonBackPic_Exeggcute, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 18, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Exeggcute), - ICON(Exeggcute, 0), + .palette = gMonPalette_Exeggcute, + .shinyPalette = gMonShinyPalette_Exeggcute, + .iconSprite = gMonIcon_Exeggcute, + .iconPalIndex = 0, FOOTPRINT(Exeggcute) - LEARNSETS(Exeggcute), + .levelUpLearnset = sExeggcuteLevelUpLearnset, + .teachableLearnset = sExeggcuteTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}, {EVO_NONE, 0, SPECIES_EXEGGUTOR_ALOLAN}), }, @@ -7983,28 +10045,10 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #define EXEGGUTOR_EXP_YIELD 212 #endif -#define EXEGGUTOR_MISC_INFO \ - .catchRate = 45, \ - .expYield = EXEGGUTOR_EXP_YIELD, \ - .evYield_SpAttack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS), \ - .bodyColor = BODY_COLOR_YELLOW, \ - .speciesName = _("Exeggutor"), \ - .cryId = CRY_EXEGGUTOR, \ - .natDexNum = NATIONAL_DEX_EXEGGUTOR, \ - .categoryName = _("Coconut"), \ - FOOTPRINT(Exeggutor) \ - .formSpeciesIdTable = sExeggutorFormSpeciesIdTable - #define EXEGGUTOR_SP_DEF (P_UPDATED_STATS >= GEN_7 ? 75 : 65) [SPECIES_EXEGGUTOR] = { - EXEGGUTOR_MISC_INFO, .baseHP = 95, .baseAttack = 95, .baseDefense = 85, @@ -8012,7 +10056,20 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 125, .baseSpDefense = EXEGGUTOR_SP_DEF, .types = MON_TYPES(TYPE_GRASS, TYPE_PSYCHIC), + .catchRate = 45, + .expYield = EXEGGUTOR_EXP_YIELD, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS), .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_HARVEST }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Exeggutor"), + .cryId = CRY_EXEGGUTOR, + .natDexNum = NATIONAL_DEX_EXEGGUTOR, + .categoryName = _("Coconut"), .height = 20, .weight = 1200, .description = COMPOUND_STRING( @@ -8024,22 +10081,28 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 309, .trainerOffset = 5, - FRONT_PIC(Exeggutor, 64, 64), + .frontPic = gMonFrontPic_Exeggutor, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Exeggutor, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(Exeggutor, 64, 48), + .backPic = gMonBackPic_Exeggutor, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Exeggutor), - ICON(Exeggutor, 1), - LEARNSETS(Exeggutor), + .palette = gMonPalette_Exeggutor, + .shinyPalette = gMonShinyPalette_Exeggutor, + .iconSprite = gMonIcon_Exeggutor, + .iconPalIndex = 1, + FOOTPRINT(Exeggutor) + .levelUpLearnset = sExeggutorLevelUpLearnset, + .teachableLearnset = sExeggutorTeachableLearnset, + .formSpeciesIdTable = sExeggutorFormSpeciesIdTable, }, #if P_ALOLAN_FORMS [SPECIES_EXEGGUTOR_ALOLAN] = { - EXEGGUTOR_MISC_INFO, .baseHP = 95, .baseAttack = 105, .baseDefense = 85, @@ -8047,7 +10110,20 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 125, .baseSpDefense = EXEGGUTOR_SP_DEF, .types = MON_TYPES(TYPE_GRASS, TYPE_DRAGON), + .catchRate = 45, + .expYield = EXEGGUTOR_EXP_YIELD, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS), .abilities = { ABILITY_FRISK, ABILITY_NONE, ABILITY_HARVEST }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Exeggutor"), + .cryId = CRY_EXEGGUTOR, + .natDexNum = NATIONAL_DEX_EXEGGUTOR, + .categoryName = _("Coconut"), .height = 109, .weight = 4156, .description = COMPOUND_STRING( @@ -8059,17 +10135,24 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 309, .trainerOffset = 5, - FRONT_PIC(ExeggutorAlolan, 64, 64), + .frontPic = gMonFrontPic_ExeggutorAlolan, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_ExeggutorAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ExeggutorAlolan, 64, 56), + .backPic = gMonBackPic_ExeggutorAlolan, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ExeggutorAlolan), - ICON(ExeggutorAlolan, 1), - LEARNSETS(ExeggutorAlolan), + .palette = gMonPalette_ExeggutorAlolan, + .shinyPalette = gMonShinyPalette_ExeggutorAlolan, + .iconSprite = gMonIcon_ExeggutorAlolan, + .iconPalIndex = 1, + FOOTPRINT(Exeggutor) .isAlolanForm = TRUE, + .levelUpLearnset = sExeggutorAlolanLevelUpLearnset, + .teachableLearnset = sExeggutorAlolanTeachableLearnset, + .formSpeciesIdTable = sExeggutorFormSpeciesIdTable, }, #endif //P_ALOLAN_FORMS #endif //P_FAMILY_EXEGGCUTE @@ -8110,98 +10193,135 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 21, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cubone, 56, 40), + .frontPic = gMonFrontPic_Cubone, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Cubone, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .frontAnimDelay = 30, - BACK_PIC(Cubone, 56, 48), + .backPic = gMonBackPic_Cubone, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Cubone), - ICON(Cubone, 2), + .palette = gMonPalette_Cubone, + .shinyPalette = gMonShinyPalette_Cubone, + .iconSprite = gMonIcon_Cubone, + .iconPalIndex = 2, FOOTPRINT(Cubone) - LEARNSETS(Cubone), + .levelUpLearnset = sCuboneLevelUpLearnset, + .teachableLearnset = sCuboneTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_MAROWAK}, {EVO_NONE, 0, SPECIES_MAROWAK_ALOLAN}), }, -#define MAROWAK_MISC_INFO \ - .baseHP = 60, \ - .baseAttack = 80, \ - .baseDefense = 110, \ - .baseSpeed = 45, \ - .baseSpAttack = 50, \ - .baseSpDefense = 80, \ - .catchRate = 75, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 149 : 124,\ - .evYield_Defense = 2, \ - .itemRare = ITEM_THICK_CLUB, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), \ - .speciesName = _("Marowak"), \ - .cryId = CRY_MAROWAK, \ - .natDexNum = NATIONAL_DEX_MAROWAK, \ - .categoryName = _("Bone Keeper"), \ - .height = 10, \ - .pokemonScale = 293, \ - .pokemonOffset = 12, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Marowak) \ - .formSpeciesIdTable = sMarowakFormSpeciesIdTable - [SPECIES_MAROWAK] = { - MAROWAK_MISC_INFO, + .baseHP = 60, + .baseAttack = 80, + .baseDefense = 110, + .baseSpeed = 45, + .baseSpAttack = 50, + .baseSpDefense = 80, .types = MON_TYPES(TYPE_GROUND), + .catchRate = 75, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 149 : 124, + .evYield_Defense = 2, + .itemRare = ITEM_THICK_CLUB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), .abilities = { ABILITY_ROCK_HEAD, ABILITY_LIGHTNING_ROD, ABILITY_BATTLE_ARMOR }, .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Marowak"), + .cryId = CRY_MAROWAK, + .natDexNum = NATIONAL_DEX_MAROWAK, + .categoryName = _("Bone Keeper"), + .height = 10, .weight = 450, .description = COMPOUND_STRING( "A Marowak is the evolved form of a Cubone\n" "that has grown tough by overcoming the\n" "grief of losing its mother. Its tempered\n" "and hardened spirit is not easily broken."), - FRONT_PIC(Marowak, 56, 64), + .pokemonScale = 293, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Marowak, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Marowak, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES, - BACK_PIC(Marowak, 48, 56), + .backPic = gMonBackPic_Marowak, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Marowak), - ICON(Marowak, 2), - LEARNSETS(Marowak), + .palette = gMonPalette_Marowak, + .shinyPalette = gMonShinyPalette_Marowak, + .iconSprite = gMonIcon_Marowak, + .iconPalIndex = 2, + FOOTPRINT(Marowak) + .levelUpLearnset = sMarowakLevelUpLearnset, + .teachableLearnset = sMarowakTeachableLearnset, + .formSpeciesIdTable = sMarowakFormSpeciesIdTable, }, #if P_ALOLAN_FORMS [SPECIES_MAROWAK_ALOLAN] = { - MAROWAK_MISC_INFO, + .baseHP = 60, + .baseAttack = 80, + .baseDefense = 110, + .baseSpeed = 45, + .baseSpAttack = 50, + .baseSpDefense = 80, .types = MON_TYPES(TYPE_FIRE, TYPE_GHOST), + .catchRate = 75, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 149 : 124, + .evYield_Defense = 2, + .itemRare = ITEM_THICK_CLUB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), .abilities = { ABILITY_CURSED_BODY, ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD }, .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Marowak"), + .cryId = CRY_MAROWAK, + .natDexNum = NATIONAL_DEX_MAROWAK, + .categoryName = _("Bone Keeper"), + .height = 10, .weight = 340, .description = COMPOUND_STRING( "The cursed flames that light up the bone\n" "carried by this Pokémon are said\n" "to cause both mental and physical\n" "pain that will never fade."), - FRONT_PIC(MarowakAlolan, 64, 64), + .pokemonScale = 293, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_MarowakAlolan, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_MarowakAlolan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(MarowakAlolan, 56, 56), + .backPic = gMonBackPic_MarowakAlolan, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(MarowakAlolan), - ICON(MarowakAlolan, 1), - LEARNSETS(MarowakAlolan), + .palette = gMonPalette_MarowakAlolan, + .shinyPalette = gMonShinyPalette_MarowakAlolan, + .iconSprite = gMonIcon_MarowakAlolan, + .iconPalIndex = 1, + FOOTPRINT(Marowak) .isAlolanForm = TRUE, + .levelUpLearnset = sMarowakAlolanLevelUpLearnset, + .teachableLearnset = sMarowakAlolanTeachableLearnset, + .formSpeciesIdTable = sMarowakFormSpeciesIdTable, }, #endif //P_ALOLAN_FORMS #endif //P_FAMILY_CUBONE @@ -8242,17 +10362,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 9, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Tyrogue, 40, 48), + .frontPic = gMonFrontPic_Tyrogue, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Tyrogue, .frontAnimId = ANIM_BACK_AND_LUNGE, - BACK_PIC(Tyrogue, 48, 48), + .backPic = gMonBackPic_Tyrogue, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Tyrogue), - ICON(Tyrogue, 2), + .palette = gMonPalette_Tyrogue, + .shinyPalette = gMonShinyPalette_Tyrogue, + .iconSprite = gMonIcon_Tyrogue, + .iconPalIndex = 2, FOOTPRINT(Tyrogue) - LEARNSETS(Tyrogue), + .levelUpLearnset = sTyrogueLevelUpLearnset, + .teachableLearnset = sTyrogueTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN}, {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE}, {EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}), @@ -8293,17 +10418,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 3, .trainerScale = 259, .trainerOffset = 1, - FRONT_PIC(Hitmonlee, 64, 64), + .frontPic = gMonFrontPic_Hitmonlee, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Hitmonlee, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(Hitmonlee, 64, 56), + .backPic = gMonBackPic_Hitmonlee, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Hitmonlee), - ICON(Hitmonlee, 2), + .palette = gMonPalette_Hitmonlee, + .shinyPalette = gMonShinyPalette_Hitmonlee, + .iconSprite = gMonIcon_Hitmonlee, + .iconPalIndex = 2, FOOTPRINT(Hitmonlee) - LEARNSETS(Hitmonlee), + .levelUpLearnset = sHitmonleeLevelUpLearnset, + .teachableLearnset = sHitmonleeTeachableLearnset, }, [SPECIES_HITMONCHAN] = @@ -8340,17 +10470,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 277, .trainerOffset = 2, - FRONT_PIC(Hitmonchan, 48, 64), + .frontPic = gMonFrontPic_Hitmonchan, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Hitmonchan, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Hitmonchan, 56, 56), + .backPic = gMonBackPic_Hitmonchan, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Hitmonchan), - ICON(Hitmonchan, 2), + .palette = gMonPalette_Hitmonchan, + .shinyPalette = gMonShinyPalette_Hitmonchan, + .iconSprite = gMonIcon_Hitmonchan, + .iconPalIndex = 2, FOOTPRINT(Hitmonchan) - LEARNSETS(Hitmonchan), + .levelUpLearnset = sHitmonchanLevelUpLearnset, + .teachableLearnset = sHitmonchanTeachableLearnset, }, #if P_GEN_2_CROSS_EVOS @@ -8388,17 +10523,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Hitmontop, 64, 56), + .frontPic = gMonFrontPic_Hitmontop, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Hitmontop, .frontAnimId = ANIM_SWING_CONCAVE, - BACK_PIC(Hitmontop, 64, 56), + .backPic = gMonBackPic_Hitmontop, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - PALETTES(Hitmontop), - ICON(Hitmontop, 2), + .palette = gMonPalette_Hitmontop, + .shinyPalette = gMonShinyPalette_Hitmontop, + .iconSprite = gMonIcon_Hitmontop, + .iconPalIndex = 2, FOOTPRINT(Hitmontop) - LEARNSETS(Hitmontop), + .levelUpLearnset = sHitmontopLevelUpLearnset, + .teachableLearnset = sHitmontopTeachableLearnset, }, #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_HITMONS @@ -8439,17 +10579,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Lickitung, 64, 56), + .frontPic = gMonFrontPic_Lickitung, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Lickitung, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Lickitung, 64, 40), + .backPic = gMonBackPic_Lickitung, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Lickitung), - ICON(Lickitung, 0), + .palette = gMonPalette_Lickitung, + .shinyPalette = gMonShinyPalette_Lickitung, + .iconSprite = gMonIcon_Lickitung, + .iconPalIndex = 0, FOOTPRINT(Lickitung) - LEARNSETS(Lickitung), + .levelUpLearnset = sLickitungLevelUpLearnset, + .teachableLearnset = sLickitungTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_ROLLOUT, SPECIES_LICKILICKY}), }, @@ -8489,17 +10634,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 290, .trainerOffset = 1, - FRONT_PIC(Lickilicky, 64, 64), + .frontPic = gMonFrontPic_Lickilicky, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Lickilicky, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Lickilicky, 64, 64), + .backPic = gMonBackPic_Lickilicky, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Lickilicky), - ICON(Lickilicky, 1), + .palette = gMonPalette_Lickilicky, + .shinyPalette = gMonShinyPalette_Lickilicky, + .iconSprite = gMonIcon_Lickilicky, + .iconPalIndex = 1, FOOTPRINT(Lickilicky) - LEARNSETS(Lickilicky), + .levelUpLearnset = sLickilickyLevelUpLearnset, + .teachableLearnset = sLickilickyTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_LICKITUNG @@ -8523,11 +10673,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - #if P_UPDATED_ABILITIES >= GEN_8 - .abilities = { ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_STENCH }, - #else - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, - #endif + #if P_UPDATED_ABILITIES >= GEN_8 + .abilities = { ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_STENCH }, + #else + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Koffing"), .cryId = CRY_KOFFING, @@ -8544,56 +10694,56 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = -1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Koffing, 56, 48), + .frontPic = gMonFrontPic_Koffing, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Koffing, .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, .enemyMonElevation = 14, - BACK_PIC(Koffing, 64, 64), + .backPic = gMonBackPic_Koffing, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_GROW, - PALETTES(Koffing), - ICON(Koffing, 2), + .palette = gMonPalette_Koffing, + .shinyPalette = gMonShinyPalette_Koffing, + .iconSprite = gMonIcon_Koffing, + .iconPalIndex = 2, FOOTPRINT(Koffing) - LEARNSETS(Koffing), + .levelUpLearnset = sKoffingLevelUpLearnset, + .teachableLearnset = sKoffingTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_WEEZING}, {EVO_NONE, 0, SPECIES_WEEZING_GALARIAN}), }, -#define WEEZING_MISC_INFO \ - .baseHP = 65, \ - .baseAttack = 90, \ - .baseDefense = 120, \ - .baseSpeed = 60, \ - .baseSpAttack = 85, \ - .baseSpDefense = 70, \ - .catchRate = 60, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 172 : 173, \ - .evYield_Defense = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), \ - .noFlip = TRUE, \ - .speciesName = _("Weezing"), \ - .cryId = CRY_WEEZING, \ - .natDexNum = NATIONAL_DEX_WEEZING, \ - .categoryName = _("Poison Gas"), \ - FOOTPRINT(Weezing) \ - .formSpeciesIdTable = sWeezingFormSpeciesIdTable - [SPECIES_WEEZING] = { - WEEZING_MISC_INFO, + .baseHP = 65, + .baseAttack = 90, + .baseDefense = 120, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 70, .types = MON_TYPES(TYPE_POISON), + .catchRate = 60, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 172 : 173, + .evYield_Defense = 2, .itemRare = ITEM_SMOKE_BALL, - #if P_UPDATED_ABILITIES >= GEN_8 - .abilities = { ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_STENCH }, - #else - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, - #endif + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + #if P_UPDATED_ABILITIES >= GEN_8 + .abilities = { ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_STENCH }, + #else + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + #endif .bodyColor = BODY_COLOR_PURPLE, + .noFlip = TRUE, + .speciesName = _("Weezing"), + .cryId = CRY_WEEZING, + .natDexNum = NATIONAL_DEX_WEEZING, + .categoryName = _("Poison Gas"), .height = 12, .weight = 95, .description = COMPOUND_STRING( @@ -8605,28 +10755,52 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Weezing, 64, 64), + .frontPic = gMonFrontPic_Weezing, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Weezing, .frontAnimId = ANIM_V_SLIDE, .enemyMonElevation = 3, - BACK_PIC(Weezing, 64, 48), + .backPic = gMonBackPic_Weezing, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_GROW, - PALETTES(Weezing), - ICON(Weezing, 2), - LEARNSETS(Weezing), + .palette = gMonPalette_Weezing, + .shinyPalette = gMonShinyPalette_Weezing, + .iconSprite = gMonIcon_Weezing, + .iconPalIndex = 2, + FOOTPRINT(Weezing) + .levelUpLearnset = sWeezingLevelUpLearnset, + .teachableLearnset = sWeezingTeachableLearnset, + .formSpeciesIdTable = sWeezingFormSpeciesIdTable, }, #if P_GALARIAN_FORMS [SPECIES_WEEZING_GALARIAN] = { - WEEZING_MISC_INFO, + .baseHP = 65, + .baseAttack = 90, + .baseDefense = 120, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 70, .types = MON_TYPES(TYPE_POISON, TYPE_FAIRY), + .catchRate = 60, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 172 : 173, + .evYield_Defense = 2, .itemRare = ITEM_MISTY_SEED, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), .abilities = { ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_MISTY_SURGE }, .bodyColor = BODY_COLOR_GRAY, - .isGalarianForm = TRUE, + .noFlip = TRUE, + .speciesName = _("Weezing"), + .cryId = CRY_WEEZING, + .natDexNum = NATIONAL_DEX_WEEZING, + .categoryName = _("Poison Gas"), .height = 30, .weight = 160, .description = COMPOUND_STRING( @@ -8638,17 +10812,25 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(WeezingGalarian, 64, 64), + .frontPic = gMonFrontPic_WeezingGalarian, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_WeezingGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 6, - BACK_PIC(WeezingGalarian, 64, 64), + .backPic = gMonBackPic_WeezingGalarian, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(WeezingGalarian), - ICON(WeezingGalarian, 1), - LEARNSETS(WeezingGalarian), + .palette = gMonPalette_WeezingGalarian, + .shinyPalette = gMonShinyPalette_WeezingGalarian, + .iconSprite = gMonIcon_WeezingGalarian, + .iconPalIndex = 1, + FOOTPRINT(Weezing) + .isGalarianForm = TRUE, + .levelUpLearnset = sWeezingGalarianLevelUpLearnset, + .teachableLearnset = sWeezingGalarianTeachableLearnset, + .formSpeciesIdTable = sWeezingFormSpeciesIdTable, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_KOFFING @@ -8688,19 +10870,26 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 6, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Rhyhorn, 56, 40), - FRONT_PIC_FEMALE(Rhyhorn, 56, 40), + .frontPic = gMonFrontPic_Rhyhorn, + .frontPicFemale = gMonFrontPic_RhyhornF, + .frontPicSize = MON_COORDS_SIZE(56, 40), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Rhyhorn, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Rhyhorn, 64, 48), - BACK_PIC_FEMALE(Rhyhorn, 64, 48), + .backPic = gMonBackPic_Rhyhorn, + .backPicFemale = gMonBackPic_RhyhornF, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicSizeFemale = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Rhyhorn), - ICON(Rhyhorn, 1), + .palette = gMonPalette_Rhyhorn, + .shinyPalette = gMonShinyPalette_Rhyhorn, + .iconSprite = gMonIcon_Rhyhorn, + .iconPalIndex = 1, FOOTPRINT(Rhyhorn) - LEARNSETS(Rhyhorn), + .levelUpLearnset = sRhyhornLevelUpLearnset, + .teachableLearnset = sRhyhornTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_RHYDON}), }, @@ -8738,19 +10927,26 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 299, .trainerOffset = 2, - FRONT_PIC(Rhydon, 64, 56), - FRONT_PIC_FEMALE(Rhydon, 64, 56), + .frontPic = gMonFrontPic_Rhydon, + .frontPicFemale = gMonFrontPic_RhydonF, + .frontPicSize = MON_COORDS_SIZE(64, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Rhydon, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Rhydon, 64, 56), - BACK_PIC_FEMALE(Rhydon, 64, 56), + .backPic = gMonBackPic_Rhydon, + .backPicFemale = gMonBackPic_RhydonF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Rhydon), - ICON(Rhydon, 1), + .palette = gMonPalette_Rhydon, + .shinyPalette = gMonShinyPalette_Rhydon, + .iconSprite = gMonIcon_Rhydon, + .iconPalIndex = 1, FOOTPRINT(Rhydon) - LEARNSETS(Rhydon), + .levelUpLearnset = sRhydonLevelUpLearnset, + .teachableLearnset = sRhydonTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}, {EVO_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}), }, @@ -8796,19 +10992,26 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 3, .trainerScale = 369, .trainerOffset = 7, - FRONT_PIC(Rhyperior, 64, 64), - FRONT_PIC_FEMALE(Rhyperior, 64, 64), + .frontPic = gMonFrontPic_Rhyperior, + .frontPicFemale = gMonFrontPic_RhyperiorF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Rhyperior, .frontAnimId = ANIM_V_SHAKE_TWICE, - BACK_PIC(Rhyperior, 64, 64), - BACK_PIC_FEMALE(Rhyperior, 64, 64), + .backPic = gMonBackPic_Rhyperior, + .backPicFemale = gMonBackPic_RhyperiorF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Rhyperior), - ICON(Rhyperior, 0), + .palette = gMonPalette_Rhyperior, + .shinyPalette = gMonShinyPalette_Rhyperior, + .iconSprite = gMonIcon_Rhyperior, + .iconPalIndex = 0, FOOTPRINT(Rhyperior) - LEARNSETS(Rhyperior), + .levelUpLearnset = sRhyperiorLevelUpLearnset, + .teachableLearnset = sRhyperiorTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_RHYHORN @@ -8850,17 +11053,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Happiny, 32, 48), + .frontPic = gMonFrontPic_Happiny, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Happiny, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Happiny, 48, 56), + .backPic = gMonBackPic_Happiny, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Happiny), - ICON(Happiny, 0), + .palette = gMonPalette_Happiny, + .shinyPalette = gMonShinyPalette_Happiny, + .iconSprite = gMonIcon_Happiny, + .iconPalIndex = 0, FOOTPRINT(Happiny) - LEARNSETS(Happiny), + .levelUpLearnset = sHappinyLevelUpLearnset, + .teachableLearnset = sHappinyTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM_HOLD_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY}, {EVO_ITEM_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY}), }, @@ -8901,17 +11109,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Chansey, 56, 48), + .frontPic = gMonFrontPic_Chansey, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Chansey, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Chansey, 64, 48), + .backPic = gMonBackPic_Chansey, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Chansey), - ICON(Chansey, 0), + .palette = gMonPalette_Chansey, + .shinyPalette = gMonShinyPalette_Chansey, + .iconSprite = gMonIcon_Chansey, + .iconPalIndex = 0, FOOTPRINT(Chansey) - LEARNSETS(Chansey), + .levelUpLearnset = sChanseyLevelUpLearnset, + .teachableLearnset = sChanseyTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}), }, @@ -8951,17 +11164,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 4, .trainerScale = 310, .trainerOffset = 3, - FRONT_PIC(Blissey, 56, 56), + .frontPic = gMonFrontPic_Blissey, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Blissey, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Blissey, 64, 32), + .backPic = gMonBackPic_Blissey, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 16, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Blissey), - ICON(Blissey, 0), + .palette = gMonPalette_Blissey, + .shinyPalette = gMonShinyPalette_Blissey, + .iconSprite = gMonIcon_Blissey, + .iconPalIndex = 0, FOOTPRINT(Blissey) - LEARNSETS(Blissey), + .levelUpLearnset = sBlisseyLevelUpLearnset, + .teachableLearnset = sBlisseyTeachableLearnset, }, #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_CHANSEY @@ -9001,17 +11219,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Tangela, 48, 40), + .frontPic = gMonFrontPic_Tangela, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Tangela, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(Tangela, 64, 40), + .backPic = gMonBackPic_Tangela, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Tangela), - ICON(Tangela, 0), + .palette = gMonPalette_Tangela, + .shinyPalette = gMonShinyPalette_Tangela, + .iconSprite = gMonIcon_Tangela, + .iconPalIndex = 0, FOOTPRINT(Tangela) - LEARNSETS(Tangela), + .levelUpLearnset = sTangelaLevelUpLearnset, + .teachableLearnset = sTangelaTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_TANGROWTH}), }, @@ -9050,104 +11273,137 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 334, .trainerOffset = 4, - FRONT_PIC(Tangrowth, 64, 64), - FRONT_PIC_FEMALE(Tangrowth, 64, 64), + .frontPic = gMonFrontPic_Tangrowth, + .frontPicFemale = gMonFrontPic_TangrowthF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Tangrowth, .frontAnimId = ANIM_H_STRETCH, - BACK_PIC(Tangrowth, 64, 56), + .backPic = gMonBackPic_Tangrowth, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_GROW, - PALETTES(Tangrowth), - ICON(Tangrowth, 0), + .palette = gMonPalette_Tangrowth, + .shinyPalette = gMonShinyPalette_Tangrowth, + .iconSprite = gMonIcon_Tangrowth, + .iconPalIndex = 0, FOOTPRINT(Tangrowth) - LEARNSETS(Tangrowth), + .levelUpLearnset = sTangrowthLevelUpLearnset, + .teachableLearnset = sTangrowthTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_TANGELA #if P_FAMILY_KANGASKHAN -#define KANGASKHAN_MISC_INFO \ - .types = MON_TYPES(TYPE_NORMAL), \ - .catchRate = 45, \ - .evYield_HP = 2, \ - .genderRatio = MON_FEMALE, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), \ - .bodyColor = BODY_COLOR_BROWN, \ - .speciesName = _("Kangaskhan"), \ - .natDexNum = NATIONAL_DEX_KANGASKHAN, \ - .categoryName = _("Parent"), \ - .height = 22, \ - .pokemonScale = 256, \ - .pokemonOffset = 0, \ - .trainerScale = 387, \ - .trainerOffset = 8, \ - FOOTPRINT(Kangaskhan) \ - LEARNSETS(Kangaskhan), \ - .formSpeciesIdTable = sKangaskhanFormSpeciesIdTable, \ - .formChangeTable = sKangaskhanFormChangeTable - [SPECIES_KANGASKHAN] = { - KANGASKHAN_MISC_INFO, .baseHP = 105, .baseAttack = 95, .baseDefense = 80, .baseSpeed = 90, .baseSpAttack = 40, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 172 : 175, + .evYield_HP = 2, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), .abilities = { ABILITY_EARLY_BIRD, ABILITY_SCRAPPY, ABILITY_INNER_FOCUS }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Kangaskhan"), .cryId = CRY_KANGASKHAN, + .natDexNum = NATIONAL_DEX_KANGASKHAN, + .categoryName = _("Parent"), + .height = 22, .weight = 800, .description = COMPOUND_STRING( "If you come across a young Kangaskhan\n" "playing by itself, never try to catch it.\n" "The baby's parent is sure to be in the area,\n" "and it will become violently enraged."), - FRONT_PIC(Kangaskhan, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 387, + .trainerOffset = 8, + .frontPic = gMonFrontPic_Kangaskhan, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Kangaskhan, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Kangaskhan, 64, 56), + .backPic = gMonBackPic_Kangaskhan, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Kangaskhan), - ICON(Kangaskhan, 2), + .palette = gMonPalette_Kangaskhan, + .shinyPalette = gMonShinyPalette_Kangaskhan, + .iconSprite = gMonIcon_Kangaskhan, + .iconPalIndex = 2, + FOOTPRINT(Kangaskhan) + .levelUpLearnset = sKangaskhanLevelUpLearnset, + .teachableLearnset = sKangaskhanTeachableLearnset, + .formSpeciesIdTable = sKangaskhanFormSpeciesIdTable, + .formChangeTable = sKangaskhanFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_KANGASKHAN_MEGA] = { - KANGASKHAN_MISC_INFO, .baseHP = 105, .baseAttack = 125, .baseDefense = 100, .baseSpeed = 100, .baseSpAttack = 60, .baseSpDefense = 100, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 45, .expYield = 207, + .evYield_HP = 2, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), .abilities = { ABILITY_PARENTAL_BOND, ABILITY_PARENTAL_BOND, ABILITY_PARENTAL_BOND }, - .isMegaEvolution = TRUE, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Kangaskhan"), .cryId = CRY_KANGASKHAN_MEGA, + .natDexNum = NATIONAL_DEX_KANGASKHAN, + .categoryName = _("Parent"), + .height = 22, .weight = 1000, .description = COMPOUND_STRING( "When the mother sees the back of her\n" "Mega-Evolved child, it makes her think\n" "of the day when her child will inevitably\n" "leave her."), - FRONT_PIC(KangaskhanMega, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 387, + .trainerOffset = 8, + .frontPic = gMonFrontPic_KangaskhanMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_KangaskhanMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(KangaskhanMega, 64, 56), + .backPic = gMonBackPic_KangaskhanMega, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(KangaskhanMega), - ICON(KangaskhanMega, 2), + .palette = gMonPalette_KangaskhanMega, + .shinyPalette = gMonShinyPalette_KangaskhanMega, + .iconSprite = gMonIcon_KangaskhanMega, + .iconPalIndex = 2, + FOOTPRINT(Kangaskhan) + .isMegaEvolution = TRUE, + .levelUpLearnset = sKangaskhanLevelUpLearnset, + .teachableLearnset = sKangaskhanTeachableLearnset, + .formSpeciesIdTable = sKangaskhanFormSpeciesIdTable, + .formChangeTable = sKangaskhanFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_KANGASKHAN @@ -9188,17 +11444,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = -1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Horsea, 32, 40), + .frontPic = gMonFrontPic_Horsea, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Horsea, .frontAnimId = ANIM_V_JUMPS_SMALL, - BACK_PIC(Horsea, 48, 40), + .backPic = gMonBackPic_Horsea, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 14, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Horsea), - ICON(Horsea, 0), + .palette = gMonPalette_Horsea, + .shinyPalette = gMonShinyPalette_Horsea, + .iconSprite = gMonIcon_Horsea, + .iconPalIndex = 0, FOOTPRINT(Horsea) - LEARNSETS(Horsea), + .levelUpLearnset = sHorseaLevelUpLearnset, + .teachableLearnset = sHorseaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_SEADRA}), }, @@ -9238,17 +11499,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Seadra, 64, 56), + .frontPic = gMonFrontPic_Seadra, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Seadra, .frontAnimId = ANIM_V_SLIDE, - BACK_PIC(Seadra, 64, 56), + .backPic = gMonBackPic_Seadra, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Seadra), - ICON(Seadra, 0), + .palette = gMonPalette_Seadra, + .shinyPalette = gMonShinyPalette_Seadra, + .iconSprite = gMonIcon_Seadra, + .iconPalIndex = 0, FOOTPRINT(Seadra) - LEARNSETS(Seadra), + .levelUpLearnset = sSeadraLevelUpLearnset, + .teachableLearnset = sSeadraTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}, {EVO_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}), }, @@ -9297,17 +11563,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 287, .trainerOffset = 0, - FRONT_PIC(Kingdra, 64, 64), + .frontPic = gMonFrontPic_Kingdra, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Kingdra, .frontAnimId = ANIM_CIRCLE_INTO_BG, - BACK_PIC(Kingdra, 64, 56), + .backPic = gMonBackPic_Kingdra, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(Kingdra), - ICON(Kingdra, 0), + .palette = gMonPalette_Kingdra, + .shinyPalette = gMonShinyPalette_Kingdra, + .iconSprite = gMonIcon_Kingdra, + .iconPalIndex = 0, FOOTPRINT(Kingdra) - LEARNSETS(Kingdra), + .levelUpLearnset = sKingdraLevelUpLearnset, + .teachableLearnset = sKingdraTeachableLearnset, }, #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_HORSEA @@ -9348,19 +11619,26 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Goldeen, 64, 40), - FRONT_PIC_FEMALE(Goldeen, 64, 40), + .frontPic = gMonFrontPic_Goldeen, + .frontPicFemale = gMonFrontPic_GoldeenF, + .frontPicSize = MON_COORDS_SIZE(64, 40), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Goldeen, .frontAnimId = ANIM_H_SLIDE_WOBBLE, - BACK_PIC(Goldeen, 64, 48), - BACK_PIC_FEMALE(Goldeen, 64, 48), + .backPic = gMonBackPic_Goldeen, + .backPicFemale = gMonBackPic_GoldeenF, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicSizeFemale = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Goldeen), - ICON(Goldeen, 0), + .palette = gMonPalette_Goldeen, + .shinyPalette = gMonShinyPalette_Goldeen, + .iconSprite = gMonIcon_Goldeen, + .iconPalIndex = 0, FOOTPRINT(Goldeen) - LEARNSETS(Goldeen), + .levelUpLearnset = sGoldeenLevelUpLearnset, + .teachableLearnset = sGoldeenTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_SEAKING}), }, @@ -9399,19 +11677,26 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Seaking, 64, 56), - FRONT_PIC_FEMALE(Seaking, 64, 56), + .frontPic = gMonFrontPic_Seaking, + .frontPicFemale = gMonFrontPic_SeakingF, + .frontPicSize = MON_COORDS_SIZE(64, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Seaking, .frontAnimId = ANIM_V_SLIDE_WOBBLE, - BACK_PIC(Seaking, 64, 56), - BACK_PIC_FEMALE(Seaking, 64, 56), + .backPic = gMonBackPic_Seaking, + .backPicFemale = gMonBackPic_SeakingF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Seaking), - ICON(Seaking, 0), + .palette = gMonPalette_Seaking, + .shinyPalette = gMonShinyPalette_Seaking, + .iconSprite = gMonIcon_Seaking, + .iconPalIndex = 0, FOOTPRINT(Seaking) - LEARNSETS(Seaking), + .levelUpLearnset = sSeakingLevelUpLearnset, + .teachableLearnset = sSeakingTeachableLearnset, }, #endif //P_FAMILY_GOLDEEN @@ -9453,17 +11738,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Staryu, 40, 48), + .frontPic = gMonFrontPic_Staryu, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Staryu, .frontAnimId = ANIM_TWIST_TWICE, - BACK_PIC(Staryu, 56, 56), + .backPic = gMonBackPic_Staryu, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Staryu), - ICON(Staryu, 2), + .palette = gMonPalette_Staryu, + .shinyPalette = gMonShinyPalette_Staryu, + .iconSprite = gMonIcon_Staryu, + .iconPalIndex = 2, FOOTPRINT(Staryu) - LEARNSETS(Staryu), + .levelUpLearnset = sStaryuLevelUpLearnset, + .teachableLearnset = sStaryuTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}), }, @@ -9503,17 +11793,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Starmie, 56, 56), + .frontPic = gMonFrontPic_Starmie, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Starmie, .frontAnimId = ANIM_TWIST, - BACK_PIC(Starmie, 64, 64), + .backPic = gMonBackPic_Starmie, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(Starmie), - ICON(Starmie, 2), + .palette = gMonPalette_Starmie, + .shinyPalette = gMonShinyPalette_Starmie, + .iconSprite = gMonIcon_Starmie, + .iconPalIndex = 2, FOOTPRINT(Starmie) - LEARNSETS(Starmie), + .levelUpLearnset = sStarmieLevelUpLearnset, + .teachableLearnset = sStarmieTeachableLearnset, }, #endif //P_FAMILY_STARYU @@ -9527,11 +11822,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpeed = 60, .baseSpAttack = 70, .baseSpDefense = 90, - #if P_UPDATED_TYPES >= GEN_6 - .types = MON_TYPES(TYPE_PSYCHIC, TYPE_FAIRY), - #else - .types = MON_TYPES(TYPE_PSYCHIC), - #endif + #if P_UPDATED_TYPES >= GEN_6 + .types = MON_TYPES(TYPE_PSYCHIC, TYPE_FAIRY), + #else + .types = MON_TYPES(TYPE_PSYCHIC), + #endif .catchRate = 145, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 62 : 78, .evYield_SpDefense = 1, @@ -9557,53 +11852,49 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(MimeJr, 32, 56), + .frontPic = gMonFrontPic_MimeJr, + .frontPicSize = MON_COORDS_SIZE(32, 56), .frontPicYOffset = 9, .frontAnimFrames = sAnims_MimeJr, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(MimeJr, 64, 64), + .backPic = gMonBackPic_MimeJr, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(MimeJr), - ICON(MimeJr, 0), + .palette = gMonPalette_MimeJr, + .shinyPalette = gMonShinyPalette_MimeJr, + .iconSprite = gMonIcon_MimeJr, + .iconPalIndex = 0, FOOTPRINT(MimeJr) - LEARNSETS(MimeJr), + .levelUpLearnset = sMimeJrLevelUpLearnset, + .teachableLearnset = sMimeJrTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_MIMIC, SPECIES_MR_MIME}, {EVO_NONE, 0, SPECIES_MR_MIME_GALARIAN}), }, #endif //P_GEN_4_CROSS_EVOS -#define MR_MIME_MISC_INFO \ - .catchRate = 45, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 161 : 136, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), \ - .speciesName = _("Mr. Mime"), \ - .cryId = CRY_MR_MIME, \ - .natDexNum = NATIONAL_DEX_MR_MIME, \ - FOOTPRINT(MrMime) \ - .formSpeciesIdTable = sMrMimeFormSpeciesIdTable - [SPECIES_MR_MIME] = { - MR_MIME_MISC_INFO, .baseHP = 40, .baseAttack = 45, .baseDefense = 65, .baseSpeed = 90, .baseSpAttack = 100, .baseSpDefense = 120, - #if P_UPDATED_TYPES >= GEN_6 - .types = MON_TYPES(TYPE_PSYCHIC, TYPE_FAIRY), - #else - .types = MON_TYPES(TYPE_PSYCHIC), - #endif + .types = MON_TYPES(TYPE_PSYCHIC), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 161 : 136, .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), .abilities = { ABILITY_SOUNDPROOF, ABILITY_FILTER, ABILITY_TECHNICIAN }, .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Mr. Mime"), + .cryId = CRY_MR_MIME, + .natDexNum = NATIONAL_DEX_MR_MIME, .categoryName = _("Barrier"), .height = 13, .weight = 545, @@ -9616,22 +11907,28 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 6, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(MrMime, 56, 56), + .frontPic = gMonFrontPic_MrMime, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_MrMime, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(MrMime, 64, 48), + .backPic = gMonBackPic_MrMime, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(MrMime), - ICON(MrMime, 0), - LEARNSETS(MrMime), + .palette = gMonPalette_MrMime, + .shinyPalette = gMonShinyPalette_MrMime, + .iconSprite = gMonIcon_MrMime, + .iconPalIndex = 0, + FOOTPRINT(MrMime) + .levelUpLearnset = sMrMimeLevelUpLearnset, + .teachableLearnset = sMrMimeTeachableLearnset, + .formSpeciesIdTable = sMrMimeFormSpeciesIdTable, }, #if P_GALARIAN_FORMS [SPECIES_MR_MIME_GALARIAN] = { - MR_MIME_MISC_INFO, .baseHP = 50, .baseAttack = 65, .baseDefense = 65, @@ -9639,9 +11936,19 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 90, .baseSpDefense = 90, .types = MON_TYPES(TYPE_ICE, TYPE_PSYCHIC), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 161 : 136, .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_SCREEN_CLEANER, ABILITY_ICE_BODY }, .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Mr. Mime"), + .cryId = CRY_MR_MIME, + .natDexNum = NATIONAL_DEX_MR_MIME, .categoryName = _("Dancing"), .height = 14, .weight = 568, @@ -9654,17 +11961,24 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 6, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(MrMimeGalarian, 56, 56), + .frontPic = gMonFrontPic_MrMimeGalarian, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_MrMimeGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(MrMimeGalarian, 64, 48), + .backPic = gMonBackPic_MrMimeGalarian, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(MrMimeGalarian), - ICON(MrMimeGalarian, 0), - LEARNSETS(MrMimeGalarian), + .palette = gMonPalette_MrMimeGalarian, + .shinyPalette = gMonShinyPalette_MrMimeGalarian, + .iconSprite = gMonIcon_MrMimeGalarian, + .iconPalIndex = 0, + FOOTPRINT(MrMime) .isGalarianForm = TRUE, + .levelUpLearnset = sMrMimeGalarianLevelUpLearnset, + .teachableLearnset = sMrMimeGalarianTeachableLearnset, + .formSpeciesIdTable = sMrMimeFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_MR_RIME}), }, @@ -9701,17 +12015,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(MrRime, 56, 64), + .frontPic = gMonFrontPic_MrRime, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_MrRime, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(MrRime, 64, 56), + .backPic = gMonBackPic_MrRime, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(MrRime), - ICON(MrRime, 0), + .palette = gMonPalette_MrRime, + .shinyPalette = gMonShinyPalette_MrRime, + .iconSprite = gMonIcon_MrRime, + .iconPalIndex = 0, FOOTPRINT(MrRime) - LEARNSETS(MrRime), + .levelUpLearnset = sMrRimeLevelUpLearnset, + .teachableLearnset = sMrRimeTeachableLearnset, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_MR_MIME @@ -9751,55 +12070,54 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 293, .trainerOffset = 2, - FRONT_PIC(Scyther, 56, 64), - FRONT_PIC_FEMALE(Scyther, 56, 64), + .frontPic = gMonFrontPic_Scyther, + .frontPicFemale = gMonFrontPic_ScytherF, + .frontPicSize = MON_COORDS_SIZE(56, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Scyther, .frontAnimId = ANIM_H_VIBRATE, .frontAnimDelay = 10, - BACK_PIC(Scyther, 64, 64), + .backPic = gMonBackPic_Scyther, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Scyther), - ICON(Scyther, 1), + .palette = gMonPalette_Scyther, + .shinyPalette = gMonShinyPalette_Scyther, + .iconSprite = gMonIcon_Scyther, + .iconPalIndex = 1, FOOTPRINT(Scyther) - LEARNSETS(Scyther), + .levelUpLearnset = sScytherLevelUpLearnset, + .teachableLearnset = sScytherTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}, {EVO_ITEM, ITEM_BLACK_AUGURITE, SPECIES_KLEAVOR}, {EVO_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}), }, #if P_GEN_2_CROSS_EVOS -#define SCIZOR_MISC_INFO \ - .types = MON_TYPES(TYPE_BUG, TYPE_STEEL), \ - .catchRate = 25, \ - .evYield_Attack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), \ - .bodyColor = BODY_COLOR_RED, \ - .speciesName = _("Scizor"), \ - .natDexNum = NATIONAL_DEX_SCIZOR, \ - .categoryName = _("Pincer"), \ - FOOTPRINT(Scizor) \ - LEARNSETS(Scizor), \ - .formSpeciesIdTable = sScizorFormSpeciesIdTable,\ - .formChangeTable = sScizorFormChangeTable - [SPECIES_SCIZOR] = { - SCIZOR_MISC_INFO, .baseHP = 70, .baseAttack = 130, .baseDefense = 100, .baseSpeed = 65, .baseSpAttack = 55, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_BUG, TYPE_STEEL), + .catchRate = 25, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 175 : 200, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), .abilities = { ABILITY_SWARM, ABILITY_TECHNICIAN, ABILITY_LIGHT_METAL }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Scizor"), .cryId = CRY_SCIZOR, + .natDexNum = NATIONAL_DEX_SCIZOR, + .categoryName = _("Pincer"), .height = 18, .weight = 1180, .description = COMPOUND_STRING( @@ -9811,33 +12129,53 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Scizor, 64, 64), - FRONT_PIC_FEMALE(Scizor, 64, 64), + .frontPic = gMonFrontPic_Scizor, + .frontPicFemale = gMonFrontPic_ScizorF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Scizor, .frontAnimId = ANIM_H_VIBRATE, .frontAnimDelay = 19, - BACK_PIC(Scizor, 64, 56), + .backPic = gMonBackPic_Scizor, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Scizor), - ICON(Scizor, 0), + .palette = gMonPalette_Scizor, + .shinyPalette = gMonShinyPalette_Scizor, + .iconSprite = gMonIcon_Scizor, + .iconPalIndex = 0, + FOOTPRINT(Scizor) + .levelUpLearnset = sScizorLevelUpLearnset, + .teachableLearnset = sScizorTeachableLearnset, + .formSpeciesIdTable = sScizorFormSpeciesIdTable, + .formChangeTable = sScizorFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_SCIZOR_MEGA] = { - SCIZOR_MISC_INFO, .baseHP = 70, .baseAttack = 150, .baseDefense = 140, .baseSpeed = 75, .baseSpAttack = 65, .baseSpDefense = 100, + .types = MON_TYPES(TYPE_BUG, TYPE_STEEL), + .catchRate = 25, .expYield = 210, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), .abilities = { ABILITY_TECHNICIAN, ABILITY_TECHNICIAN, ABILITY_TECHNICIAN }, - .isMegaEvolution = TRUE, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Scizor"), .cryId = CRY_SCIZOR_MEGA, + .natDexNum = NATIONAL_DEX_SCIZOR, + .categoryName = _("Pincer"), .height = 20, .weight = 1250, .description = COMPOUND_STRING( @@ -9849,15 +12187,25 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(ScizorMega, 64, 64), + .frontPic = gMonFrontPic_ScizorMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_ScizorMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ScizorMega, 64, 56), + .backPic = gMonBackPic_ScizorMega, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(ScizorMega), - ICON(ScizorMega, 0), + .palette = gMonPalette_ScizorMega, + .shinyPalette = gMonShinyPalette_ScizorMega, + .iconSprite = gMonIcon_ScizorMega, + .iconPalIndex = 0, + FOOTPRINT(Scizor) + .isMegaEvolution = TRUE, + .levelUpLearnset = sScizorLevelUpLearnset, + .teachableLearnset = sScizorTeachableLearnset, + .formSpeciesIdTable = sScizorFormSpeciesIdTable, + .formChangeTable = sScizorFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_GEN_2_CROSS_EVOS @@ -9897,17 +12245,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 286, .trainerOffset = 1, - FRONT_PIC(Kleavor, 64, 64), + .frontPic = gMonFrontPic_Kleavor, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Kleavor, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Kleavor, 64, 56), + .backPic = gMonBackPic_Kleavor, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Kleavor), - ICON(Kleavor, 2), + .palette = gMonPalette_Kleavor, + .shinyPalette = gMonShinyPalette_Kleavor, + .iconSprite = gMonIcon_Kleavor, + .iconPalIndex = 2, //FOOTPRINT(Kleavor) - LEARNSETS(Kleavor), + .levelUpLearnset = sKleavorLevelUpLearnset, + .teachableLearnset = sKleavorTeachableLearnset, }, #endif //P_GEN_8_CROSS_EVOS #endif //P_FAMILY_SCYTHER @@ -9948,18 +12301,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Smoochum, 32, 40), + .frontPic = gMonFrontPic_Smoochum, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Smoochum, .frontAnimId = ANIM_GROW_VIBRATE, .frontAnimDelay = 40, - BACK_PIC(Smoochum, 40, 48), + .backPic = gMonBackPic_Smoochum, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Smoochum), - ICON(Smoochum, 1), + .palette = gMonPalette_Smoochum, + .shinyPalette = gMonShinyPalette_Smoochum, + .iconSprite = gMonIcon_Smoochum, + .iconPalIndex = 1, FOOTPRINT(Smoochum) - LEARNSETS(Smoochum), + .levelUpLearnset = sSmoochumLevelUpLearnset, + .teachableLearnset = sSmoochumTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_JYNX}), }, #endif //P_GEN_2_CROSS_EVOS @@ -9998,17 +12356,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 3, .trainerScale = 300, .trainerOffset = 1, - FRONT_PIC(Jynx, 64, 48), + .frontPic = gMonFrontPic_Jynx, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Jynx, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Jynx, 56, 64), + .backPic = gMonBackPic_Jynx, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Jynx), - ICON(Jynx, 2), + .palette = gMonPalette_Jynx, + .shinyPalette = gMonShinyPalette_Jynx, + .iconSprite = gMonIcon_Jynx, + .iconPalIndex = 2, FOOTPRINT(Jynx) - LEARNSETS(Jynx), + .levelUpLearnset = sJynxLevelUpLearnset, + .teachableLearnset = sJynxTeachableLearnset, }, #endif //P_FAMILY_JYNX @@ -10050,17 +12413,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Elekid, 48, 40), + .frontPic = gMonFrontPic_Elekid, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Elekid, .frontAnimId = ANIM_FLASH_YELLOW, - BACK_PIC(Elekid, 64, 48), + .backPic = gMonBackPic_Elekid, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Elekid), - ICON(Elekid, 1), + .palette = gMonPalette_Elekid, + .shinyPalette = gMonShinyPalette_Elekid, + .iconSprite = gMonIcon_Elekid, + .iconPalIndex = 1, FOOTPRINT(Elekid) - LEARNSETS(Elekid), + .levelUpLearnset = sElekidLevelUpLearnset, + .teachableLearnset = sElekidTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ELECTABUZZ}), }, #endif //P_GEN_2_CROSS_EVOS @@ -10101,17 +12469,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Electabuzz, 64, 64), + .frontPic = gMonFrontPic_Electabuzz, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Electabuzz, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW, - BACK_PIC(Electabuzz, 64, 64), + .backPic = gMonBackPic_Electabuzz, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(Electabuzz), - ICON(Electabuzz, 1), + .palette = gMonPalette_Electabuzz, + .shinyPalette = gMonShinyPalette_Electabuzz, + .iconSprite = gMonIcon_Electabuzz, + .iconPalIndex = 1, FOOTPRINT(Electabuzz) - LEARNSETS(Electabuzz), + .levelUpLearnset = sElectabuzzLevelUpLearnset, + .teachableLearnset = sElectabuzzTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}, {EVO_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}), }, @@ -10158,17 +12531,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 286, .trainerOffset = 1, - FRONT_PIC(Electivire, 64, 64), + .frontPic = gMonFrontPic_Electivire, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Electivire, .frontAnimId = ANIM_GLOW_YELLOW, - BACK_PIC(Electivire, 64, 48), + .backPic = gMonBackPic_Electivire, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(Electivire), - ICON(Electivire, 1), + .palette = gMonPalette_Electivire, + .shinyPalette = gMonShinyPalette_Electivire, + .iconSprite = gMonIcon_Electivire, + .iconPalIndex = 1, FOOTPRINT(Electivire) - LEARNSETS(Electivire), + .levelUpLearnset = sElectivireLevelUpLearnset, + .teachableLearnset = sElectivireTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_ELECTABUZZ @@ -10211,17 +12589,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Magby, 32, 48), + .frontPic = gMonFrontPic_Magby, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Magby, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Magby, 40, 48), + .backPic = gMonBackPic_Magby, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Magby), - ICON(Magby, 0), + .palette = gMonPalette_Magby, + .shinyPalette = gMonShinyPalette_Magby, + .iconSprite = gMonIcon_Magby, + .iconPalIndex = 0, FOOTPRINT(Magby) - LEARNSETS(Magby), + .levelUpLearnset = sMagbyLevelUpLearnset, + .teachableLearnset = sMagbyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MAGMAR}), }, #endif //P_GEN_2_CROSS_EVOS @@ -10261,17 +12644,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 5, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Magmar, 64, 56), + .frontPic = gMonFrontPic_Magmar, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Magmar, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Magmar, 64, 64), + .backPic = gMonBackPic_Magmar, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Magmar), - ICON(Magmar, 0), + .palette = gMonPalette_Magmar, + .shinyPalette = gMonShinyPalette_Magmar, + .iconSprite = gMonIcon_Magmar, + .iconPalIndex = 0, FOOTPRINT(Magmar) - LEARNSETS(Magmar), + .levelUpLearnset = sMagmarLevelUpLearnset, + .teachableLearnset = sMagmarTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}, {EVO_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}), }, @@ -10319,42 +12707,29 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(Magmortar, 64, 64), + .frontPic = gMonFrontPic_Magmortar, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Magmortar, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Magmortar, 64, 56), + .backPic = gMonBackPic_Magmortar, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Magmortar), - ICON(Magmortar, 0), + .palette = gMonPalette_Magmortar, + .shinyPalette = gMonShinyPalette_Magmortar, + .iconSprite = gMonIcon_Magmortar, + .iconPalIndex = 0, FOOTPRINT(Magmortar) - LEARNSETS(Magmortar), + .levelUpLearnset = sMagmortarLevelUpLearnset, + .teachableLearnset = sMagmortarTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_MAGMAR #if P_FAMILY_PINSIR -#define PINSIR_MISC_INFO \ - .catchRate = 45, \ - .evYield_Attack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), \ - .bodyColor = BODY_COLOR_BROWN, \ - .speciesName = _("Pinsir"), \ - .natDexNum = NATIONAL_DEX_PINSIR, \ - .categoryName = _("Stag Beetle"), \ - FOOTPRINT(Pinsir) \ - LEARNSETS(Pinsir), \ - .formSpeciesIdTable = sPinsirFormSpeciesIdTable,\ - .formChangeTable = sPinsirFormChangeTable - [SPECIES_PINSIR] = { - PINSIR_MISC_INFO, .baseHP = 65, .baseAttack = 125, .baseDefense = 100, @@ -10362,9 +12737,20 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 55, .baseSpDefense = 70, .types = MON_TYPES(TYPE_BUG), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 175 : 200, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), .abilities = { ABILITY_HYPER_CUTTER, ABILITY_MOLD_BREAKER, ABILITY_MOXIE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Pinsir"), .cryId = CRY_PINSIR, + .natDexNum = NATIONAL_DEX_PINSIR, + .categoryName = _("Stag Beetle"), .height = 15, .weight = 550, .description = COMPOUND_STRING( @@ -10376,21 +12762,29 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Pinsir, 64, 64), + .frontPic = gMonFrontPic_Pinsir, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Pinsir, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Pinsir, 64, 56), + .backPic = gMonBackPic_Pinsir, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Pinsir), - ICON(Pinsir, 2), + .palette = gMonPalette_Pinsir, + .shinyPalette = gMonShinyPalette_Pinsir, + .iconSprite = gMonIcon_Pinsir, + .iconPalIndex = 2, + FOOTPRINT(Pinsir) + .levelUpLearnset = sPinsirLevelUpLearnset, + .teachableLearnset = sPinsirTeachableLearnset, + .formSpeciesIdTable = sPinsirFormSpeciesIdTable, + .formChangeTable = sPinsirFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_PINSIR_MEGA] = { - PINSIR_MISC_INFO, .baseHP = 65, .baseAttack = 155, .baseDefense = 120, @@ -10398,9 +12792,20 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 65, .baseSpDefense = 90, .types = MON_TYPES(TYPE_BUG, TYPE_FLYING), + .catchRate = 45, .expYield = 210, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), .abilities = { ABILITY_AERILATE, ABILITY_AERILATE, ABILITY_AERILATE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Pinsir"), .cryId = CRY_PINSIR_MEGA, + .natDexNum = NATIONAL_DEX_PINSIR, + .categoryName = _("Stag Beetle"), .height = 17, .weight = 590, .description = COMPOUND_STRING( @@ -10412,45 +12817,33 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(PinsirMega, 64, 64), + .frontPic = gMonFrontPic_PinsirMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_PinsirMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 4, - BACK_PIC(PinsirMega, 64, 56), + .backPic = gMonBackPic_PinsirMega, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(PinsirMega), - ICON(PinsirMega, 2), + .palette = gMonPalette_PinsirMega, + .shinyPalette = gMonShinyPalette_PinsirMega, + .iconSprite = gMonIcon_PinsirMega, + .iconPalIndex = 2, + FOOTPRINT(Pinsir) .isMegaEvolution = TRUE, + .levelUpLearnset = sPinsirLevelUpLearnset, + .teachableLearnset = sPinsirTeachableLearnset, + .formSpeciesIdTable = sPinsirFormSpeciesIdTable, + .formChangeTable = sPinsirFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_PINSIR #if P_FAMILY_TAUROS -#define TAUROS_MISC_INFO \ - .catchRate = 45, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 172 : 211,\ - .genderRatio = MON_MALE, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .speciesName = _("Tauros"), \ - .cryId = CRY_TAUROS, \ - .natDexNum = NATIONAL_DEX_TAUROS, \ - .categoryName = _("Wild Bull"), \ - .height = 14, \ - .pokemonScale = 256, \ - .pokemonOffset = 0, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Tauros) \ - .formSpeciesIdTable = sTaurosFormSpeciesIdTable - [SPECIES_TAUROS] = { - TAUROS_MISC_INFO, .baseHP = 75, .baseAttack = 100, .baseDefense = 95, @@ -10458,103 +12851,213 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 40, .baseSpDefense = 70, .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 172 : 211, .evYield_Attack = 1, .evYield_Speed = 1, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_SHEER_FORCE }, .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Tauros"), + .cryId = CRY_TAUROS, + .natDexNum = NATIONAL_DEX_TAUROS, + .categoryName = _("Wild Bull"), + .height = 14, .weight = 884, .description = COMPOUND_STRING( "It is not satisfied unless it is rampaging\n" "at all times. If there is no opponent for\n" "Tauros to battle, it will charge at thick\n" "trees and knock them down to calm itself."), - FRONT_PIC(Tauros, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Tauros, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Tauros, .frontAnimId = ANIM_V_SHAKE_TWICE, .frontAnimDelay = 10, - BACK_PIC(Tauros, 64, 48), + .backPic = gMonBackPic_Tauros, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 13, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Tauros), - ICON(Tauros, 2), - LEARNSETS(Tauros), + .palette = gMonPalette_Tauros, + .shinyPalette = gMonShinyPalette_Tauros, + .iconSprite = gMonIcon_Tauros, + .iconPalIndex = 2, + FOOTPRINT(Tauros) + .levelUpLearnset = sTaurosLevelUpLearnset, + .teachableLearnset = sTaurosTeachableLearnset, + .formSpeciesIdTable = sTaurosFormSpeciesIdTable, }, #if P_PALDEAN_FORMS -#define TAUROS_PALDEAN_MISC_INFO \ - .baseHP = 75, \ - .baseAttack = 110, \ - .baseDefense = 105, \ - .baseSpeed = 100, \ - .baseSpAttack = 30, \ - .baseSpDefense = 70, \ - .evYield_Attack = 2, \ - .abilities = { ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_CUD_CHEW }, \ - .bodyColor = BODY_COLOR_BLACK, \ - .frontAnimFrames = sAnims_TaurosPaldean, \ - /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ \ - .backAnimId = BACK_ANIM_V_SHAKE_LOW, \ - .isPaldeanForm = TRUE - [SPECIES_TAUROS_PALDEAN_COMBAT_BREED] = { - TAUROS_MISC_INFO, - TAUROS_PALDEAN_MISC_INFO, + .baseHP = 75, + .baseAttack = 110, + .baseDefense = 105, + .baseSpeed = 100, + .baseSpAttack = 30, + .baseSpDefense = 70, .types = MON_TYPES(TYPE_FIGHTING), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 172 : 211, + .evYield_Attack = 2, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_CUD_CHEW }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Tauros"), + .cryId = CRY_TAUROS, + .natDexNum = NATIONAL_DEX_TAUROS, + .categoryName = _("Wild Bull"), + .height = 14, .weight = 1150, .description = COMPOUND_STRING( "This Pokémon has a muscular body\n" "and excels at close-quarters combat.\n" "It uses its short horns to strike\n" "the opponent’s weak spots."), - FRONT_PIC(TaurosPaldeanCombatBreed, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_TaurosPaldeanCombatBreed, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, - BACK_PIC(TaurosPaldeanCombatBreed, 64, 48), + .frontAnimFrames = sAnims_TaurosPaldean, + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ + .backPic = gMonBackPic_TaurosPaldeanCombatBreed, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, - PALETTES(TaurosPaldeanCombatBreed), - ICON(TaurosPaldeanCombatBreed, 0), - LEARNSETS(TaurosPaldeanCombatBreed), + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + .palette = gMonPalette_TaurosPaldeanCombatBreed, + .shinyPalette = gMonShinyPalette_TaurosPaldeanCombatBreed, + .iconSprite = gMonIcon_TaurosPaldeanCombatBreed, + .iconPalIndex = 0, + FOOTPRINT(Tauros) + .isPaldeanForm = TRUE, + .levelUpLearnset = sTaurosPaldeanCombatBreedLevelUpLearnset, + .teachableLearnset = sTaurosPaldeanCombatBreedTeachableLearnset, + .formSpeciesIdTable = sTaurosFormSpeciesIdTable, }, [SPECIES_TAUROS_PALDEAN_BLAZE_BREED] = { - TAUROS_MISC_INFO, - TAUROS_PALDEAN_MISC_INFO, + .baseHP = 75, + .baseAttack = 110, + .baseDefense = 105, + .baseSpeed = 100, + .baseSpAttack = 30, + .baseSpDefense = 70, .types = MON_TYPES(TYPE_FIGHTING, TYPE_FIRE), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 172 : 211, + .evYield_Attack = 2, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_CUD_CHEW }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Tauros"), + .cryId = CRY_TAUROS, + .natDexNum = NATIONAL_DEX_TAUROS, + .categoryName = _("Wild Bull"), + .height = 14, .weight = 850, .description = COMPOUND_STRING( "When heated by fire energy, its horns can\n" "get hotter than 1,800 degrees Fahrenheit.\n" "Those gored by them will suffer\n" "both wounds and burns."), - FRONT_PIC(TaurosPaldeanBlazeBreed, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_TaurosPaldeanBlazeBreed, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, - BACK_PIC(TaurosPaldeanBlazeBreed, 64, 48), + .frontAnimFrames = sAnims_TaurosPaldean, + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ + .backPic = gMonBackPic_TaurosPaldeanBlazeBreed, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, - PALETTES(TaurosPaldeanBlazeBreed), - ICON(TaurosPaldeanBlazeBreed, 0), - LEARNSETS(TaurosPaldeanBlazeBreed), + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + .palette = gMonPalette_TaurosPaldeanBlazeBreed, + .shinyPalette = gMonShinyPalette_TaurosPaldeanBlazeBreed, + .iconSprite = gMonIcon_TaurosPaldeanBlazeBreed, + .iconPalIndex = 0, + FOOTPRINT(Tauros) + .isPaldeanForm = TRUE, + .levelUpLearnset = sTaurosPaldeanBlazeBreedLevelUpLearnset, + .teachableLearnset = sTaurosPaldeanBlazeBreedTeachableLearnset, + .formSpeciesIdTable = sTaurosFormSpeciesIdTable, }, [SPECIES_TAUROS_PALDEAN_AQUA_BREED] = { - TAUROS_MISC_INFO, - TAUROS_PALDEAN_MISC_INFO, + .baseHP = 75, + .baseAttack = 110, + .baseDefense = 105, + .baseSpeed = 100, + .baseSpAttack = 30, + .baseSpDefense = 70, .types = MON_TYPES(TYPE_FIGHTING, TYPE_WATER), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 172 : 211, + .evYield_Attack = 2, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_CUD_CHEW }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Tauros"), + .cryId = CRY_TAUROS, + .natDexNum = NATIONAL_DEX_TAUROS, + .categoryName = _("Wild Bull"), + .height = 14, .weight = 1100, .description = COMPOUND_STRING( "This Pokémon blasts water from holes on\n" "the tips of its horns--the high-pressure\n" "jets pierce right through\n" "Tauros’s enemies."), - FRONT_PIC(TaurosPaldeanAquaBreed, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_TaurosPaldeanAquaBreed, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, - BACK_PIC(TaurosPaldeanAquaBreed, 64, 48), + .frontAnimFrames = sAnims_TaurosPaldean, + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ + .backPic = gMonBackPic_TaurosPaldeanAquaBreed, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, - PALETTES(TaurosPaldeanAquaBreed), - ICON(TaurosPaldeanAquaBreed, 0), - LEARNSETS(TaurosPaldeanAquaBreed), + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + .palette = gMonPalette_TaurosPaldeanAquaBreed, + .shinyPalette = gMonShinyPalette_TaurosPaldeanAquaBreed, + .iconSprite = gMonIcon_TaurosPaldeanAquaBreed, + .iconPalIndex = 0, + FOOTPRINT(Tauros) + .isPaldeanForm = TRUE, + .levelUpLearnset = sTaurosPaldeanAquaBreedLevelUpLearnset, + .teachableLearnset = sTaurosPaldeanAquaBreedTeachableLearnset, + .formSpeciesIdTable = sTaurosFormSpeciesIdTable, }, #endif //P_PALDEAN_FORMS #endif //P_FAMILY_TAUROS @@ -10594,48 +13097,32 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Magikarp, 48, 56), - FRONT_PIC_FEMALE(Magikarp, 48, 56), + .frontPic = gMonFrontPic_Magikarp, + .frontPicFemale = gMonFrontPic_MagikarpF, + .frontPicSize = MON_COORDS_SIZE(48, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Magikarp, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES, - BACK_PIC(Magikarp, 64, 56), - BACK_PIC_FEMALE(Magikarp, 64, 56), + .backPic = gMonBackPic_Magikarp, + .backPicFemale = gMonBackPic_MagikarpF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Magikarp), - ICON(Magikarp, 0), + .palette = gMonPalette_Magikarp, + .shinyPalette = gMonShinyPalette_Magikarp, + .iconSprite = gMonIcon_Magikarp, + .iconPalIndex = 0, FOOTPRINT(Magikarp) - LEARNSETS(Magikarp), .tmIlliterate = TRUE, + .levelUpLearnset = sMagikarpLevelUpLearnset, + .teachableLearnset = sMagikarpTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_GYARADOS}), }, -#define GYARADOS_MISC_INFO \ - .catchRate = 45, \ - .evYield_Attack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 5, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2, EGG_GROUP_DRAGON),\ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Gyarados"), \ - .natDexNum = NATIONAL_DEX_GYARADOS, \ - .categoryName = _("Atrocious"), \ - .height = 65, \ - .pokemonScale = 256, \ - .pokemonOffset = 6, \ - .trainerScale = 481, \ - .trainerOffset = 13, \ - FOOTPRINT(Gyarados) \ - LEARNSETS(Gyarados), \ - .formSpeciesIdTable = sGyaradosFormSpeciesIdTable, \ - .formChangeTable = sGyaradosFormChangeTable - [SPECIES_GYARADOS] = { - GYARADOS_MISC_INFO, .baseHP = 95, .baseAttack = 125, .baseDefense = 79, @@ -10643,32 +13130,58 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 60, .baseSpDefense = 100, .types = MON_TYPES(TYPE_WATER, TYPE_FLYING), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 189 : 214, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 5, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2, EGG_GROUP_DRAGON), .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_MOXIE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Gyarados"), .cryId = CRY_GYARADOS, + .natDexNum = NATIONAL_DEX_GYARADOS, + .categoryName = _("Atrocious"), + .height = 65, .weight = 2350, .description = COMPOUND_STRING( "It is an extremely vicious and violent\n" "Pokémon. When humans begin to fight,\n" "it will appear and burn everything to the\n" "ground with intensely hot flames."), - FRONT_PIC(Gyarados, 64, 64), - FRONT_PIC_FEMALE(Gyarados, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 6, + .trainerScale = 481, + .trainerOffset = 13, + .frontPic = gMonFrontPic_Gyarados, + .frontPicFemale = gMonFrontPic_GyaradosF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Gyarados, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - BACK_PIC(Gyarados, 64, 64), - BACK_PIC_FEMALE(Gyarados, 64, 64), + .backPic = gMonBackPic_Gyarados, + .backPicFemale = gMonBackPic_GyaradosF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Gyarados), - ICON(Gyarados, 0), + .palette = gMonPalette_Gyarados, + .shinyPalette = gMonShinyPalette_Gyarados, + .iconSprite = gMonIcon_Gyarados, + .iconPalIndex = 0, + FOOTPRINT(Gyarados) + .levelUpLearnset = sGyaradosLevelUpLearnset, + .teachableLearnset = sGyaradosTeachableLearnset, + .formSpeciesIdTable = sGyaradosFormSpeciesIdTable, + .formChangeTable = sGyaradosFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_GYARADOS_MEGA] = { - GYARADOS_MISC_INFO, .baseHP = 95, .baseAttack = 155, .baseDefense = 109, @@ -10676,63 +13189,81 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 70, .baseSpDefense = 130, .types = MON_TYPES(TYPE_WATER, TYPE_DARK), + .catchRate = 45, .expYield = 224, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 5, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2, EGG_GROUP_DRAGON), .abilities = { ABILITY_MOLD_BREAKER, ABILITY_MOLD_BREAKER, ABILITY_MOLD_BREAKER }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Gyarados"), .cryId = CRY_GYARADOS_MEGA, + .natDexNum = NATIONAL_DEX_GYARADOS, + .categoryName = _("Atrocious"), + .height = 65, .weight = 3050, .description = COMPOUND_STRING( "Although it obeys its instinctive drive to\n" "destroy everything within its reach, it\n" "will respond to orders from a Trainer it\n" "truly trusts."), - FRONT_PIC(GyaradosMega, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 6, + .trainerScale = 481, + .trainerOffset = 13, + .frontPic = gMonFrontPic_GyaradosMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_GyaradosMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 6, - BACK_PIC(GyaradosMega, 64, 64), + .backPic = gMonBackPic_GyaradosMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(GyaradosMega), - ICON(GyaradosMega, 0), + .palette = gMonPalette_GyaradosMega, + .shinyPalette = gMonShinyPalette_GyaradosMega, + .iconSprite = gMonIcon_GyaradosMega, + .iconPalIndex = 0, + FOOTPRINT(Gyarados) .isMegaEvolution = TRUE, + .levelUpLearnset = sGyaradosLevelUpLearnset, + .teachableLearnset = sGyaradosTeachableLearnset, + .formSpeciesIdTable = sGyaradosFormSpeciesIdTable, + .formChangeTable = sGyaradosFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_MAGIKARP #if P_FAMILY_LAPRAS -#define LAPRAS_MISC_INFO \ - .baseHP = 130, \ - .baseAttack = 85, \ - .baseDefense = 80, \ - .baseSpeed = 60, \ - .baseSpAttack = 85, \ - .baseSpDefense = 95, \ - .types = MON_TYPES(TYPE_WATER, TYPE_ICE), \ - .catchRate = 45, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 187 : 219, \ - .evYield_HP = 2, \ - .itemCommon = ITEM_MYSTIC_WATER, \ - .itemRare = ITEM_MYSTIC_WATER, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 40, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), \ - .abilities = { ABILITY_WATER_ABSORB, ABILITY_SHELL_ARMOR, ABILITY_HYDRATION }, \ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Lapras"), \ - .cryId = CRY_LAPRAS, \ - .natDexNum = NATIONAL_DEX_LAPRAS, \ - .categoryName = _("Transport"), \ - FOOTPRINT(Lapras) \ - LEARNSETS(Lapras), \ - .formSpeciesIdTable = sLaprasFormSpeciesIdTable, \ - .formChangeTable = sLaprasFormChangeTable - [SPECIES_LAPRAS] = { - LAPRAS_MISC_INFO, + .baseHP = 130, + .baseAttack = 85, + .baseDefense = 80, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 95, + .types = MON_TYPES(TYPE_WATER, TYPE_ICE), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 187 : 219, + .evYield_HP = 2, + .itemCommon = ITEM_MYSTIC_WATER, + .itemRare = ITEM_MYSTIC_WATER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), + .abilities = { ABILITY_WATER_ABSORB, ABILITY_SHELL_ARMOR, ABILITY_HYDRATION }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Lapras"), + .cryId = CRY_LAPRAS, + .natDexNum = NATIONAL_DEX_LAPRAS, + .categoryName = _("Transport"), .height = 25, .weight = 2200, .description = COMPOUND_STRING( @@ -10744,21 +13275,52 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 10, .trainerScale = 423, .trainerOffset = 8, - FRONT_PIC(Lapras, 64, 64), + .frontPic = gMonFrontPic_Lapras, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Lapras, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Lapras, 56, 64), + .backPic = gMonBackPic_Lapras, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(Lapras), - ICON(Lapras, 2), + .palette = gMonPalette_Lapras, + .shinyPalette = gMonShinyPalette_Lapras, + .iconSprite = gMonIcon_Lapras, + .iconPalIndex = 2, + FOOTPRINT(Lapras) + .levelUpLearnset = sLaprasLevelUpLearnset, + .teachableLearnset = sLaprasTeachableLearnset, + .formSpeciesIdTable = sLaprasFormSpeciesIdTable, + .formChangeTable = sLaprasFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_LAPRAS_GIGANTAMAX] = { - LAPRAS_MISC_INFO, + .baseHP = 130, + .baseAttack = 85, + .baseDefense = 80, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 95, + .types = MON_TYPES(TYPE_WATER, TYPE_ICE), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 187 : 219, + .evYield_HP = 2, + .itemCommon = ITEM_MYSTIC_WATER, + .itemRare = ITEM_MYSTIC_WATER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), + .abilities = { ABILITY_WATER_ABSORB, ABILITY_SHELL_ARMOR, ABILITY_HYDRATION }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Lapras"), + .cryId = CRY_LAPRAS, + .natDexNum = NATIONAL_DEX_LAPRAS, + .categoryName = _("Transport"), .height = 240, .weight = 0, .description = COMPOUND_STRING( @@ -10770,16 +13332,25 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 10, .trainerScale = 423, .trainerOffset = 8, - FRONT_PIC(LaprasGigantamax, 64, 64), + .frontPic = gMonFrontPic_LaprasGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_LaprasGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(LaprasGigantamax, 64, 64), + .backPic = gMonBackPic_LaprasGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(LaprasGigantamax), - ICON(LaprasGigantamax, 2), + .palette = gMonPalette_LaprasGigantamax, + .shinyPalette = gMonShinyPalette_LaprasGigantamax, + .iconSprite = gMonIcon_LaprasGigantamax, + .iconPalIndex = 2, + FOOTPRINT(Lapras) .isGigantamax = TRUE, + .levelUpLearnset = sLaprasLevelUpLearnset, + .teachableLearnset = sLaprasTeachableLearnset, + .formSpeciesIdTable = sLaprasFormSpeciesIdTable, + .formChangeTable = sLaprasFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_LAPRAS @@ -10821,52 +13392,50 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 23, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Ditto, 40, 40), + .frontPic = gMonFrontPic_Ditto, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Ditto, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, - BACK_PIC(Ditto, 48, 32), + .backPic = gMonBackPic_Ditto, + .backPicSize = MON_COORDS_SIZE(48, 32), .backPicYOffset = 17, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Ditto), - ICON(Ditto, 2), + .palette = gMonPalette_Ditto, + .shinyPalette = gMonShinyPalette_Ditto, + .iconSprite = gMonIcon_Ditto, + .iconPalIndex = 2, FOOTPRINT(Ditto) - LEARNSETS(Ditto), .tmIlliterate = TRUE, + .levelUpLearnset = sDittoLevelUpLearnset, + .teachableLearnset = sDittoTeachableLearnset, }, #endif //P_FAMILY_DITTO #if P_FAMILY_EEVEE -#define EEVEE_MISC_INFO \ - .baseHP = 55, \ - .baseAttack = 55, \ - .baseDefense = 50, \ - .baseSpeed = 55, \ - .baseSpAttack = 45, \ - .baseSpDefense = 65, \ - .types = MON_TYPES(TYPE_NORMAL), \ - .catchRate = 45, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 65 : 92, \ - .evYield_SpDefense = 1, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 35, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .abilities = { ABILITY_RUN_AWAY, ABILITY_ADAPTABILITY, ABILITY_ANTICIPATION }, \ - .bodyColor = BODY_COLOR_BROWN, \ - .speciesName = _("Eevee"), \ - .cryId = CRY_EEVEE, \ - .natDexNum = NATIONAL_DEX_EEVEE, \ - .categoryName = _("Evolution"), \ - FOOTPRINT(Eevee) \ - LEARNSETS(Eevee), \ - .formSpeciesIdTable = sEeveeFormSpeciesIdTable, \ - .formChangeTable = sEeveeFormChangeTable - [SPECIES_EEVEE] = { - EEVEE_MISC_INFO, + .baseHP = 55, + .baseAttack = 55, + .baseDefense = 50, + .baseSpeed = 55, + .baseSpAttack = 45, + .baseSpDefense = 65, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 65 : 92, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_RUN_AWAY, ABILITY_ADAPTABILITY, ABILITY_ANTICIPATION }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Eevee"), + .cryId = CRY_EEVEE, + .natDexNum = NATIONAL_DEX_EEVEE, + .categoryName = _("Evolution"), .height = 3, .weight = 65, .description = COMPOUND_STRING( @@ -10878,17 +13447,28 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 18, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Eevee, 40, 48), - FRONT_PIC_FEMALE(Eevee, 40, 48), + .frontPic = gMonFrontPic_Eevee, + .frontPicFemale = gMonFrontPic_EeveeF, + .frontPicSize = MON_COORDS_SIZE(40, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Eevee, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Eevee, 56, 48), - BACK_PIC_FEMALE(Eevee, 56, 48), + .backPic = gMonBackPic_Eevee, + .backPicFemale = gMonBackPic_EeveeF, + .backPicSize = MON_COORDS_SIZE(56, 48), + .backPicSizeFemale = MON_COORDS_SIZE(56, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Eevee), - ICON(Eevee, 2), + .palette = gMonPalette_Eevee, + .shinyPalette = gMonShinyPalette_Eevee, + .iconSprite = gMonIcon_Eevee, + .iconPalIndex = 2, + FOOTPRINT(Eevee) + .levelUpLearnset = sEeveeLevelUpLearnset, + .teachableLearnset = sEeveeTeachableLearnset, + .formSpeciesIdTable = sEeveeFormSpeciesIdTable, + .formChangeTable = sEeveeFormChangeTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON}, {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON}, {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON}, @@ -10904,7 +13484,27 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #if P_GIGANTAMAX_FORMS [SPECIES_EEVEE_GIGANTAMAX] = { - EEVEE_MISC_INFO, + .baseHP = 55, + .baseAttack = 55, + .baseDefense = 50, + .baseSpeed = 55, + .baseSpAttack = 45, + .baseSpDefense = 65, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 65 : 92, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_RUN_AWAY, ABILITY_ADAPTABILITY, ABILITY_ANTICIPATION }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Eevee"), + .cryId = CRY_EEVEE, + .natDexNum = NATIONAL_DEX_EEVEE, + .categoryName = _("Evolution"), .height = 180, .weight = 0, .description = COMPOUND_STRING( @@ -10916,16 +13516,25 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 18, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(EeveeGigantamax, 64, 64), + .frontPic = gMonFrontPic_EeveeGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 8, .frontAnimFrames = sAnims_EeveeGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(EeveeGigantamax, 64, 64), + .backPic = gMonBackPic_EeveeGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(EeveeGigantamax), - ICON(EeveeGigantamax, 2), + .palette = gMonPalette_EeveeGigantamax, + .shinyPalette = gMonShinyPalette_EeveeGigantamax, + .iconSprite = gMonIcon_EeveeGigantamax, + .iconPalIndex = 2, + FOOTPRINT(Eevee) .isGigantamax = TRUE, + .levelUpLearnset = sEeveeLevelUpLearnset, + .teachableLearnset = sEeveeTeachableLearnset, + .formSpeciesIdTable = sEeveeFormSpeciesIdTable, + .formChangeTable = sEeveeFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS @@ -10963,17 +13572,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Vaporeon, 48, 48), + .frontPic = gMonFrontPic_Vaporeon, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Vaporeon, .frontAnimId = ANIM_GLOW_BLUE, - BACK_PIC(Vaporeon, 64, 56), + .backPic = gMonBackPic_Vaporeon, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(Vaporeon), - ICON(Vaporeon, 0), + .palette = gMonPalette_Vaporeon, + .shinyPalette = gMonShinyPalette_Vaporeon, + .iconSprite = gMonIcon_Vaporeon, + .iconPalIndex = 0, FOOTPRINT(Vaporeon) - LEARNSETS(Vaporeon), + .levelUpLearnset = sVaporeonLevelUpLearnset, + .teachableLearnset = sVaporeonTeachableLearnset, }, [SPECIES_JOLTEON] = @@ -11010,17 +13624,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Jolteon, 48, 48), + .frontPic = gMonFrontPic_Jolteon, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Jolteon, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Jolteon, 56, 56), + .backPic = gMonBackPic_Jolteon, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(Jolteon), - ICON(Jolteon, 2), + .palette = gMonPalette_Jolteon, + .shinyPalette = gMonShinyPalette_Jolteon, + .iconSprite = gMonIcon_Jolteon, + .iconPalIndex = 2, FOOTPRINT(Jolteon) - LEARNSETS(Jolteon), + .levelUpLearnset = sJolteonLevelUpLearnset, + .teachableLearnset = sJolteonTeachableLearnset, }, [SPECIES_FLAREON] = @@ -11057,17 +13676,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Flareon, 56, 56), + .frontPic = gMonFrontPic_Flareon, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Flareon, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Flareon, 64, 56), + .backPic = gMonBackPic_Flareon, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Flareon), - ICON(Flareon, 3), + .palette = gMonPalette_Flareon, + .shinyPalette = gMonShinyPalette_Flareon, + .iconSprite = gMonIcon_Flareon, + .iconPalIndex = 3, FOOTPRINT(Flareon) - LEARNSETS(Flareon), + .levelUpLearnset = sFlareonLevelUpLearnset, + .teachableLearnset = sFlareonTeachableLearnset, }, #if P_GEN_2_CROSS_EVOS @@ -11105,17 +13729,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Espeon, 48, 56), + .frontPic = gMonFrontPic_Espeon, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Espeon, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Espeon, 64, 56), + .backPic = gMonBackPic_Espeon, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Espeon), - ICON(Espeon, 2), + .palette = gMonPalette_Espeon, + .shinyPalette = gMonShinyPalette_Espeon, + .iconSprite = gMonIcon_Espeon, + .iconPalIndex = 2, FOOTPRINT(Espeon) - LEARNSETS(Espeon), + .levelUpLearnset = sEspeonLevelUpLearnset, + .teachableLearnset = sEspeonTeachableLearnset, }, [SPECIES_UMBREON] = @@ -11152,17 +13781,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 11, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Umbreon, 40, 48), + .frontPic = gMonFrontPic_Umbreon, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Umbreon, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Umbreon, 64, 64), + .backPic = gMonBackPic_Umbreon, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Umbreon), - ICON(Umbreon, 0), + .palette = gMonPalette_Umbreon, + .shinyPalette = gMonShinyPalette_Umbreon, + .iconSprite = gMonIcon_Umbreon, + .iconPalIndex = 0, FOOTPRINT(Umbreon) - LEARNSETS(Umbreon), + .levelUpLearnset = sUmbreonLevelUpLearnset, + .teachableLearnset = sUmbreonTeachableLearnset, }, #endif //P_GEN_2_CROSS_EVOS @@ -11201,17 +13835,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 8, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Leafeon, 56, 48), + .frontPic = gMonFrontPic_Leafeon, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Leafeon, .frontAnimId = ANIM_SHRINK_GROW, - BACK_PIC(Leafeon, 48, 64), + .backPic = gMonBackPic_Leafeon, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Leafeon), - ICON(Leafeon, 1), + .palette = gMonPalette_Leafeon, + .shinyPalette = gMonShinyPalette_Leafeon, + .iconSprite = gMonIcon_Leafeon, + .iconPalIndex = 1, FOOTPRINT(Leafeon) - LEARNSETS(Leafeon), + .levelUpLearnset = sLeafeonLevelUpLearnset, + .teachableLearnset = sLeafeonTeachableLearnset, }, [SPECIES_GLACEON] = @@ -11248,17 +13887,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 10, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Glaceon, 64, 56), + .frontPic = gMonFrontPic_Glaceon, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Glaceon, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Glaceon, 56, 64), + .backPic = gMonBackPic_Glaceon, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Glaceon), - ICON(Glaceon, 0), + .palette = gMonPalette_Glaceon, + .shinyPalette = gMonShinyPalette_Glaceon, + .iconSprite = gMonIcon_Glaceon, + .iconPalIndex = 0, FOOTPRINT(Glaceon) - LEARNSETS(Glaceon), + .levelUpLearnset = sGlaceonLevelUpLearnset, + .teachableLearnset = sGlaceonTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS @@ -11298,17 +13942,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Sylveon, 48, 56), + .frontPic = gMonFrontPic_Sylveon, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Sylveon, .frontAnimId = ANIM_SHRINK_GROW, - BACK_PIC(Sylveon, 64, 64), + .backPic = gMonBackPic_Sylveon, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Sylveon), - ICON(Sylveon, 0), + .palette = gMonPalette_Sylveon, + .shinyPalette = gMonShinyPalette_Sylveon, + .iconSprite = gMonIcon_Sylveon, + .iconPalIndex = 0, FOOTPRINT(Sylveon) - LEARNSETS(Sylveon), + .levelUpLearnset = sSylveonLevelUpLearnset, + .teachableLearnset = sSylveonTeachableLearnset, }, #endif //P_GEN_6_CROSS_EVOS #endif //P_FAMILY_EEVEE @@ -11348,17 +13997,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Porygon, 40, 40), + .frontPic = gMonFrontPic_Porygon, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Porygon, .frontAnimId = ANIM_V_JUMPS_SMALL, - BACK_PIC(Porygon, 56, 40), + .backPic = gMonBackPic_Porygon, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Porygon), - ICON(Porygon, 0), + .palette = gMonPalette_Porygon, + .shinyPalette = gMonShinyPalette_Porygon, + .iconSprite = gMonIcon_Porygon, + .iconPalIndex = 0, FOOTPRINT(Porygon) - LEARNSETS(Porygon), + .levelUpLearnset = sPorygonLevelUpLearnset, + .teachableLearnset = sPorygonTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}, {EVO_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}), }, @@ -11398,18 +14052,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Porygon2, 40, 40), + .frontPic = gMonFrontPic_Porygon2, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Porygon2, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 9, - BACK_PIC(Porygon2, 56, 48), + .backPic = gMonBackPic_Porygon2, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Porygon2), - ICON(Porygon2, 0), + .palette = gMonPalette_Porygon2, + .shinyPalette = gMonShinyPalette_Porygon2, + .iconSprite = gMonIcon_Porygon2, + .iconPalIndex = 0, FOOTPRINT(Porygon2) - LEARNSETS(Porygon2), + .levelUpLearnset = sPorygon2LevelUpLearnset, + .teachableLearnset = sPorygon2TeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}, {EVO_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}), }, @@ -11455,18 +14114,23 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(PorygonZ, 40, 56), + .frontPic = gMonFrontPic_PorygonZ, + .frontPicSize = MON_COORDS_SIZE(40, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Porygon_Z, .frontAnimId = ANIM_CIRCLE_C_CLOCKWISE_SLOW, .enemyMonElevation = 12, - BACK_PIC(PorygonZ, 64, 56), + .backPic = gMonBackPic_PorygonZ, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(PorygonZ), - ICON(PorygonZ, 0), + .palette = gMonPalette_PorygonZ, + .shinyPalette = gMonShinyPalette_PorygonZ, + .iconSprite = gMonIcon_PorygonZ, + .iconPalIndex = 0, FOOTPRINT(PorygonZ) - LEARNSETS(PorygonZ), + .levelUpLearnset = sPorygonZLevelUpLearnset, + .teachableLearnset = sPorygonZTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_GEN_2_CROSS_EVOS @@ -11513,17 +14177,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 22, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Omanyte, 40, 40), + .frontPic = gMonFrontPic_Omanyte, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Omanyte, .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, - BACK_PIC(Omanyte, 48, 40), + .backPic = gMonBackPic_Omanyte, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Omanyte), - ICON(Omanyte, 0), + .palette = gMonPalette_Omanyte, + .shinyPalette = gMonShinyPalette_Omanyte, + .iconSprite = gMonIcon_Omanyte, + .iconPalIndex = 0, FOOTPRINT(Omanyte) - LEARNSETS(Omanyte), + .levelUpLearnset = sOmanyteLevelUpLearnset, + .teachableLearnset = sOmanyteTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_OMASTAR}), }, @@ -11561,17 +14230,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Omastar, 64, 56), + .frontPic = gMonFrontPic_Omastar, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Omastar, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Omastar, 56, 56), + .backPic = gMonBackPic_Omastar, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Omastar), - ICON(Omastar, 0), + .palette = gMonPalette_Omastar, + .shinyPalette = gMonShinyPalette_Omastar, + .iconSprite = gMonIcon_Omastar, + .iconPalIndex = 0, FOOTPRINT(Omastar) - LEARNSETS(Omastar), + .levelUpLearnset = sOmastarLevelUpLearnset, + .teachableLearnset = sOmastarTeachableLearnset, }, #endif //P_FAMILY_OMANYTE @@ -11616,17 +14290,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 21, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Kabuto, 40, 32), + .frontPic = gMonFrontPic_Kabuto, + .frontPicSize = MON_COORDS_SIZE(40, 32), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Kabuto, .frontAnimId = ANIM_H_SLIDE_WOBBLE, - BACK_PIC(Kabuto, 48, 40), + .backPic = gMonBackPic_Kabuto, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Kabuto), - ICON(Kabuto, 2), + .palette = gMonPalette_Kabuto, + .shinyPalette = gMonShinyPalette_Kabuto, + .iconSprite = gMonIcon_Kabuto, + .iconPalIndex = 2, FOOTPRINT(Kabuto) - LEARNSETS(Kabuto), + .levelUpLearnset = sKabutoLevelUpLearnset, + .teachableLearnset = sKabutoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_KABUTOPS}), }, @@ -11670,51 +14349,49 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Kabutops, 64, 64), + .frontPic = gMonFrontPic_Kabutops, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Kabutops, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Kabutops, 64, 56), + .backPic = gMonBackPic_Kabutops, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Kabutops), - ICON(Kabutops, 2), + .palette = gMonPalette_Kabutops, + .shinyPalette = gMonShinyPalette_Kabutops, + .iconSprite = gMonIcon_Kabutops, + .iconPalIndex = 2, FOOTPRINT(Kabutops) - LEARNSETS(Kabutops), + .levelUpLearnset = sKabutopsLevelUpLearnset, + .teachableLearnset = sKabutopsTeachableLearnset, }, #endif //P_FAMILY_KABUTO #if P_FAMILY_AERODACTYL -#define AERODACTYL_MISC_INFO \ - .types = MON_TYPES(TYPE_ROCK, TYPE_FLYING), \ - .catchRate = 45, \ - .evYield_Speed = 2, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 35, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), \ - .bodyColor = BODY_COLOR_PURPLE, \ - .speciesName = _("Aerodactyl"), \ - .natDexNum = NATIONAL_DEX_AERODACTYL, \ - .categoryName = _("Fossil"), \ - FOOTPRINT(Aerodactyl) \ - LEARNSETS(Aerodactyl), \ - .formSpeciesIdTable = sAerodactylFormSpeciesIdTable,\ - .formChangeTable = sAerodactylFormChangeTable - [SPECIES_AERODACTYL] = { - AERODACTYL_MISC_INFO, .baseHP = 80, .baseAttack = 105, .baseDefense = 65, .baseSpeed = 130, .baseSpAttack = 60, .baseSpDefense = 75, + .types = MON_TYPES(TYPE_ROCK, TYPE_FLYING), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 180 : 202, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_ROCK_HEAD, ABILITY_PRESSURE, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Aerodactyl"), .cryId = CRY_AERODACTYL, + .natDexNum = NATIONAL_DEX_AERODACTYL, + .categoryName = _("Fossil"), .height = 18, .weight = 590, .description = COMPOUND_STRING( @@ -11726,31 +14403,51 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 302, .trainerOffset = 4, - FRONT_PIC(Aerodactyl, 64, 64), + .frontPic = gMonFrontPic_Aerodactyl, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Aerodactyl, .frontAnimId = ANIM_V_SLIDE_SLOW, .enemyMonElevation = 9, - BACK_PIC(Aerodactyl, 64, 48), + .backPic = gMonBackPic_Aerodactyl, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Aerodactyl), - ICON(Aerodactyl, 2), + .palette = gMonPalette_Aerodactyl, + .shinyPalette = gMonShinyPalette_Aerodactyl, + .iconSprite = gMonIcon_Aerodactyl, + .iconPalIndex = 2, + FOOTPRINT(Aerodactyl) + .levelUpLearnset = sAerodactylLevelUpLearnset, + .teachableLearnset = sAerodactylTeachableLearnset, + .formSpeciesIdTable = sAerodactylFormSpeciesIdTable, + .formChangeTable = sAerodactylFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_AERODACTYL_MEGA] = { - AERODACTYL_MISC_INFO, .baseHP = 80, .baseAttack = 135, .baseDefense = 85, .baseSpeed = 150, .baseSpAttack = 70, .baseSpDefense = 95, + .types = MON_TYPES(TYPE_ROCK, TYPE_FLYING), + .catchRate = 45, .expYield = 215, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Aerodactyl"), .cryId = CRY_AERODACTYL_MEGA, + .natDexNum = NATIONAL_DEX_AERODACTYL, + .categoryName = _("Fossil"), .height = 21, .weight = 790, .description = COMPOUND_STRING( @@ -11761,17 +14458,26 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 302, .trainerOffset = 4, - FRONT_PIC(AerodactylMega, 64, 64), + .frontPic = gMonFrontPic_AerodactylMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_AerodactylMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 7, - BACK_PIC(AerodactylMega, 64, 64), + .backPic = gMonBackPic_AerodactylMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 8, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(AerodactylMega), - ICON(AerodactylMega, 2), + .palette = gMonPalette_AerodactylMega, + .shinyPalette = gMonShinyPalette_AerodactylMega, + .iconSprite = gMonIcon_AerodactylMega, + .iconPalIndex = 2, + FOOTPRINT(Aerodactyl) .isMegaEvolution = TRUE, + .levelUpLearnset = sAerodactylLevelUpLearnset, + .teachableLearnset = sAerodactylTeachableLearnset, + .formSpeciesIdTable = sAerodactylFormSpeciesIdTable, + .formChangeTable = sAerodactylFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_AERODACTYL @@ -11814,53 +14520,51 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Munchlax, 48, 48), + .frontPic = gMonFrontPic_Munchlax, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Munchlax, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Munchlax, 48, 56), + .backPic = gMonBackPic_Munchlax, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_GROW, - PALETTES(Munchlax), - ICON(Munchlax, 3), + .palette = gMonPalette_Munchlax, + .shinyPalette = gMonShinyPalette_Munchlax, + .iconSprite = gMonIcon_Munchlax, + .iconPalIndex = 3, FOOTPRINT(Munchlax) - LEARNSETS(Munchlax), + .levelUpLearnset = sMunchlaxLevelUpLearnset, + .teachableLearnset = sMunchlaxTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_SNORLAX}), }, #endif //P_GEN_4_CROSS_EVOS -#define SNORLAX_MISC_INFO \ - .baseHP = 160, \ - .baseAttack = 110, \ - .baseDefense = 65, \ - .baseSpeed = 30, \ - .baseSpAttack = 65, \ - .baseSpDefense = 110, \ - .types = MON_TYPES(TYPE_NORMAL), \ - .catchRate = 25, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 189 : 154, \ - .evYield_HP = 2, \ - .itemCommon = ITEM_LEFTOVERS, \ - .itemRare = ITEM_LEFTOVERS, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 40, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), \ - .abilities = { ABILITY_IMMUNITY, ABILITY_THICK_FAT, ABILITY_GLUTTONY }, \ - .bodyColor = BODY_COLOR_BLACK, \ - .speciesName = _("Snorlax"), \ - .cryId = CRY_SNORLAX, \ - .natDexNum = NATIONAL_DEX_SNORLAX, \ - .categoryName = _("Sleeping"), \ - FOOTPRINT(Snorlax) \ - LEARNSETS(Snorlax), \ - .formSpeciesIdTable = sSnorlaxFormSpeciesIdTable, \ - .formChangeTable = sSnorlaxFormChangeTable - [SPECIES_SNORLAX] = { - SNORLAX_MISC_INFO, + .baseHP = 160, + .baseAttack = 110, + .baseDefense = 65, + .baseSpeed = 30, + .baseSpAttack = 65, + .baseSpDefense = 110, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 25, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 189 : 154, + .evYield_HP = 2, + .itemCommon = ITEM_LEFTOVERS, + .itemRare = ITEM_LEFTOVERS, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), + .abilities = { ABILITY_IMMUNITY, ABILITY_THICK_FAT, ABILITY_GLUTTONY }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Snorlax"), + .cryId = CRY_SNORLAX, + .natDexNum = NATIONAL_DEX_SNORLAX, + .categoryName = _("Sleeping"), .height = 21, .weight = 4600, .description = COMPOUND_STRING( @@ -11872,21 +14576,52 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 4, .trainerScale = 423, .trainerOffset = 11, - FRONT_PIC(Snorlax, 64, 64), + .frontPic = gMonFrontPic_Snorlax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Snorlax, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Snorlax, 64, 40), + .backPic = gMonBackPic_Snorlax, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Snorlax), - ICON(Snorlax, 3), + .palette = gMonPalette_Snorlax, + .shinyPalette = gMonShinyPalette_Snorlax, + .iconSprite = gMonIcon_Snorlax, + .iconPalIndex = 3, + FOOTPRINT(Snorlax) + .levelUpLearnset = sSnorlaxLevelUpLearnset, + .teachableLearnset = sSnorlaxTeachableLearnset, + .formSpeciesIdTable = sSnorlaxFormSpeciesIdTable, + .formChangeTable = sSnorlaxFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_SNORLAX_GIGANTAMAX] = { - SNORLAX_MISC_INFO, + .baseHP = 160, + .baseAttack = 110, + .baseDefense = 65, + .baseSpeed = 30, + .baseSpAttack = 65, + .baseSpDefense = 110, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 25, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 189 : 154, + .evYield_HP = 2, + .itemCommon = ITEM_LEFTOVERS, + .itemRare = ITEM_LEFTOVERS, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), + .abilities = { ABILITY_IMMUNITY, ABILITY_THICK_FAT, ABILITY_GLUTTONY }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Snorlax"), + .cryId = CRY_SNORLAX, + .natDexNum = NATIONAL_DEX_SNORLAX, + .categoryName = _("Sleeping"), .height = 350, .weight = 0, .description = COMPOUND_STRING( @@ -11898,42 +14633,32 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 4, .trainerScale = 423, .trainerOffset = 11, - FRONT_PIC(SnorlaxGigantamax, 64, 64), + .frontPic = gMonFrontPic_SnorlaxGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_SnorlaxGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SnorlaxGigantamax, 64, 64), + .backPic = gMonBackPic_SnorlaxGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(SnorlaxGigantamax), - ICON(SnorlaxGigantamax, 3), + .palette = gMonPalette_SnorlaxGigantamax, + .shinyPalette = gMonShinyPalette_SnorlaxGigantamax, + .iconSprite = gMonIcon_SnorlaxGigantamax, + .iconPalIndex = 3, + FOOTPRINT(Snorlax) .isGigantamax = TRUE, + .levelUpLearnset = sSnorlaxLevelUpLearnset, + .teachableLearnset = sSnorlaxTeachableLearnset, + .formSpeciesIdTable = sSnorlaxFormSpeciesIdTable, + .formChangeTable = sSnorlaxFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_SNORLAX #if P_FAMILY_ARTICUNO -#define ARTICUNO_MISC_INFO \ - .catchRate = 3, \ - .genderRatio = MON_GENDERLESS, \ - .friendship = 35, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .speciesName = _("Articuno"), \ - .cryId = CRY_ARTICUNO, \ - .natDexNum = NATIONAL_DEX_ARTICUNO, \ - .height = 17, \ - .pokemonScale = 256, \ - .pokemonOffset = 0, \ - .trainerScale = 309, \ - .trainerOffset = 2, \ - FOOTPRINT(Articuno) \ - .formSpeciesIdTable = sArticunoFormSpeciesIdTable, \ - .isLegendary = TRUE - [SPECIES_ARTICUNO] = { - ARTICUNO_MISC_INFO, .baseHP = 90, .baseAttack = 85, .baseDefense = 100, @@ -11941,6 +14666,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 95, .baseSpDefense = 125, .types = MON_TYPES(TYPE_ICE, TYPE_FLYING), + .catchRate = 3, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 290, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -11949,32 +14675,51 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .expYield = 215, #endif .evYield_SpDefense = 3, + .genderRatio = MON_GENDERLESS, .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_SNOW_CLOAK }, .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Articuno"), + .cryId = CRY_ARTICUNO, + .natDexNum = NATIONAL_DEX_ARTICUNO, .categoryName = _("Freeze"), + .height = 17, .weight = 554, .description = COMPOUND_STRING( "Articuno is a legendary bird Pokémon that\n" "can control ice. The flapping of its wings\n" "chills the air. As a result, it is said that\n" "when this Pokémon flies, snow will fall."), - FRONT_PIC(Articuno, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 309, + .trainerOffset = 2, + .frontPic = gMonFrontPic_Articuno, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Articuno, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Articuno, 64, 56), + .backPic = gMonBackPic_Articuno, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(Articuno), - ICON(Articuno, 2), - LEARNSETS(Articuno), + .palette = gMonPalette_Articuno, + .shinyPalette = gMonShinyPalette_Articuno, + .iconSprite = gMonIcon_Articuno, + .iconPalIndex = 2, + FOOTPRINT(Articuno) + .isLegendary = TRUE, + .levelUpLearnset = sArticunoLevelUpLearnset, + .teachableLearnset = sArticunoTeachableLearnset, + .formSpeciesIdTable = sArticunoFormSpeciesIdTable, }, #if P_GALARIAN_FORMS [SPECIES_ARTICUNO_GALARIAN] = { - ARTICUNO_MISC_INFO, .baseHP = 90, .baseAttack = 85, .baseDefense = 85, @@ -11982,57 +14727,58 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 125, .baseSpDefense = 100, .types = MON_TYPES(TYPE_PSYCHIC, TYPE_FLYING), + .catchRate = 3, .expYield = 290, .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_COMPETITIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Articuno"), + .cryId = CRY_ARTICUNO, + .natDexNum = NATIONAL_DEX_ARTICUNO, .categoryName = _("Cruel"), + .height = 17, .weight = 509, .description = COMPOUND_STRING( "It fires beams that immobilize opponents\n" "as if they had been frozen solid.\n" "Its feather-like blades of psychic energy\n" "rip through thick iron sheets like paper."), - FRONT_PIC(ArticunoGalarian, 64, 56), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 309, + .trainerOffset = 2, + .frontPic = gMonFrontPic_ArticunoGalarian, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_ArticunoGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 10, - BACK_PIC(ArticunoGalarian, 64, 56), + .backPic = gMonBackPic_ArticunoGalarian, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ArticunoGalarian), - ICON(ArticunoGalarian, 2), - LEARNSETS(ArticunoGalarian), + .palette = gMonPalette_ArticunoGalarian, + .shinyPalette = gMonShinyPalette_ArticunoGalarian, + .iconSprite = gMonIcon_ArticunoGalarian, + .iconPalIndex = 2, + FOOTPRINT(Articuno) + .isLegendary = TRUE, .isGalarianForm = TRUE, + .levelUpLearnset = sArticunoGalarianLevelUpLearnset, + .teachableLearnset = sArticunoGalarianTeachableLearnset, + .formSpeciesIdTable = sArticunoFormSpeciesIdTable, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_ARTICUNO #if P_FAMILY_ZAPDOS -#define ZAPDOS_MISC_INFO \ - .catchRate = 3, \ - .genderRatio = MON_GENDERLESS, \ - .friendship = 35, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .bodyColor = BODY_COLOR_YELLOW, \ - .speciesName = _("Zapdos"), \ - .cryId = CRY_ZAPDOS, \ - .natDexNum = NATIONAL_DEX_ZAPDOS, \ - .height = 16, \ - .pokemonScale = 256, \ - .pokemonOffset = 0, \ - .trainerScale = 318, \ - .trainerOffset = 3, \ - FOOTPRINT(Zapdos) \ - .formSpeciesIdTable = sZapdosFormSpeciesIdTable, \ - .isLegendary = TRUE - [SPECIES_ZAPDOS] = { - ZAPDOS_MISC_INFO, .baseHP = 90, .baseAttack = 90, .baseDefense = 85, @@ -12040,6 +14786,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 125, .baseSpDefense = 90, .types = MON_TYPES(TYPE_ELECTRIC, TYPE_FLYING), + .catchRate = 3, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 290, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -12048,36 +14795,56 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .expYield = 216, #endif .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, .eggCycles = 80, - #if P_UPDATED_ABILITIES >= GEN_6 - .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_STATIC }, - #else - .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, - #endif + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + #if P_UPDATED_ABILITIES >= GEN_6 + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_STATIC }, + #else + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + #endif + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Zapdos"), + .cryId = CRY_ZAPDOS, + .natDexNum = NATIONAL_DEX_ZAPDOS, .categoryName = _("Electric"), + .height = 16, .weight = 526, .description = COMPOUND_STRING( "Zapdos is a legendary bird Pokémon that\n" "has the ability to control electricity.\n" "It usually lives in thunderclouds. It gains\n" "power if it is stricken by lightning bolts."), - FRONT_PIC(Zapdos, 64, 56), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 318, + .trainerOffset = 3, + .frontPic = gMonFrontPic_Zapdos, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Zapdos, .frontAnimId = ANIM_FLASH_YELLOW, .enemyMonElevation = 8, - BACK_PIC(Zapdos, 64, 40), + .backPic = gMonBackPic_Zapdos, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(Zapdos), - ICON(Zapdos, 0), - LEARNSETS(Zapdos), + .palette = gMonPalette_Zapdos, + .shinyPalette = gMonShinyPalette_Zapdos, + .iconSprite = gMonIcon_Zapdos, + .iconPalIndex = 0, + FOOTPRINT(Zapdos) + .isLegendary = TRUE, + .levelUpLearnset = sZapdosLevelUpLearnset, + .teachableLearnset = sZapdosTeachableLearnset, + .formSpeciesIdTable = sZapdosFormSpeciesIdTable, }, #if P_GALARIAN_FORMS [SPECIES_ZAPDOS_GALARIAN] = { - ZAPDOS_MISC_INFO, .baseHP = 90, .baseAttack = 125, .baseDefense = 90, @@ -12085,54 +14852,57 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 85, .baseSpDefense = 90, .types = MON_TYPES(TYPE_FIGHTING, TYPE_FLYING), + .catchRate = 3, .expYield = 290, .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_DEFIANT, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Zapdos"), + .cryId = CRY_ZAPDOS, + .natDexNum = NATIONAL_DEX_ZAPDOS, .categoryName = _("Strong Legs"), + .height = 16, .weight = 582, .description = COMPOUND_STRING( "When its feathers rub together, they\n" "produce a crackling sound like the\n" "zapping of electricity. Apparently, it runs\n" "through the mountains at over 180 mph."), - FRONT_PIC(ZapdosGalarian, 48, 64), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 318, + .trainerOffset = 3, + .frontPic = gMonFrontPic_ZapdosGalarian, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_ZapdosGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ZapdosGalarian, 56, 48), + .backPic = gMonBackPic_ZapdosGalarian, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ZapdosGalarian), - ICON(ZapdosGalarian, 0), - LEARNSETS(ZapdosGalarian), + .palette = gMonPalette_ZapdosGalarian, + .shinyPalette = gMonShinyPalette_ZapdosGalarian, + .iconSprite = gMonIcon_ZapdosGalarian, + .iconPalIndex = 0, + FOOTPRINT(Zapdos) + .isLegendary = TRUE, .isGalarianForm = TRUE, + .levelUpLearnset = sZapdosGalarianLevelUpLearnset, + .teachableLearnset = sZapdosGalarianTeachableLearnset, + .formSpeciesIdTable = sZapdosFormSpeciesIdTable, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_ZAPDOS #if P_FAMILY_MOLTRES -#define MOLTRES_MISC_INFO \ - .catchRate = 3, \ - .genderRatio = MON_GENDERLESS, \ - .friendship = 35, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .speciesName = _("Moltres"), \ - .cryId = CRY_MOLTRES, \ - .natDexNum = NATIONAL_DEX_MOLTRES, \ - .height = 20, \ - .pokemonScale = 270, \ - .pokemonOffset = 0, \ - .trainerScale = 387, \ - .trainerOffset = 8, \ - FOOTPRINT(Moltres) \ - .formSpeciesIdTable = sMoltresFormSpeciesIdTable, \ - .isLegendary = TRUE - [SPECIES_MOLTRES] = { - MOLTRES_MISC_INFO, .baseHP = 90, .baseAttack = 100, .baseDefense = 90, @@ -12140,6 +14910,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 125, .baseSpDefense = 85, .types = MON_TYPES(TYPE_FIRE, TYPE_FLYING), + .catchRate = 3, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 290, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -12148,32 +14919,51 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .expYield = 217, #endif .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FLAME_BODY }, .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Moltres"), + .cryId = CRY_MOLTRES, + .natDexNum = NATIONAL_DEX_MOLTRES, .categoryName = _("Flame"), + .height = 20, .weight = 600, .description = COMPOUND_STRING( "Moltres is a legendary bird Pokémon\n" "that can control fire. If injured, it is said\n" "to dip its body in the molten magma of\n" "a volcano to burn and heal itself."), - FRONT_PIC(Moltres, 64, 64), + .pokemonScale = 270, + .pokemonOffset = 0, + .trainerScale = 387, + .trainerOffset = 8, + .frontPic = gMonFrontPic_Moltres, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Moltres, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Moltres, 64, 56), + .backPic = gMonBackPic_Moltres, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Moltres), - ICON(Moltres, 0), - LEARNSETS(Moltres), + .palette = gMonPalette_Moltres, + .shinyPalette = gMonShinyPalette_Moltres, + .iconSprite = gMonIcon_Moltres, + .iconPalIndex = 0, + FOOTPRINT(Moltres) + .isLegendary = TRUE, + .levelUpLearnset = sMoltresLevelUpLearnset, + .teachableLearnset = sMoltresTeachableLearnset, + .formSpeciesIdTable = sMoltresFormSpeciesIdTable, }, #if P_GALARIAN_FORMS [SPECIES_MOLTRES_GALARIAN] = { - MOLTRES_MISC_INFO, .baseHP = 90, .baseAttack = 85, .baseDefense = 90, @@ -12181,29 +14971,50 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 100, .baseSpDefense = 125, .types = MON_TYPES(TYPE_DARK, TYPE_FLYING), + .catchRate = 3, .expYield = 290, .evYield_SpDefense = 3, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_BERSERK, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Moltres"), + .cryId = CRY_MOLTRES, + .natDexNum = NATIONAL_DEX_MOLTRES, .categoryName = _("Malevolent"), + .height = 20, .weight = 660, .description = COMPOUND_STRING( "This Pokémon's sinister, flame-like aura\n" "will consume the spirit of any creature\n" "it hits. Victims become burned-out\n" "shadows of themselves."), - FRONT_PIC(MoltresGalarian, 64, 64), + .pokemonScale = 270, + .pokemonOffset = 0, + .trainerScale = 387, + .trainerOffset = 8, + .frontPic = gMonFrontPic_MoltresGalarian, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_MoltresGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(MoltresGalarian, 56, 56), + .backPic = gMonBackPic_MoltresGalarian, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(MoltresGalarian), - ICON(MoltresGalarian, 0), - LEARNSETS(MoltresGalarian), + .palette = gMonPalette_MoltresGalarian, + .shinyPalette = gMonShinyPalette_MoltresGalarian, + .iconSprite = gMonIcon_MoltresGalarian, + .iconPalIndex = 0, + FOOTPRINT(Moltres) + .isLegendary = TRUE, .isGalarianForm = TRUE, + .levelUpLearnset = sMoltresGalarianLevelUpLearnset, + .teachableLearnset = sMoltresGalarianTeachableLearnset, + .formSpeciesIdTable = sMoltresFormSpeciesIdTable, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_MOLTRES @@ -12244,17 +15055,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 8, .trainerScale = 386, .trainerOffset = 6, - FRONT_PIC(Dratini, 56, 48), + .frontPic = gMonFrontPic_Dratini, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Dratini, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Dratini, 56, 48), + .backPic = gMonBackPic_Dratini, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Dratini), - ICON(Dratini, 0), + .palette = gMonPalette_Dratini, + .shinyPalette = gMonShinyPalette_Dratini, + .iconSprite = gMonIcon_Dratini, + .iconPalIndex = 0, FOOTPRINT(Dratini) - LEARNSETS(Dratini), + .levelUpLearnset = sDratiniLevelUpLearnset, + .teachableLearnset = sDratiniTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_DRAGONAIR}), }, @@ -12293,17 +15109,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 411, .trainerOffset = 5, - FRONT_PIC(Dragonair, 64, 64), + .frontPic = gMonFrontPic_Dragonair, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Dragonair, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Dragonair, 40, 56), + .backPic = gMonBackPic_Dragonair, + .backPicSize = MON_COORDS_SIZE(40, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Dragonair), - ICON(Dragonair, 0), + .palette = gMonPalette_Dragonair, + .shinyPalette = gMonShinyPalette_Dragonair, + .iconSprite = gMonIcon_Dragonair, + .iconPalIndex = 0, FOOTPRINT(Dragonair) - LEARNSETS(Dragonair), + .levelUpLearnset = sDragonairLevelUpLearnset, + .teachableLearnset = sDragonairTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 55, SPECIES_DRAGONITE}), }, @@ -12348,42 +15169,28 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 309, .trainerOffset = 4, - FRONT_PIC(Dragonite, 64, 64), + .frontPic = gMonFrontPic_Dragonite, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Dragonite, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Dragonite, 64, 64), + .backPic = gMonBackPic_Dragonite, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Dragonite), - ICON(Dragonite, 2), + .palette = gMonPalette_Dragonite, + .shinyPalette = gMonShinyPalette_Dragonite, + .iconSprite = gMonIcon_Dragonite, + .iconPalIndex = 2, FOOTPRINT(Dragonite) - LEARNSETS(Dragonite), + .levelUpLearnset = sDragoniteLevelUpLearnset, + .teachableLearnset = sDragoniteTeachableLearnset, }, #endif //P_FAMILY_DRATINI #if P_FAMILY_MEWTWO -#define SPECIES_MEWTWO_MISC_INFO \ - .catchRate = 3, \ - .evYield_SpAttack = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .bodyColor = BODY_COLOR_PURPLE, \ - .speciesName = _("Mewtwo"), \ - .natDexNum = NATIONAL_DEX_MEWTWO, \ - .categoryName = _("Genetic"), \ - FOOTPRINT(Mewtwo) \ - LEARNSETS(Mewtwo), \ - .formSpeciesIdTable = sMewtwoFormSpeciesIdTable, \ - .formChangeTable = sMewtwoFormChangeTable, \ - .isLegendary = TRUE - [SPECIES_MEWTWO] = { - SPECIES_MEWTWO_MISC_INFO, .baseHP = 106, .baseAttack = 110, .baseDefense = 90, @@ -12391,6 +15198,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 154, .baseSpDefense = 90, .types = MON_TYPES(TYPE_PSYCHIC), + .catchRate = 3, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 340, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -12398,8 +15206,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #else .expYield = 220, #endif + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Mewtwo"), .cryId = CRY_MEWTWO, + .natDexNum = NATIONAL_DEX_MEWTWO, + .categoryName = _("Genetic"), .height = 20, .weight = 1220, .description = COMPOUND_STRING( @@ -12411,21 +15229,30 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 309, .trainerOffset = 4, - FRONT_PIC(Mewtwo, 64, 64), + .frontPic = gMonFrontPic_Mewtwo, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Mewtwo, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Mewtwo, 64, 64), + .backPic = gMonBackPic_Mewtwo, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(Mewtwo), - ICON(Mewtwo, 2), + .palette = gMonPalette_Mewtwo, + .shinyPalette = gMonShinyPalette_Mewtwo, + .iconSprite = gMonIcon_Mewtwo, + .iconPalIndex = 2, + FOOTPRINT(Mewtwo) + .isLegendary = TRUE, + .levelUpLearnset = sMewtwoLevelUpLearnset, + .teachableLearnset = sMewtwoTeachableLearnset, + .formSpeciesIdTable = sMewtwoFormSpeciesIdTable, + .formChangeTable = sMewtwoFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_MEWTWO_MEGA_X] = { - SPECIES_MEWTWO_MISC_INFO, .baseHP = 106, .baseAttack = 190, .baseDefense = 100, @@ -12433,10 +15260,20 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 154, .baseSpDefense = 100, .types = MON_TYPES(TYPE_PSYCHIC, TYPE_FIGHTING), + .catchRate = 3, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 390 : 351, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_STEADFAST, ABILITY_STEADFAST, ABILITY_STEADFAST }, - .isMegaEvolution = TRUE, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Mewtwo"), .cryId = CRY_MEWTWO_MEGA_X, + .natDexNum = NATIONAL_DEX_MEWTWO, + .categoryName = _("Genetic"), .height = 23, .weight = 1270, .description = COMPOUND_STRING( @@ -12448,20 +15285,30 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 309, .trainerOffset = 4, - FRONT_PIC(MewtwoMegaX, 48, 64), + .frontPic = gMonFrontPic_MewtwoMegaX, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_MewtwoMegaX, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(MewtwoMegaX, 56, 64), + .backPic = gMonBackPic_MewtwoMegaX, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(MewtwoMegaX), - ICON(MewtwoMegaX, 2), + .palette = gMonPalette_MewtwoMegaX, + .shinyPalette = gMonShinyPalette_MewtwoMegaX, + .iconSprite = gMonIcon_MewtwoMegaX, + .iconPalIndex = 2, + FOOTPRINT(Mewtwo) + .isLegendary = TRUE, + .isMegaEvolution = TRUE, + .levelUpLearnset = sMewtwoLevelUpLearnset, + .teachableLearnset = sMewtwoTeachableLearnset, + .formSpeciesIdTable = sMewtwoFormSpeciesIdTable, + .formChangeTable = sMewtwoFormChangeTable, }, [SPECIES_MEWTWO_MEGA_Y] = { - SPECIES_MEWTWO_MISC_INFO, .baseHP = 106, .baseAttack = 150, .baseDefense = 70, @@ -12469,10 +15316,20 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 194, .baseSpDefense = 120, .types = MON_TYPES(TYPE_PSYCHIC), + .catchRate = 3, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 390 : 351, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_INSOMNIA, ABILITY_INSOMNIA, ABILITY_INSOMNIA }, - .isMegaEvolution = TRUE, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Mewtwo"), .cryId = CRY_MEWTWO_MEGA_Y, + .natDexNum = NATIONAL_DEX_MEWTWO, + .categoryName = _("Genetic"), .height = 15, .weight = 330, .description = COMPOUND_STRING( @@ -12484,16 +15341,27 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, .trainerScale = 309, .trainerOffset = 4, - FRONT_PIC(MewtwoMegaY, 40, 64), + .frontPic = gMonFrontPic_MewtwoMegaY, + .frontPicSize = MON_COORDS_SIZE(40, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_MewtwoMegaY, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 3, - BACK_PIC(MewtwoMegaY, 64, 64), + .backPic = gMonBackPic_MewtwoMegaY, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(MewtwoMegaY), - ICON(MewtwoMegaY, 2), + .palette = gMonPalette_MewtwoMegaY, + .shinyPalette = gMonShinyPalette_MewtwoMegaY, + .iconSprite = gMonIcon_MewtwoMegaY, + .iconPalIndex = 2, + FOOTPRINT(Mewtwo) + .isLegendary = TRUE, + .isMegaEvolution = TRUE, + .levelUpLearnset = sMewtwoLevelUpLearnset, + .teachableLearnset = sMewtwoTeachableLearnset, + .formSpeciesIdTable = sMewtwoFormSpeciesIdTable, + .formChangeTable = sMewtwoFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_MEWTWO @@ -12526,7 +15394,6 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_SYNCHRONIZE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PINK, - .isMythical = TRUE, .speciesName = _("Mew"), .cryId = CRY_MEW, .natDexNum = NATIONAL_DEX_MEW, @@ -12542,18 +15409,24 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = -2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Mew, 64, 48), + .frontPic = gMonFrontPic_Mew, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Mew, .frontAnimId = ANIM_ZIGZAG_SLOW, .enemyMonElevation = 11, - BACK_PIC(Mew, 64, 64), + .backPic = gMonBackPic_Mew, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Mew), - ICON(Mew, 0), + .palette = gMonPalette_Mew, + .shinyPalette = gMonShinyPalette_Mew, + .iconSprite = gMonIcon_Mew, + .iconPalIndex = 0, FOOTPRINT(Mew) - LEARNSETS(Mew), + .isMythical = TRUE, + .levelUpLearnset = sMewLevelUpLearnset, + .teachableLearnset = sMewTeachableLearnset, }, #endif //P_FAMILY_MEW diff --git a/src/data/pokemon/species_info/gen_2.h b/src/data/pokemon/species_info/gen_2.h index 531feab24c..5a2065021f 100644 --- a/src/data/pokemon/species_info/gen_2.h +++ b/src/data/pokemon/species_info/gen_2.h @@ -38,17 +38,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Chikorita, 48, 48), + .frontPic = gMonFrontPic_Chikorita, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Chikorita, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Chikorita, 56, 48), + .backPic = gMonBackPic_Chikorita, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Chikorita), - ICON(Chikorita, 1), + .palette = gMonPalette_Chikorita, + .shinyPalette = gMonShinyPalette_Chikorita, + .iconSprite = gMonIcon_Chikorita, + .iconPalIndex = 1, FOOTPRINT(Chikorita) - LEARNSETS(Chikorita), + .levelUpLearnset = sChikoritaLevelUpLearnset, + .teachableLearnset = sChikoritaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_BAYLEEF}), }, @@ -87,17 +92,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Bayleef, 48, 64), + .frontPic = gMonFrontPic_Bayleef, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Bayleef, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Bayleef, 64, 56), + .backPic = gMonBackPic_Bayleef, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Bayleef), - ICON(Bayleef, 1), + .palette = gMonPalette_Bayleef, + .shinyPalette = gMonShinyPalette_Bayleef, + .iconSprite = gMonIcon_Bayleef, + .iconPalIndex = 1, FOOTPRINT(Bayleef) - LEARNSETS(Bayleef), + .levelUpLearnset = sBayleefLevelUpLearnset, + .teachableLearnset = sBayleefTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_MEGANIUM}), }, @@ -142,19 +152,26 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 277, .trainerOffset = 1, - FRONT_PIC(Meganium, 48, 64), - FRONT_PIC_FEMALE(Meganium, 48, 64), + .frontPic = gMonFrontPic_Meganium, + .frontPicFemale = gMonFrontPic_MeganiumF, + .frontPicSize = MON_COORDS_SIZE(48, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Meganium, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Meganium, 56, 64), - BACK_PIC_FEMALE(Meganium, 56, 64), + .backPic = gMonBackPic_Meganium, + .backPicFemale = gMonBackPic_MeganiumF, + .backPicSize = MON_COORDS_SIZE(56, 64), + .backPicSizeFemale = MON_COORDS_SIZE(56, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Meganium), - ICON(Meganium, 1), + .palette = gMonPalette_Meganium, + .shinyPalette = gMonShinyPalette_Meganium, + .iconSprite = gMonIcon_Meganium, + .iconPalIndex = 1, FOOTPRINT(Meganium) - LEARNSETS(Meganium), + .levelUpLearnset = sMeganiumLevelUpLearnset, + .teachableLearnset = sMeganiumTeachableLearnset, }, #endif //P_FAMILY_CHIKORITA @@ -193,17 +210,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 21, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cyndaquil, 48, 40), + .frontPic = gMonFrontPic_Cyndaquil, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Cyndaquil, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Cyndaquil, 64, 64), + .backPic = gMonBackPic_Cyndaquil, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Cyndaquil), - ICON(Cyndaquil, 3), + .palette = gMonPalette_Cyndaquil, + .shinyPalette = gMonShinyPalette_Cyndaquil, + .iconSprite = gMonIcon_Cyndaquil, + .iconPalIndex = 3, FOOTPRINT(Cyndaquil) - LEARNSETS(Cyndaquil), + .levelUpLearnset = sCyndaquilLevelUpLearnset, + .teachableLearnset = sCyndaquilTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_QUILAVA}), }, @@ -242,17 +264,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 11, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Quilava, 64, 48), + .frontPic = gMonFrontPic_Quilava, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Quilava, .frontAnimId = ANIM_H_STRETCH, - BACK_PIC(Quilava, 64, 64), + .backPic = gMonBackPic_Quilava, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Quilava), - ICON(Quilava, 3), + .palette = gMonPalette_Quilava, + .shinyPalette = gMonShinyPalette_Quilava, + .iconSprite = gMonIcon_Quilava, + .iconPalIndex = 3, FOOTPRINT(Quilava) - LEARNSETS(Quilava), + .levelUpLearnset = sQuilavaLevelUpLearnset, + .teachableLearnset = sQuilavaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_TYPHLOSION}, {EVO_NONE, 0, SPECIES_TYPHLOSION_HISUIAN}), }, @@ -265,25 +292,8 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = #define TYPHLOSION_EXP_YIELD 209 #endif -#define TYPHLOSION_MISC_INFO \ - .catchRate = 45, \ - .expYield = TYPHLOSION_EXP_YIELD, \ - .evYield_SpAttack = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .bodyColor = BODY_COLOR_YELLOW, \ - .speciesName = _("Typhlosion"), \ - .cryId = CRY_TYPHLOSION, \ - .natDexNum = NATIONAL_DEX_TYPHLOSION, \ - FOOTPRINT(Typhlosion) \ - .formSpeciesIdTable = sTyphlosionFormSpeciesIdTable - [SPECIES_TYPHLOSION] = { - TYPHLOSION_MISC_INFO, .baseHP = 78, .baseAttack = 84, .baseDefense = 78, @@ -291,7 +301,19 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .baseSpAttack = 109, .baseSpDefense = 85, .types = MON_TYPES(TYPE_FIRE), + .catchRate = 45, + .expYield = TYPHLOSION_EXP_YIELD, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Typhlosion"), + .cryId = CRY_TYPHLOSION, + .natDexNum = NATIONAL_DEX_TYPHLOSION, .categoryName = _("Volcano"), .height = 17, .weight = 795, @@ -304,23 +326,29 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 268, .trainerOffset = 1, - FRONT_PIC(Typhlosion, 56, 64), + .frontPic = gMonFrontPic_Typhlosion, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Typhlosion, .frontAnimId = ANIM_V_SHAKE, .frontAnimDelay = 20, - BACK_PIC(Typhlosion, 64, 64), + .backPic = gMonBackPic_Typhlosion, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Typhlosion), - ICON(Typhlosion, 3), - LEARNSETS(Typhlosion), + .palette = gMonPalette_Typhlosion, + .shinyPalette = gMonShinyPalette_Typhlosion, + .iconSprite = gMonIcon_Typhlosion, + .iconPalIndex = 3, + FOOTPRINT(Typhlosion) + .levelUpLearnset = sTyphlosionLevelUpLearnset, + .teachableLearnset = sTyphlosionTeachableLearnset, + .formSpeciesIdTable = sTyphlosionFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_TYPHLOSION_HISUIAN] = { - TYPHLOSION_MISC_INFO, .baseHP = 73, .baseAttack = 84, .baseDefense = 78, @@ -328,7 +356,19 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .baseSpAttack = 119, .baseSpDefense = 85, .types = MON_TYPES(TYPE_FIRE, TYPE_GHOST), + .catchRate = 45, + .expYield = TYPHLOSION_EXP_YIELD, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_FRISK }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Typhlosion"), + .cryId = CRY_TYPHLOSION, + .natDexNum = NATIONAL_DEX_TYPHLOSION, .categoryName = _("Ghost Flame"), .height = 16, .weight = 698, @@ -341,17 +381,24 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 268, .trainerOffset = 1, - FRONT_PIC(TyphlosionHisuian, 48, 64), + .frontPic = gMonFrontPic_TyphlosionHisuian, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_TyphlosionHisuian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(TyphlosionHisuian, 64, 56), + .backPic = gMonBackPic_TyphlosionHisuian, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(TyphlosionHisuian), - ICON(TyphlosionHisuian, 1), - LEARNSETS(TyphlosionHisuian), + .palette = gMonPalette_TyphlosionHisuian, + .shinyPalette = gMonShinyPalette_TyphlosionHisuian, + .iconSprite = gMonIcon_TyphlosionHisuian, + .iconPalIndex = 1, + FOOTPRINT(Typhlosion) .isHisuianForm = TRUE, + .levelUpLearnset = sTyphlosionHisuianLevelUpLearnset, + .teachableLearnset = sTyphlosionHisuianTeachableLearnset, + .formSpeciesIdTable = sTyphlosionFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_CYNDAQUIL @@ -391,17 +438,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Totodile, 40, 40), + .frontPic = gMonFrontPic_Totodile, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Totodile, .frontAnimId = ANIM_H_JUMPS, - BACK_PIC(Totodile, 56, 48), + .backPic = gMonBackPic_Totodile, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Totodile), - ICON(Totodile, 0), + .palette = gMonPalette_Totodile, + .shinyPalette = gMonShinyPalette_Totodile, + .iconSprite = gMonIcon_Totodile, + .iconPalIndex = 0, FOOTPRINT(Totodile) - LEARNSETS(Totodile), + .levelUpLearnset = sTotodileLevelUpLearnset, + .teachableLearnset = sTotodileTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_CROCONAW}), }, @@ -441,17 +493,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Croconaw, 48, 56), + .frontPic = gMonFrontPic_Croconaw, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Croconaw, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Croconaw, 56, 64), + .backPic = gMonBackPic_Croconaw, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Croconaw), - ICON(Croconaw, 0), + .palette = gMonPalette_Croconaw, + .shinyPalette = gMonShinyPalette_Croconaw, + .iconSprite = gMonIcon_Croconaw, + .iconPalIndex = 0, FOOTPRINT(Croconaw) - LEARNSETS(Croconaw), + .levelUpLearnset = sCroconawLevelUpLearnset, + .teachableLearnset = sCroconawTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_FERALIGATR}), }, @@ -496,18 +553,23 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 342, .trainerOffset = 7, - FRONT_PIC(Feraligatr, 64, 64), + .frontPic = gMonFrontPic_Feraligatr, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Feraligatr, .frontAnimId = ANIM_H_SHAKE, .frontAnimDelay = 5, - BACK_PIC(Feraligatr, 56, 64), + .backPic = gMonBackPic_Feraligatr, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Feraligatr), - ICON(Feraligatr, 0), + .palette = gMonPalette_Feraligatr, + .shinyPalette = gMonShinyPalette_Feraligatr, + .iconSprite = gMonIcon_Feraligatr, + .iconPalIndex = 0, FOOTPRINT(Feraligatr) - LEARNSETS(Feraligatr), + .levelUpLearnset = sFeraligatrLevelUpLearnset, + .teachableLearnset = sFeraligatrTeachableLearnset, }, #endif //P_FAMILY_TOTODILE @@ -546,17 +608,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Sentret, 40, 64), + .frontPic = gMonFrontPic_Sentret, + .frontPicSize = MON_COORDS_SIZE(40, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Sentret, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Sentret, 48, 64), + .backPic = gMonBackPic_Sentret, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Sentret), - ICON(Sentret, 2), + .palette = gMonPalette_Sentret, + .shinyPalette = gMonShinyPalette_Sentret, + .iconSprite = gMonIcon_Sentret, + .iconPalIndex = 2, FOOTPRINT(Sentret) - LEARNSETS(Sentret), + .levelUpLearnset = sSentretLevelUpLearnset, + .teachableLearnset = sSentretTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_FURRET}), }, @@ -594,17 +661,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 11, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Furret, 48, 56), + .frontPic = gMonFrontPic_Furret, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Furret, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(Furret, 64, 56), + .backPic = gMonBackPic_Furret, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Furret), - ICON(Furret, 2), + .palette = gMonPalette_Furret, + .shinyPalette = gMonShinyPalette_Furret, + .iconSprite = gMonIcon_Furret, + .iconPalIndex = 2, FOOTPRINT(Furret) - LEARNSETS(Furret), + .levelUpLearnset = sFurretLevelUpLearnset, + .teachableLearnset = sFurretTeachableLearnset, }, #endif //P_FAMILY_SENTRET @@ -643,17 +715,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = -2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Hoothoot, 40, 40), + .frontPic = gMonFrontPic_Hoothoot, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Hoothoot, .frontAnimId = ANIM_V_SLIDE_SLOW, - BACK_PIC(Hoothoot, 56, 64), + .backPic = gMonBackPic_Hoothoot, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Hoothoot), - ICON(Hoothoot, 2), + .palette = gMonPalette_Hoothoot, + .shinyPalette = gMonShinyPalette_Hoothoot, + .iconSprite = gMonIcon_Hoothoot, + .iconPalIndex = 2, FOOTPRINT(Hoothoot) - LEARNSETS(Hoothoot), + .levelUpLearnset = sHoothootLevelUpLearnset, + .teachableLearnset = sHoothootTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_NOCTOWL}), }, @@ -697,17 +774,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Noctowl, 40, 64), + .frontPic = gMonFrontPic_Noctowl, + .frontPicSize = MON_COORDS_SIZE(40, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Noctowl, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Noctowl, 48, 64), + .backPic = gMonBackPic_Noctowl, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Noctowl), - ICON(Noctowl, 2), + .palette = gMonPalette_Noctowl, + .shinyPalette = gMonShinyPalette_Noctowl, + .iconSprite = gMonIcon_Noctowl, + .iconPalIndex = 2, FOOTPRINT(Noctowl) - LEARNSETS(Noctowl), + .levelUpLearnset = sNoctowlLevelUpLearnset, + .teachableLearnset = sNoctowlTeachableLearnset, }, #endif //P_FAMILY_HOOTHOOT @@ -746,19 +828,26 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Ledyba, 48, 48), - FRONT_PIC_FEMALE(Ledyba, 48, 48), + .frontPic = gMonFrontPic_Ledyba, + .frontPicFemale = gMonFrontPic_LedybaF, + .frontPicSize = MON_COORDS_SIZE(48, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Ledyba, .frontAnimId = ANIM_V_JUMPS_SMALL, - BACK_PIC(Ledyba, 56, 48), - BACK_PIC_FEMALE(Ledyba, 56, 48), + .backPic = gMonBackPic_Ledyba, + .backPicFemale = gMonBackPic_LedybaF, + .backPicSize = MON_COORDS_SIZE(56, 48), + .backPicSizeFemale = MON_COORDS_SIZE(56, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Ledyba), - ICON(Ledyba, 0), + .palette = gMonPalette_Ledyba, + .shinyPalette = gMonShinyPalette_Ledyba, + .iconSprite = gMonIcon_Ledyba, + .iconPalIndex = 0, FOOTPRINT(Ledyba) - LEARNSETS(Ledyba), + .levelUpLearnset = sLedybaLevelUpLearnset, + .teachableLearnset = sLedybaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_LEDIAN}), }, @@ -796,20 +885,27 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Ledian, 48, 56), - FRONT_PIC_FEMALE(Ledian, 48, 56), + .frontPic = gMonFrontPic_Ledian, + .frontPicFemale = gMonFrontPic_LedianF, + .frontPicSize = MON_COORDS_SIZE(48, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Ledian, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 10, - BACK_PIC(Ledian, 64, 64), - BACK_PIC_FEMALE(Ledian, 64, 64), + .backPic = gMonBackPic_Ledian, + .backPicFemale = gMonBackPic_LedianF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Ledian), - ICON(Ledian, 0), + .palette = gMonPalette_Ledian, + .shinyPalette = gMonShinyPalette_Ledian, + .iconSprite = gMonIcon_Ledian, + .iconPalIndex = 0, FOOTPRINT(Ledian) - LEARNSETS(Ledian), + .levelUpLearnset = sLedianLevelUpLearnset, + .teachableLearnset = sLedianTeachableLearnset, }, #endif //P_FAMILY_LEDYBA @@ -848,17 +944,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 21, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Spinarak, 48, 32), + .frontPic = gMonFrontPic_Spinarak, + .frontPicSize = MON_COORDS_SIZE(48, 32), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Spinarak, .frontAnimId = ANIM_CIRCLE_C_CLOCKWISE_SLOW, - BACK_PIC(Spinarak, 64, 32), + .backPic = gMonBackPic_Spinarak, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 16, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Spinarak), - ICON(Spinarak, 1), + .palette = gMonPalette_Spinarak, + .shinyPalette = gMonShinyPalette_Spinarak, + .iconSprite = gMonIcon_Spinarak, + .iconPalIndex = 1, FOOTPRINT(Spinarak) - LEARNSETS(Spinarak), + .levelUpLearnset = sSpinarakLevelUpLearnset, + .teachableLearnset = sSpinarakTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARIADOS}), }, @@ -902,17 +1003,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Ariados, 64, 56), + .frontPic = gMonFrontPic_Ariados, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Ariados, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Ariados, 64, 48), + .backPic = gMonBackPic_Ariados, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Ariados), - ICON(Ariados, 0), + .palette = gMonPalette_Ariados, + .shinyPalette = gMonShinyPalette_Ariados, + .iconSprite = gMonIcon_Ariados, + .iconPalIndex = 0, FOOTPRINT(Ariados) - LEARNSETS(Ariados), + .levelUpLearnset = sAriadosLevelUpLearnset, + .teachableLearnset = sAriadosTeachableLearnset, }, #endif //P_FAMILY_SPINARAK @@ -952,17 +1058,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = -2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Chinchou, 64, 48), + .frontPic = gMonFrontPic_Chinchou, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Chinchou, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Chinchou, 64, 48), + .backPic = gMonBackPic_Chinchou, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Chinchou), - ICON(Chinchou, 2), + .palette = gMonPalette_Chinchou, + .shinyPalette = gMonShinyPalette_Chinchou, + .iconSprite = gMonIcon_Chinchou, + .iconPalIndex = 2, FOOTPRINT(Chinchou) - LEARNSETS(Chinchou), + .levelUpLearnset = sChinchouLevelUpLearnset, + .teachableLearnset = sChinchouTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_LANTURN}), }, @@ -1001,17 +1112,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 6, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Lanturn, 64, 48), + .frontPic = gMonFrontPic_Lanturn, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Lanturn, .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, - BACK_PIC(Lanturn, 64, 56), + .backPic = gMonBackPic_Lanturn, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(Lanturn), - ICON(Lanturn, 0), + .palette = gMonPalette_Lanturn, + .shinyPalette = gMonShinyPalette_Lanturn, + .iconSprite = gMonIcon_Lanturn, + .iconPalIndex = 0, FOOTPRINT(Lanturn) - LEARNSETS(Lanturn), + .levelUpLearnset = sLanturnLevelUpLearnset, + .teachableLearnset = sLanturnTeachableLearnset, }, #endif //P_FAMILY_CHINCHOU @@ -1052,17 +1168,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 23, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Togepi, 24, 32), + .frontPic = gMonFrontPic_Togepi, + .frontPicSize = MON_COORDS_SIZE(24, 32), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Togepi, .frontAnimId = ANIM_V_JUMPS_BIG, - BACK_PIC(Togepi, 48, 40), + .backPic = gMonBackPic_Togepi, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Togepi), - ICON(Togepi, 0), + .palette = gMonPalette_Togepi, + .shinyPalette = gMonShinyPalette_Togepi, + .iconSprite = gMonIcon_Togepi, + .iconPalIndex = 0, FOOTPRINT(Togepi) - LEARNSETS(Togepi), + .levelUpLearnset = sTogepiLevelUpLearnset, + .teachableLearnset = sTogepiTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}), }, @@ -1100,17 +1221,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Togetic, 32, 48), + .frontPic = gMonFrontPic_Togetic, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Togetic, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Togetic, 56, 56), + .backPic = gMonBackPic_Togetic, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Togetic), - ICON(Togetic, 0), + .palette = gMonPalette_Togetic, + .shinyPalette = gMonShinyPalette_Togetic, + .iconSprite = gMonIcon_Togetic, + .iconPalIndex = 0, FOOTPRINT(Togetic) - LEARNSETS(Togetic), + .levelUpLearnset = sTogeticLevelUpLearnset, + .teachableLearnset = sTogeticTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_TOGEKISS}), }, @@ -1123,11 +1249,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .baseSpeed = 80, .baseSpAttack = 120, .baseSpDefense = 115, - #if P_UPDATED_TYPES >= GEN_6 - .types = MON_TYPES(TOGEPI_FAMILY_TYPE, TYPE_FLYING), - #else - .types = MON_TYPES(TYPE_NORMAL, TYPE_FLYING), - #endif + .types = MON_TYPES(TOGEPI_FAMILY_TYPE, TYPE_FLYING), .catchRate = 30, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 273, @@ -1161,18 +1283,23 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Togekiss, 64, 56), + .frontPic = gMonFrontPic_Togekiss, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Togekiss, .frontAnimId = ANIM_SWING_CONVEX, .enemyMonElevation = 14, - BACK_PIC(Togekiss, 64, 48), + .backPic = gMonBackPic_Togekiss, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Togekiss), - ICON(Togekiss, 2), + .palette = gMonPalette_Togekiss, + .shinyPalette = gMonShinyPalette_Togekiss, + .iconSprite = gMonIcon_Togekiss, + .iconPalIndex = 2, FOOTPRINT(Togekiss) - LEARNSETS(Togekiss), + .levelUpLearnset = sTogekissLevelUpLearnset, + .teachableLearnset = sTogekissTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_TOGEPI @@ -1212,18 +1339,23 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 25, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Natu, 32, 32), + .frontPic = gMonFrontPic_Natu, + .frontPicSize = MON_COORDS_SIZE(32, 32), .frontPicYOffset = 17, .frontAnimFrames = sAnims_Natu, .frontAnimId = ANIM_H_JUMPS, .frontAnimDelay = 30, - BACK_PIC(Natu, 40, 40), + .backPic = gMonBackPic_Natu, + .backPicSize = MON_COORDS_SIZE(40, 40), .backPicYOffset = 15, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Natu), - ICON(Natu, 1), + .palette = gMonPalette_Natu, + .shinyPalette = gMonShinyPalette_Natu, + .iconSprite = gMonIcon_Natu, + .iconPalIndex = 1, FOOTPRINT(Natu) - LEARNSETS(Natu), + .levelUpLearnset = sNatuLevelUpLearnset, + .teachableLearnset = sNatuTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_XATU}), }, @@ -1262,18 +1394,24 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 6, .trainerScale = 318, .trainerOffset = 4, - FRONT_PIC(Xatu, 40, 56), - FRONT_PIC_FEMALE(Xatu, 40, 56), + .frontPic = gMonFrontPic_Xatu, + .frontPicFemale = gMonFrontPic_XatuF, + .frontPicSize = MON_COORDS_SIZE(40, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(40, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Xatu, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Xatu, 64, 56), + .backPic = gMonBackPic_Xatu, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Xatu), - ICON(Xatu, 1), + .palette = gMonPalette_Xatu, + .shinyPalette = gMonShinyPalette_Xatu, + .iconSprite = gMonIcon_Xatu, + .iconPalIndex = 1, FOOTPRINT(Xatu) - LEARNSETS(Xatu), + .levelUpLearnset = sXatuLevelUpLearnset, + .teachableLearnset = sXatuTeachableLearnset, }, #endif //P_FAMILY_NATU @@ -1312,18 +1450,23 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 18, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Mareep, 40, 48), + .frontPic = gMonFrontPic_Mareep, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Mareep, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .frontAnimDelay = 50, - BACK_PIC(Mareep, 56, 40), + .backPic = gMonBackPic_Mareep, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 15, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Mareep), - ICON(Mareep, 0), + .palette = gMonPalette_Mareep, + .shinyPalette = gMonShinyPalette_Mareep, + .iconSprite = gMonIcon_Mareep, + .iconPalIndex = 0, FOOTPRINT(Mareep) - LEARNSETS(Mareep), + .levelUpLearnset = sMareepLevelUpLearnset, + .teachableLearnset = sMareepTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_FLAAFFY}), }, @@ -1361,48 +1504,29 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Flaaffy, 48, 48), + .frontPic = gMonFrontPic_Flaaffy, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Flaaffy, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Flaaffy, 48, 56), + .backPic = gMonBackPic_Flaaffy, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Flaaffy), - ICON(Flaaffy, 0), + .palette = gMonPalette_Flaaffy, + .shinyPalette = gMonShinyPalette_Flaaffy, + .iconSprite = gMonIcon_Flaaffy, + .iconPalIndex = 0, FOOTPRINT(Flaaffy) - LEARNSETS(Flaaffy), + .levelUpLearnset = sFlaaffyLevelUpLearnset, + .teachableLearnset = sFlaaffyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_AMPHAROS}), }, -#define AMPHAROS_MISC_INFO \ - .catchRate = 45, \ - .evYield_SpAttack = 3, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_FIELD),\ - .bodyColor = BODY_COLOR_YELLOW, \ - .speciesName = _("Ampharos"), \ - .natDexNum = NATIONAL_DEX_AMPHAROS, \ - .categoryName = _("Light"), \ - .height = 14, \ - .weight = 615, \ - .pokemonScale = 256, \ - .pokemonOffset = 4, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Ampharos) \ - LEARNSETS(Ampharos), \ - .formSpeciesIdTable = sAmpharosFormSpeciesIdTable, \ - .formChangeTable = sAmpharosFormChangeTable - #define AMPHAROS_DEFENSE (P_UPDATED_STATS >= GEN_6 ? 85 : 75) [SPECIES_AMPHAROS] = { - AMPHAROS_MISC_INFO, .baseHP = 90, .baseAttack = 75, .baseDefense = AMPHAROS_DEFENSE, @@ -1410,6 +1534,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .baseSpAttack = 115, .baseSpDefense = 90, .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 255, #elif P_UPDATED_EXP_YIELDS >= GEN_7 @@ -1419,29 +1544,53 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = #else .expYield = 194, #endif + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_FIELD), .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_PLUS }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Ampharos"), .cryId = CRY_AMPHAROS, + .natDexNum = NATIONAL_DEX_AMPHAROS, + .categoryName = _("Light"), + .height = 14, + .weight = 615, .description = COMPOUND_STRING( "It gives off so much light that it can be\n" "seen even from space. People in the old\n" "days used its light to send signals back\n" "and forth with others far away."), - FRONT_PIC(Ampharos, 56, 64), + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Ampharos, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Ampharos, .frontAnimId = ANIM_FLASH_YELLOW, .frontAnimDelay = 10, - BACK_PIC(Ampharos, 56, 64), + .backPic = gMonBackPic_Ampharos, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(Ampharos), - ICON(Ampharos, 0), + .palette = gMonPalette_Ampharos, + .shinyPalette = gMonShinyPalette_Ampharos, + .iconSprite = gMonIcon_Ampharos, + .iconPalIndex = 0, + FOOTPRINT(Ampharos) + .levelUpLearnset = sAmpharosLevelUpLearnset, + .teachableLearnset = sAmpharosTeachableLearnset, + .formSpeciesIdTable = sAmpharosFormSpeciesIdTable, + .formChangeTable = sAmpharosFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_AMPHAROS_MEGA] = { - AMPHAROS_MISC_INFO, .baseHP = 90, .baseAttack = 95, .baseDefense = AMPHAROS_DEFENSE + 20, @@ -1449,24 +1598,50 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .baseSpAttack = 165, .baseSpDefense = 110, .types = MON_TYPES(TYPE_ELECTRIC, TYPE_DRAGON), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 305 : 275, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_FIELD), .abilities = { ABILITY_MOLD_BREAKER, ABILITY_MOLD_BREAKER, ABILITY_MOLD_BREAKER }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Ampharos"), .cryId = CRY_AMPHAROS_MEGA, + .natDexNum = NATIONAL_DEX_AMPHAROS, + .categoryName = _("Light"), + .height = 14, + .weight = 615, .description = COMPOUND_STRING( "Massive amounts of energy intensely\n" "stimulated Ampharos's cells, apparently\n" "awakening its long-sleeping dragon's\n" "blood."), - FRONT_PIC(AmpharosMega, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_AmpharosMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_AmpharosMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(AmpharosMega, 64, 64), + .backPic = gMonBackPic_AmpharosMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(AmpharosMega), - ICON(AmpharosMega, 0), + .palette = gMonPalette_AmpharosMega, + .shinyPalette = gMonShinyPalette_AmpharosMega, + .iconSprite = gMonIcon_AmpharosMega, + .iconPalIndex = 0, + FOOTPRINT(Ampharos) .isMegaEvolution = TRUE, + .levelUpLearnset = sAmpharosLevelUpLearnset, + .teachableLearnset = sAmpharosTeachableLearnset, + .formSpeciesIdTable = sAmpharosFormSpeciesIdTable, + .formChangeTable = sAmpharosFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_MAREEP @@ -1511,17 +1686,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 23, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Azurill, 48, 48), + .frontPic = gMonFrontPic_Azurill, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Azurill, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Azurill, 64, 56), + .backPic = gMonBackPic_Azurill, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Azurill), - ICON(Azurill, 0), + .palette = gMonPalette_Azurill, + .shinyPalette = gMonShinyPalette_Azurill, + .iconSprite = gMonIcon_Azurill, + .iconPalIndex = 0, FOOTPRINT(Azurill) - LEARNSETS(Azurill), + .levelUpLearnset = sAzurillLevelUpLearnset, + .teachableLearnset = sAzurillTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_MARILL}), }, #endif //P_GEN_3_CROSS_EVOS @@ -1564,17 +1744,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Marill, 56, 40), + .frontPic = gMonFrontPic_Marill, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Marill, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Marill, 64, 40), + .backPic = gMonBackPic_Marill, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Marill), - ICON(Marill, 0), + .palette = gMonPalette_Marill, + .shinyPalette = gMonShinyPalette_Marill, + .iconSprite = gMonIcon_Marill, + .iconPalIndex = 0, FOOTPRINT(Marill) - LEARNSETS(Marill), + .levelUpLearnset = sMarillLevelUpLearnset, + .teachableLearnset = sMarillTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_AZUMARILL}), }, @@ -1624,17 +1809,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Azumarill, 56, 64), + .frontPic = gMonFrontPic_Azumarill, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Azumarill, .frontAnimId = ANIM_SHRINK_GROW, - BACK_PIC(Azumarill, 64, 64), + .backPic = gMonBackPic_Azumarill, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Azumarill), - ICON(Azumarill, 0), + .palette = gMonPalette_Azumarill, + .shinyPalette = gMonShinyPalette_Azumarill, + .iconSprite = gMonIcon_Azumarill, + .iconPalIndex = 0, FOOTPRINT(Azumarill) - LEARNSETS(Azumarill), + .levelUpLearnset = sAzumarillLevelUpLearnset, + .teachableLearnset = sAzumarillTeachableLearnset, }, #endif //P_FAMILY_MARILL @@ -1674,17 +1864,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Bonsly, 32, 48), + .frontPic = gMonFrontPic_Bonsly, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Bonsly, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES, - BACK_PIC(Bonsly, 40, 64), + .backPic = gMonBackPic_Bonsly, + .backPicSize = MON_COORDS_SIZE(40, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Bonsly), - ICON(Bonsly, 1), + .palette = gMonPalette_Bonsly, + .shinyPalette = gMonShinyPalette_Bonsly, + .iconSprite = gMonIcon_Bonsly, + .iconPalIndex = 1, FOOTPRINT(Bonsly) - LEARNSETS(Bonsly), + .levelUpLearnset = sBonslyLevelUpLearnset, + .teachableLearnset = sBonslyTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_MIMIC, SPECIES_SUDOWOODO}), }, #endif //P_GEN_4_CROSS_EVOS @@ -1723,19 +1918,26 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Sudowoodo, 48, 56), - FRONT_PIC_FEMALE(Sudowoodo, 48, 56), + .frontPic = gMonFrontPic_Sudowoodo, + .frontPicFemale = gMonFrontPic_SudowoodoF, + .frontPicSize = MON_COORDS_SIZE(48, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Sudowoodo, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(Sudowoodo, 48, 56), - BACK_PIC_FEMALE(Sudowoodo, 48, 56), + .backPic = gMonBackPic_Sudowoodo, + .backPicFemale = gMonBackPic_SudowoodoF, + .backPicSize = MON_COORDS_SIZE(48, 56), + .backPicSizeFemale = MON_COORDS_SIZE(48, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Sudowoodo), - ICON(Sudowoodo, 1), + .palette = gMonPalette_Sudowoodo, + .shinyPalette = gMonShinyPalette_Sudowoodo, + .iconSprite = gMonIcon_Sudowoodo, + .iconPalIndex = 1, FOOTPRINT(Sudowoodo) - LEARNSETS(Sudowoodo), + .levelUpLearnset = sSudowoodoLevelUpLearnset, + .teachableLearnset = sSudowoodoTeachableLearnset, }, #endif //P_FAMILY_SUDOWOODO @@ -1774,18 +1976,23 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = -7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Hoppip, 64, 56), + .frontPic = gMonFrontPic_Hoppip, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Hoppip, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 15, - BACK_PIC(Hoppip, 64, 48), + .backPic = gMonBackPic_Hoppip, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Hoppip), - ICON(Hoppip, 1), + .palette = gMonPalette_Hoppip, + .shinyPalette = gMonShinyPalette_Hoppip, + .iconSprite = gMonIcon_Hoppip, + .iconPalIndex = 1, FOOTPRINT(Hoppip) - LEARNSETS(Hoppip), + .levelUpLearnset = sHoppipLevelUpLearnset, + .teachableLearnset = sHoppipTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_SKIPLOOM}), }, @@ -1823,18 +2030,23 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Skiploom, 40, 40), + .frontPic = gMonFrontPic_Skiploom, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Skiploom, .frontAnimId = ANIM_RISING_WOBBLE, .enemyMonElevation = 15, - BACK_PIC(Skiploom, 64, 56), + .backPic = gMonBackPic_Skiploom, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Skiploom), - ICON(Skiploom, 1), + .palette = gMonPalette_Skiploom, + .shinyPalette = gMonShinyPalette_Skiploom, + .iconSprite = gMonIcon_Skiploom, + .iconPalIndex = 1, FOOTPRINT(Skiploom) - LEARNSETS(Skiploom), + .levelUpLearnset = sSkiploomLevelUpLearnset, + .teachableLearnset = sSkiploomTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_JUMPLUFF}), }, @@ -1880,18 +2092,23 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = -4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Jumpluff, 64, 56), + .frontPic = gMonFrontPic_Jumpluff, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Jumpluff, .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, .enemyMonElevation = 9, - BACK_PIC(Jumpluff, 56, 64), + .backPic = gMonBackPic_Jumpluff, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Jumpluff), - ICON(Jumpluff, 2), + .palette = gMonPalette_Jumpluff, + .shinyPalette = gMonShinyPalette_Jumpluff, + .iconSprite = gMonIcon_Jumpluff, + .iconPalIndex = 2, FOOTPRINT(Jumpluff) - LEARNSETS(Jumpluff), + .levelUpLearnset = sJumpluffLevelUpLearnset, + .teachableLearnset = sJumpluffTeachableLearnset, }, #endif //P_FAMILY_HOPPIP @@ -1930,19 +2147,26 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 6, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Aipom, 32, 64), - FRONT_PIC_FEMALE(Aipom, 32, 64), + .frontPic = gMonFrontPic_Aipom, + .frontPicFemale = gMonFrontPic_AipomF, + .frontPicSize = MON_COORDS_SIZE(32, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(32, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Aipom, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(Aipom, 64, 64), - BACK_PIC_FEMALE(Aipom, 64, 64), + .backPic = gMonBackPic_Aipom, + .backPicFemale = gMonBackPic_AipomF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Aipom), - ICON(Aipom, 2), + .palette = gMonPalette_Aipom, + .shinyPalette = gMonShinyPalette_Aipom, + .iconSprite = gMonIcon_Aipom, + .iconPalIndex = 2, FOOTPRINT(Aipom) - LEARNSETS(Aipom), + .levelUpLearnset = sAipomLevelUpLearnset, + .teachableLearnset = sAipomTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_DOUBLE_HIT, SPECIES_AMBIPOM}), }, @@ -1981,19 +2205,26 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Ambipom, 64, 64), - FRONT_PIC_FEMALE(Ambipom, 64, 64), + .frontPic = gMonFrontPic_Ambipom, + .frontPicFemale = gMonFrontPic_AmbipomF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Ambipom, .frontAnimId = ANIM_BACK_AND_LUNGE, - BACK_PIC(Ambipom, 64, 64), - BACK_PIC_FEMALE(Ambipom, 64, 64), + .backPic = gMonBackPic_Ambipom, + .backPicFemale = gMonBackPic_AmbipomF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Ambipom), - ICON(Ambipom, 2), + .palette = gMonPalette_Ambipom, + .shinyPalette = gMonShinyPalette_Ambipom, + .iconSprite = gMonIcon_Ambipom, + .iconPalIndex = 2, FOOTPRINT(Ambipom) - LEARNSETS(Ambipom), + .levelUpLearnset = sAmbipomLevelUpLearnset, + .teachableLearnset = sAmbipomTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_AIPOM @@ -2033,17 +2264,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Sunkern, 32, 40), + .frontPic = gMonFrontPic_Sunkern, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 17, .frontAnimFrames = sAnims_Sunkern, .frontAnimId = ANIM_H_JUMPS, - BACK_PIC(Sunkern, 48, 48), + .backPic = gMonBackPic_Sunkern, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Sunkern), - ICON(Sunkern, 1), + .palette = gMonPalette_Sunkern, + .shinyPalette = gMonShinyPalette_Sunkern, + .iconSprite = gMonIcon_Sunkern, + .iconPalIndex = 1, FOOTPRINT(Sunkern) - LEARNSETS(Sunkern), + .levelUpLearnset = sSunkernLevelUpLearnset, + .teachableLearnset = sSunkernTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}), }, @@ -2081,17 +2317,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Sunflora, 40, 48), + .frontPic = gMonFrontPic_Sunflora, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Sunflora, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Sunflora, 56, 56), + .backPic = gMonBackPic_Sunflora, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Sunflora), - ICON(Sunflora, 1), + .palette = gMonPalette_Sunflora, + .shinyPalette = gMonShinyPalette_Sunflora, + .iconSprite = gMonIcon_Sunflora, + .iconPalIndex = 1, FOOTPRINT(Sunflora) - LEARNSETS(Sunflora), + .levelUpLearnset = sSunfloraLevelUpLearnset, + .teachableLearnset = sSunfloraTeachableLearnset, }, #endif //P_FAMILY_SUNKERN @@ -2131,18 +2372,23 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = -1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Yanma, 64, 40), + .frontPic = gMonFrontPic_Yanma, + .frontPicSize = MON_COORDS_SIZE(64, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Yanma, .frontAnimId = ANIM_FIGURE_8, .enemyMonElevation = 13, - BACK_PIC(Yanma, 64, 64), + .backPic = gMonBackPic_Yanma, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Yanma), - ICON(Yanma, 1), + .palette = gMonPalette_Yanma, + .shinyPalette = gMonShinyPalette_Yanma, + .iconSprite = gMonIcon_Yanma, + .iconPalIndex = 1, FOOTPRINT(Yanma) - LEARNSETS(Yanma), + .levelUpLearnset = sYanmaLevelUpLearnset, + .teachableLearnset = sYanmaTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_YANMEGA}), }, @@ -2182,74 +2428,83 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 1, .trainerScale = 326, .trainerOffset = 4, - FRONT_PIC(Yanmega, 64, 56), + .frontPic = gMonFrontPic_Yanmega, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Yanmega, .frontAnimId = ANIM_H_VIBRATE, .enemyMonElevation = 6, - BACK_PIC(Yanmega, 64, 56), + .backPic = gMonBackPic_Yanmega, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Yanmega), - ICON(Yanmega, 1), + .palette = gMonPalette_Yanmega, + .shinyPalette = gMonShinyPalette_Yanmega, + .iconSprite = gMonIcon_Yanmega, + .iconPalIndex = 1, FOOTPRINT(Yanmega) - LEARNSETS(Yanmega), + .levelUpLearnset = sYanmegaLevelUpLearnset, + .teachableLearnset = sYanmegaTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_YANMA #if P_FAMILY_WOOPER -#define WOOPER_MISC_INFO \ - .baseHP = 55, \ - .baseAttack = 45, \ - .baseDefense = 45, \ - .baseSpeed = 15, \ - .baseSpAttack = 25, \ - .baseSpDefense = 25, \ - .catchRate = 255, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 42 : 52, \ - .evYield_HP = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), \ - .speciesName = _("Wooper"), \ - .cryId = CRY_WOOPER, \ - .natDexNum = NATIONAL_DEX_WOOPER, \ - .height = 4, \ - .pokemonScale = 479, \ - .pokemonOffset = 21, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Wooper) \ - .formSpeciesIdTable = sWooperFormSpeciesIdTable - [SPECIES_WOOPER] = { - WOOPER_MISC_INFO, + .baseHP = 55, + .baseAttack = 45, + .baseDefense = 45, + .baseSpeed = 15, + .baseSpAttack = 25, + .baseSpDefense = 25, .types = MON_TYPES(TYPE_WATER, TYPE_GROUND), + .catchRate = 255, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 42 : 52, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), .abilities = { ABILITY_DAMP, ABILITY_WATER_ABSORB, ABILITY_UNAWARE }, .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Wooper"), + .cryId = CRY_WOOPER, + .natDexNum = NATIONAL_DEX_WOOPER, .categoryName = _("Water Fish"), + .height = 4, .weight = 85, .description = COMPOUND_STRING( "Wooper usually live in water but come\n" "out onto land seeking food occasionally.\n" "On land, they coat their bodies with a\n" "gooey, toxic film."), - FRONT_PIC(Wooper, 40, 32), - FRONT_PIC_FEMALE(Wooper, 40, 32), + .pokemonScale = 479, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Wooper, + .frontPicFemale = gMonFrontPic_WooperF, + .frontPicSize = MON_COORDS_SIZE(40, 32), + .frontPicSizeFemale = MON_COORDS_SIZE(40, 32), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Wooper, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Wooper, 64, 40), - BACK_PIC_FEMALE(Wooper, 64, 40), + .backPic = gMonBackPic_Wooper, + .backPicFemale = gMonBackPic_WooperF, + .backPicSize = MON_COORDS_SIZE(64, 40), + .backPicSizeFemale = MON_COORDS_SIZE(64, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Wooper), - ICON(Wooper, 0), - LEARNSETS(Wooper), + .palette = gMonPalette_Wooper, + .shinyPalette = gMonShinyPalette_Wooper, + .iconSprite = gMonIcon_Wooper, + .iconPalIndex = 0, + FOOTPRINT(Wooper) + .levelUpLearnset = sWooperLevelUpLearnset, + .teachableLearnset = sWooperTeachableLearnset, + .formSpeciesIdTable = sWooperFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_QUAGSIRE}), }, @@ -2287,46 +2542,81 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Quagsire, 64, 56), - FRONT_PIC_FEMALE(Quagsire, 64, 56), + .frontPic = gMonFrontPic_Quagsire, + .frontPicFemale = gMonFrontPic_QuagsireF, + .frontPicSize = MON_COORDS_SIZE(64, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Quagsire, .frontAnimId = ANIM_H_STRETCH, - BACK_PIC(Quagsire, 64, 56), - BACK_PIC_FEMALE(Quagsire, 64, 56), + .backPic = gMonBackPic_Quagsire, + .backPicFemale = gMonBackPic_QuagsireF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Quagsire), - ICON(Quagsire, 0), + .palette = gMonPalette_Quagsire, + .shinyPalette = gMonShinyPalette_Quagsire, + .iconSprite = gMonIcon_Quagsire, + .iconPalIndex = 0, FOOTPRINT(Quagsire) - LEARNSETS(Quagsire), + .levelUpLearnset = sQuagsireLevelUpLearnset, + .teachableLearnset = sQuagsireTeachableLearnset, }, #if P_PALDEAN_FORMS [SPECIES_WOOPER_PALDEAN] = { - WOOPER_MISC_INFO, + .baseHP = 55, + .baseAttack = 45, + .baseDefense = 45, + .baseSpeed = 15, + .baseSpAttack = 25, + .baseSpDefense = 25, .types = MON_TYPES(TYPE_POISON, TYPE_GROUND), + .catchRate = 255, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 42 : 52, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), .abilities = { ABILITY_POISON_POINT, ABILITY_WATER_ABSORB, ABILITY_UNAWARE }, .bodyColor = BODY_COLOR_BROWN, - .isPaldeanForm = TRUE, + .speciesName = _("Wooper"), + .cryId = CRY_WOOPER, + .natDexNum = NATIONAL_DEX_WOOPER, .categoryName = _("Poison Fish"), + .height = 4, .weight = 110, .description = COMPOUND_STRING( "After losing a territorial struggle,\n" "Wooper began living on land.\n" "The Pokémon changed over time, developing\n" "a poisonous film to protect its body."), - FRONT_PIC(WooperPaldean, 40, 32), + .pokemonScale = 479, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_WooperPaldean, + .frontPicSize = MON_COORDS_SIZE(40, 32), .frontPicYOffset = 16, .frontAnimFrames = sAnims_WooperPaldean, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(WooperPaldean, 64, 40), + .backPic = gMonBackPic_WooperPaldean, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(WooperPaldean), - ICON(WooperPaldean, 2), - LEARNSETS(WooperPaldean), + .palette = gMonPalette_WooperPaldean, + .shinyPalette = gMonShinyPalette_WooperPaldean, + .iconSprite = gMonIcon_WooperPaldean, + .iconPalIndex = 2, + FOOTPRINT(Wooper) + .isPaldeanForm = TRUE, + .levelUpLearnset = sWooperPaldeanLevelUpLearnset, + .teachableLearnset = sWooperPaldeanTeachableLearnset, + .formSpeciesIdTable = sWooperFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_CLODSIRE}), }, @@ -2364,17 +2654,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Clodsire, 64, 64), + .frontPic = gMonFrontPic_Clodsire, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Clodsire, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Clodsire, 64, 64), + .backPic = gMonBackPic_Clodsire, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 15, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Clodsire), - ICON(Clodsire, 2), + .palette = gMonPalette_Clodsire, + .shinyPalette = gMonShinyPalette_Clodsire, + .iconSprite = gMonIcon_Clodsire, + .iconPalIndex = 2, //FOOTPRINT(Clodsire) - LEARNSETS(Clodsire), + .levelUpLearnset = sClodsireLevelUpLearnset, + .teachableLearnset = sClodsireTeachableLearnset, }, #endif //P_PALDEAN_FORMS #endif //P_FAMILY_WOOPER @@ -2414,20 +2709,27 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = -8, .trainerScale = 256, .trainerOffset = 1, - FRONT_PIC(Murkrow, 48, 40), - FRONT_PIC_FEMALE(Murkrow, 48, 40), + .frontPic = gMonFrontPic_Murkrow, + .frontPicFemale = gMonFrontPic_MurkrowF, + .frontPicSize = MON_COORDS_SIZE(48, 40), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Murkrow, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 12, - BACK_PIC(Murkrow, 40, 56), - BACK_PIC_FEMALE(Murkrow, 40, 56), + .backPic = gMonBackPic_Murkrow, + .backPicFemale = gMonBackPic_MurkrowF, + .backPicSize = MON_COORDS_SIZE(40, 56), + .backPicSizeFemale = MON_COORDS_SIZE(40, 56), .backPicYOffset = 10, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Murkrow), - ICON(Murkrow, 2), + .palette = gMonPalette_Murkrow, + .shinyPalette = gMonShinyPalette_Murkrow, + .iconSprite = gMonIcon_Murkrow, + .iconPalIndex = 2, FOOTPRINT(Murkrow) - LEARNSETS(Murkrow), + .levelUpLearnset = sMurkrowLevelUpLearnset, + .teachableLearnset = sMurkrowTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_HONCHKROW}), }, @@ -2466,17 +2768,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Honchkrow, 64, 56), + .frontPic = gMonFrontPic_Honchkrow, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Honchkrow, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Honchkrow, 64, 48), + .backPic = gMonBackPic_Honchkrow, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_H_STRETCH, - PALETTES(Honchkrow), - ICON(Honchkrow, 2), + .palette = gMonPalette_Honchkrow, + .shinyPalette = gMonShinyPalette_Honchkrow, + .iconSprite = gMonIcon_Honchkrow, + .iconPalIndex = 2, FOOTPRINT(Honchkrow) - LEARNSETS(Honchkrow), + .levelUpLearnset = sHonchkrowLevelUpLearnset, + .teachableLearnset = sHonchkrowTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_MURKROW @@ -2517,18 +2824,23 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = -8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Misdreavus, 48, 48), + .frontPic = gMonFrontPic_Misdreavus, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Misdreavus, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 12, - BACK_PIC(Misdreavus, 56, 48), + .backPic = gMonBackPic_Misdreavus, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Misdreavus), - ICON(Misdreavus, 0), + .palette = gMonPalette_Misdreavus, + .shinyPalette = gMonShinyPalette_Misdreavus, + .iconSprite = gMonIcon_Misdreavus, + .iconPalIndex = 0, FOOTPRINT(Misdreavus) - LEARNSETS(Misdreavus), + .levelUpLearnset = sMisdreavusLevelUpLearnset, + .teachableLearnset = sMisdreavusTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_MISMAGIUS}), }, @@ -2568,306 +2880,109 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Mismagius, 56, 64), + .frontPic = gMonFrontPic_Mismagius, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Mismagius, .frontAnimId = ANIM_H_SLIDE_WOBBLE, .enemyMonElevation = 3, - BACK_PIC(Mismagius, 56, 64), + .backPic = gMonBackPic_Mismagius, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Mismagius), - ICON(Mismagius, 2), + .palette = gMonPalette_Mismagius, + .shinyPalette = gMonShinyPalette_Mismagius, + .iconSprite = gMonIcon_Mismagius, + .iconPalIndex = 2, FOOTPRINT(Mismagius) - LEARNSETS(Mismagius), + .levelUpLearnset = sMismagiusLevelUpLearnset, + .teachableLearnset = sMismagiusTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_MISDREAVUS #if P_FAMILY_UNOWN -#define UNOWN_MISC_INFO(letter) \ - .baseHP = 48, \ - .baseAttack = 72, \ - .baseDefense = 48, \ - .baseSpeed = 48, \ - .baseSpAttack = 72, \ - .baseSpDefense = 48, \ - .types = MON_TYPES(TYPE_PSYCHIC), \ - .catchRate = 225, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 118 : 61, \ - .evYield_Attack = 1, \ - .evYield_SpAttack = 1, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 40, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_BLACK, \ - .speciesName = _("Unown"), \ - .cryId = CRY_UNOWN, \ - .natDexNum = NATIONAL_DEX_UNOWN, \ - .categoryName = _("Symbol"), \ - .height = 5, \ - .weight = 50, \ - .description = gUnownPokedexText, \ - .pokemonScale = 411, \ - .pokemonOffset = 2, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .frontPicYOffset = 16, \ - .frontAnimFrames = sAnims_Unown, \ - .frontAnimId = ANIM_ZIGZAG_FAST, \ - .enemyMonElevation = 8, \ - .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, \ - PALETTES(Unown), \ - ICON(Unown ##letter, 0), \ - FOOTPRINT(Unown) \ - LEARNSETS(Unown), \ - .tmIlliterate = TRUE, \ - .formSpeciesIdTable = sUnownFormSpeciesIdTable +#define UNOWN_MISC_INFO(letter, _noFlip, frontWidth, frontHeight, backWidth, backHeight, backYOffset) \ + { \ + .baseHP = 48, \ + .baseAttack = 72, \ + .baseDefense = 48, \ + .baseSpeed = 48, \ + .baseSpAttack = 72, \ + .baseSpDefense = 48, \ + .types = MON_TYPES(TYPE_PSYCHIC), \ + .catchRate = 225, \ + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 118 : 61, \ + .evYield_Attack = 1, \ + .evYield_SpAttack = 1, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 40, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_BLACK, \ + .noFlip = _noFlip, \ + .speciesName = _("Unown"), \ + .cryId = CRY_UNOWN, \ + .natDexNum = NATIONAL_DEX_UNOWN, \ + .categoryName = _("Symbol"), \ + .height = 5, \ + .weight = 50, \ + .description = gUnownPokedexText, \ + .pokemonScale = 411, \ + .pokemonOffset = 2, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontPic = gMonFrontPic_Unown ##letter, \ + .frontPicSize = MON_COORDS_SIZE(frontWidth, frontHeight), \ + .frontPicYOffset = 16, \ + .frontAnimFrames = sAnims_Unown, \ + .frontAnimId = ANIM_ZIGZAG_FAST, \ + .enemyMonElevation = 8, \ + .backPic = gMonBackPic_Unown ##letter, \ + .backPicSize = MON_COORDS_SIZE(backWidth, backHeight), \ + .backPicYOffset = backYOffset, \ + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, \ + .palette = gMonPalette_Unown, \ + .shinyPalette = gMonShinyPalette_Unown, \ + .iconSprite = gMonIcon_Unown ##letter, \ + .iconPalIndex = 0, \ + FOOTPRINT(Unown) \ + .levelUpLearnset = sUnownLevelUpLearnset, \ + .teachableLearnset = sUnownTeachableLearnset, \ + .tmIlliterate = TRUE, \ + .formSpeciesIdTable = sUnownFormSpeciesIdTable, \ + } - [SPECIES_UNOWN] = - { - UNOWN_MISC_INFO(A), - FRONT_PIC(UnownA, 24, 40), - BACK_PIC(UnownA, 24, 48), - .backPicYOffset = 8, - }, - - [SPECIES_UNOWN_B] = - { - UNOWN_MISC_INFO(B), - .noFlip = TRUE, - FRONT_PIC(UnownB, 24, 32), - BACK_PIC(UnownB, 40, 48), - .backPicYOffset = 9, - }, - - [SPECIES_UNOWN_C] = - { - UNOWN_MISC_INFO(C), - .noFlip = TRUE, - FRONT_PIC(UnownC, 32, 32), - BACK_PIC(UnownC, 48, 56), - .backPicYOffset = 6, - }, - - [SPECIES_UNOWN_D] = - { - UNOWN_MISC_INFO(D), - .noFlip = TRUE, - FRONT_PIC(UnownD, 32, 32), - BACK_PIC(UnownD, 40, 48), - .backPicYOffset = 8, - }, - - [SPECIES_UNOWN_E] = - { - UNOWN_MISC_INFO(E), - .noFlip = TRUE, - FRONT_PIC(UnownE, 32, 32), - BACK_PIC(UnownE, 40, 48), - .backPicYOffset = 10, - }, - - [SPECIES_UNOWN_F] = - { - UNOWN_MISC_INFO(F), - .noFlip = TRUE, - FRONT_PIC(UnownF, 32, 32), - BACK_PIC(UnownF, 48, 48), - .backPicYOffset = 10, - }, - - [SPECIES_UNOWN_G] = - { - UNOWN_MISC_INFO(G), - .noFlip = TRUE, - FRONT_PIC(UnownG, 24, 40), - BACK_PIC(UnownG, 40, 56), - .backPicYOffset = 5, - }, - - [SPECIES_UNOWN_H] = - { - UNOWN_MISC_INFO(H), - .noFlip = TRUE, - FRONT_PIC(UnownH, 32, 32), - BACK_PIC(UnownH, 48, 48), - .backPicYOffset = 8, - }, - - [SPECIES_UNOWN_I] = - { - UNOWN_MISC_INFO(I), - FRONT_PIC(UnownI, 24, 32), - BACK_PIC(UnownI, 24, 56), - .backPicYOffset = 7, - }, - - [SPECIES_UNOWN_J] = - { - UNOWN_MISC_INFO(J), - .noFlip = TRUE, - FRONT_PIC(UnownJ, 24, 32), - BACK_PIC(UnownJ, 32, 48), - .backPicYOffset = 9, - }, - - [SPECIES_UNOWN_K] = - { - UNOWN_MISC_INFO(K), - .noFlip = TRUE, - FRONT_PIC(UnownK, 32, 32), - BACK_PIC(UnownK, 40, 56), - .backPicYOffset = 7, - }, - - [SPECIES_UNOWN_L] = - { - UNOWN_MISC_INFO(L), - .noFlip = TRUE, - FRONT_PIC(UnownL, 24, 32), - BACK_PIC(UnownL, 32, 48), - .backPicYOffset = 10, - }, - - [SPECIES_UNOWN_M] = - { - UNOWN_MISC_INFO(M), - FRONT_PIC(UnownM, 32, 32), - BACK_PIC(UnownM, 48, 40), - .backPicYOffset = 13, - }, - - [SPECIES_UNOWN_N] = - { - UNOWN_MISC_INFO(N), - .noFlip = TRUE, - FRONT_PIC(UnownN, 32, 24), - BACK_PIC(UnownN, 48, 40), - .backPicYOffset = 13, - }, - - [SPECIES_UNOWN_O] = - { - UNOWN_MISC_INFO(O), - FRONT_PIC(UnownO, 32, 32), - BACK_PIC(UnownO, 48, 48), - .backPicYOffset = 8, - }, - - [SPECIES_UNOWN_P] = - { - UNOWN_MISC_INFO(P), - .noFlip = TRUE, - FRONT_PIC(UnownP, 24, 32), - BACK_PIC(UnownP, 32, 48), - .backPicYOffset = 10, - }, - - [SPECIES_UNOWN_Q] = - { - UNOWN_MISC_INFO(Q), - .noFlip = TRUE, - FRONT_PIC(UnownQ, 32, 24), - BACK_PIC(UnownQ, 40, 40), - .backPicYOffset = 15, - }, - - [SPECIES_UNOWN_R] = - { - UNOWN_MISC_INFO(R), - .noFlip = TRUE, - FRONT_PIC(UnownR, 24, 32), - BACK_PIC(UnownR, 32, 40), - .backPicYOffset = 12, - }, - - [SPECIES_UNOWN_S] = - { - UNOWN_MISC_INFO(S), - .noFlip = TRUE, - FRONT_PIC(UnownS, 32, 40), - BACK_PIC(UnownS, 40, 56), - .backPicYOffset = 4, - }, - - [SPECIES_UNOWN_T] = - { - UNOWN_MISC_INFO(T), - FRONT_PIC(UnownT, 24, 32), - BACK_PIC(UnownT, 32, 40), - .backPicYOffset = 13, - }, - - [SPECIES_UNOWN_U] = - { - UNOWN_MISC_INFO(U), - FRONT_PIC(UnownU, 32, 32), - BACK_PIC(UnownU, 48, 40), - .backPicYOffset = 13, - }, - - [SPECIES_UNOWN_V] = - { - UNOWN_MISC_INFO(V), - .noFlip = TRUE, - FRONT_PIC(UnownV, 32, 32), - BACK_PIC(UnownV, 40, 48), - .backPicYOffset = 11, - }, - - [SPECIES_UNOWN_W] = - { - UNOWN_MISC_INFO(W), - FRONT_PIC(UnownW, 32, 32), - BACK_PIC(UnownW, 40, 40), - .backPicYOffset = 13, - }, - - [SPECIES_UNOWN_X] = - { - UNOWN_MISC_INFO(X), - FRONT_PIC(UnownX, 24, 24), - BACK_PIC(UnownX, 40, 40), - .backPicYOffset = 15, - }, - - [SPECIES_UNOWN_Y] = - { - UNOWN_MISC_INFO(Y), - FRONT_PIC(UnownY, 24, 32), - BACK_PIC(UnownY, 32, 48), - .backPicYOffset = 10, - }, - - [SPECIES_UNOWN_Z] = - { - UNOWN_MISC_INFO(Z), - .noFlip = TRUE, - FRONT_PIC(UnownZ, 24, 32), - BACK_PIC(UnownZ, 32, 48), - .backPicYOffset = 10, - }, - - [SPECIES_UNOWN_EMARK] = - { - UNOWN_MISC_INFO(ExclamationMark), - FRONT_PIC(UnownExclamationMark, 24, 40), - BACK_PIC(UnownExclamationMark, 24, 56), - .backPicYOffset = 6, - }, - - [SPECIES_UNOWN_QMARK] = - { - UNOWN_MISC_INFO(QuestionMark), - .noFlip = TRUE, - FRONT_PIC(UnownQuestionMark, 24, 40), - BACK_PIC(UnownQuestionMark, 32, 56), - .backPicYOffset = 6, - }, + [SPECIES_UNOWN] = UNOWN_MISC_INFO(A, FALSE, 24, 40, 24, 48, 8 ), + [SPECIES_UNOWN_B] = UNOWN_MISC_INFO(B, TRUE, 24, 32, 40, 48, 9 ), + [SPECIES_UNOWN_C] = UNOWN_MISC_INFO(C, TRUE, 32, 32, 48, 56, 6 ), + [SPECIES_UNOWN_D] = UNOWN_MISC_INFO(D, TRUE, 32, 32, 40, 48, 8 ), + [SPECIES_UNOWN_E] = UNOWN_MISC_INFO(E, TRUE, 32, 32, 40, 48, 10 ), + [SPECIES_UNOWN_F] = UNOWN_MISC_INFO(F, TRUE, 32, 32, 48, 48, 10 ), + [SPECIES_UNOWN_G] = UNOWN_MISC_INFO(G, TRUE, 24, 40, 40, 56, 5 ), + [SPECIES_UNOWN_H] = UNOWN_MISC_INFO(H, TRUE, 32, 32, 48, 48, 8 ), + [SPECIES_UNOWN_I] = UNOWN_MISC_INFO(I, FALSE, 24, 32, 24, 56, 7 ), + [SPECIES_UNOWN_J] = UNOWN_MISC_INFO(J, TRUE, 24, 32, 32, 48, 9 ), + [SPECIES_UNOWN_K] = UNOWN_MISC_INFO(K, TRUE, 32, 32, 40, 56, 7 ), + [SPECIES_UNOWN_L] = UNOWN_MISC_INFO(L, TRUE, 24, 32, 32, 48, 10 ), + [SPECIES_UNOWN_M] = UNOWN_MISC_INFO(M, FALSE, 32, 32, 48, 40, 13 ), + [SPECIES_UNOWN_N] = UNOWN_MISC_INFO(N, TRUE, 32, 24, 48, 40, 13 ), + [SPECIES_UNOWN_O] = UNOWN_MISC_INFO(O, FALSE, 32, 32, 48, 48, 8 ), + [SPECIES_UNOWN_P] = UNOWN_MISC_INFO(P, TRUE, 24, 32, 32, 48, 10 ), + [SPECIES_UNOWN_Q] = UNOWN_MISC_INFO(Q, TRUE, 32, 24, 40, 40, 15 ), + [SPECIES_UNOWN_R] = UNOWN_MISC_INFO(R, TRUE, 24, 32, 32, 40, 12 ), + [SPECIES_UNOWN_S] = UNOWN_MISC_INFO(S, TRUE, 32, 40, 40, 56, 4 ), + [SPECIES_UNOWN_T] = UNOWN_MISC_INFO(T, FALSE, 24, 32, 32, 40, 13 ), + [SPECIES_UNOWN_U] = UNOWN_MISC_INFO(U, FALSE, 32, 32, 48, 40, 13 ), + [SPECIES_UNOWN_V] = UNOWN_MISC_INFO(V, TRUE, 32, 32, 40, 48, 11 ), + [SPECIES_UNOWN_W] = UNOWN_MISC_INFO(W, FALSE, 32, 32, 40, 40, 13 ), + [SPECIES_UNOWN_X] = UNOWN_MISC_INFO(X, FALSE, 24, 24, 40, 40, 15 ), + [SPECIES_UNOWN_Y] = UNOWN_MISC_INFO(Y, FALSE, 24, 32, 32, 48, 10 ), + [SPECIES_UNOWN_Z] = UNOWN_MISC_INFO(Z, TRUE, 24, 32, 32, 48, 10 ), + [SPECIES_UNOWN_EMARK] = UNOWN_MISC_INFO(ExclamationMark, FALSE, 24, 40, 24, 56, 6 ), + [SPECIES_UNOWN_QMARK] = UNOWN_MISC_INFO(QuestionMark, TRUE, 24, 40, 32, 56, 6 ), #endif //P_FAMILY_UNOWN #if P_FAMILY_WOBBUFFET @@ -2906,19 +3021,24 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Wynaut, 48, 40), + .frontPic = gMonFrontPic_Wynaut, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Wynaut, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, .frontAnimDelay = 15, - BACK_PIC(Wynaut, 48, 48), + .backPic = gMonBackPic_Wynaut, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Wynaut), - ICON(Wynaut, 0), + .palette = gMonPalette_Wynaut, + .shinyPalette = gMonShinyPalette_Wynaut, + .iconSprite = gMonIcon_Wynaut, + .iconPalIndex = 0, FOOTPRINT(Wynaut) - LEARNSETS(Wynaut), .tmIlliterate = TRUE, + .levelUpLearnset = sWynautLevelUpLearnset, + .teachableLearnset = sWynautTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_WOBBUFFET}), }, #endif //P_GEN_3_CROSS_EVOS @@ -2957,23 +3077,31 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Wobbuffet, 64, 56), - FRONT_PIC_FEMALE(Wobbuffet, 64, 56), + .frontPic = gMonFrontPic_Wobbuffet, + .frontPicFemale = gMonFrontPic_WobbuffetF, + .frontPicSize = MON_COORDS_SIZE(64, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Wobbuffet, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Wobbuffet, 56, 56), - BACK_PIC_FEMALE(Wobbuffet, 56, 56), + .backPic = gMonBackPic_Wobbuffet, + .backPicFemale = gMonBackPic_WobbuffetF, + .backPicSize = MON_COORDS_SIZE(56, 56), + .backPicSizeFemale = MON_COORDS_SIZE(56, 56), .backPicYOffset = 10, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Wobbuffet), - ICON(Wobbuffet, 0), + .palette = gMonPalette_Wobbuffet, + .shinyPalette = gMonShinyPalette_Wobbuffet, + .iconSprite = gMonIcon_Wobbuffet, + .iconPalIndex = 0, #if P_CUSTOM_GENDER_DIFF_ICONS == TRUE - ICON_FEMALE(Wobbuffet, 0), + .iconSpriteFemale = gMonIcon_WobbuffetF, + .iconPalIndexFemale = 0, #endif FOOTPRINT(Wobbuffet) - LEARNSETS(Wobbuffet), .tmIlliterate = TRUE, + .levelUpLearnset = sWobbuffetLevelUpLearnset, + .teachableLearnset = sWobbuffetTeachableLearnset, }, #endif //P_FAMILY_WOBBUFFET @@ -3012,19 +3140,26 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Girafarig, 56, 64), - FRONT_PIC_FEMALE(Girafarig, 56, 64), + .frontPic = gMonFrontPic_Girafarig, + .frontPicFemale = gMonFrontPic_GirafarigF, + .frontPicSize = MON_COORDS_SIZE(56, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Girafarig, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Girafarig, 64, 64), - BACK_PIC_FEMALE(Girafarig, 64, 64), + .backPic = gMonBackPic_Girafarig, + .backPicFemale = gMonBackPic_GirafarigF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Girafarig), - ICON(Girafarig, 1), + .palette = gMonPalette_Girafarig, + .shinyPalette = gMonShinyPalette_Girafarig, + .iconSprite = gMonIcon_Girafarig, + .iconPalIndex = 1, FOOTPRINT(Girafarig) - LEARNSETS(Girafarig), + .levelUpLearnset = sGirafarigLevelUpLearnset, + .teachableLearnset = sGirafarigTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_TWIN_BEAM, SPECIES_FARIGIRAF}), }, @@ -3063,17 +3198,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Farigiraf, 64, 64), + .frontPic = gMonFrontPic_Farigiraf, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Farigiraf, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Farigiraf, 64, 64), + .backPic = gMonBackPic_Farigiraf, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Farigiraf), - ICON(Farigiraf, 0), + .palette = gMonPalette_Farigiraf, + .shinyPalette = gMonShinyPalette_Farigiraf, + .iconSprite = gMonIcon_Farigiraf, + .iconPalIndex = 0, //FOOTPRINT(Farigiraf) - LEARNSETS(Farigiraf), + .levelUpLearnset = sFarigirafLevelUpLearnset, + .teachableLearnset = sFarigirafTeachableLearnset, }, #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_GIRAFARIG @@ -3113,17 +3253,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pineco, 40, 40), + .frontPic = gMonFrontPic_Pineco, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Pineco, .frontAnimId = ANIM_SWING_CONCAVE, - BACK_PIC(Pineco, 56, 40), + .backPic = gMonBackPic_Pineco, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Pineco), - ICON(Pineco, 0), + .palette = gMonPalette_Pineco, + .shinyPalette = gMonShinyPalette_Pineco, + .iconSprite = gMonIcon_Pineco, + .iconPalIndex = 0, FOOTPRINT(Pineco) - LEARNSETS(Pineco), + .levelUpLearnset = sPinecoLevelUpLearnset, + .teachableLearnset = sPinecoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_FORRETRESS}), }, @@ -3161,17 +3306,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 5, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Forretress, 64, 48), + .frontPic = gMonFrontPic_Forretress, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Forretress, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Forretress, 64, 32), + .backPic = gMonBackPic_Forretress, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 16, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Forretress), - ICON(Forretress, 2), + .palette = gMonPalette_Forretress, + .shinyPalette = gMonShinyPalette_Forretress, + .iconSprite = gMonIcon_Forretress, + .iconPalIndex = 2, FOOTPRINT(Forretress) - LEARNSETS(Forretress), + .levelUpLearnset = sForretressLevelUpLearnset, + .teachableLearnset = sForretressTeachableLearnset, }, #endif //P_FAMILY_PINECO @@ -3216,65 +3366,51 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Dunsparce, 48, 48), + .frontPic = gMonFrontPic_Dunsparce, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Dunsparce, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .frontAnimDelay = 10, - BACK_PIC(Dunsparce, 56, 32), + .backPic = gMonBackPic_Dunsparce, + .backPicSize = MON_COORDS_SIZE(56, 32), .backPicYOffset = 17, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Dunsparce), - ICON(Dunsparce, 0), + .palette = gMonPalette_Dunsparce, + .shinyPalette = gMonShinyPalette_Dunsparce, + .iconSprite = gMonIcon_Dunsparce, + .iconPalIndex = 0, FOOTPRINT(Dunsparce) - LEARNSETS(Dunsparce), + .levelUpLearnset = sDunsparceLevelUpLearnset, + .teachableLearnset = sDunsparceTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE_TWO_SEGMENT, MOVE_HYPER_DRILL, SPECIES_DUDUNSPARCE_TWO_SEGMENT}, {EVO_MOVE_THREE_SEGMENT, MOVE_HYPER_DRILL, SPECIES_DUDUNSPARCE_THREE_SEGMENT}), }, #if P_GEN_9_CROSS_EVOS -#define DUDUNSPARCE_MISC_INFO(segments) \ - .baseHP = 125, \ - .baseAttack = 100, \ - .baseDefense = 80, \ - .baseSpeed = 55, \ - .baseSpAttack = 85, \ - .baseSpDefense = 75, \ - .types = MON_TYPES(TYPE_NORMAL), \ - .catchRate = 45, \ - .expYield = 182, \ - .evYield_HP = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .abilities = { ABILITY_SERENE_GRACE, ABILITY_RUN_AWAY, ABILITY_RATTLED }, \ - .bodyColor = BODY_COLOR_YELLOW, \ - .speciesName = _("Dudunsprce"), \ - .cryId = CRY_DUDUNSPARCE, \ - .natDexNum = NATIONAL_DEX_DUDUNSPARCE, \ - .categoryName = _("Land Snake"), \ - .pokemonScale = 356, \ - .pokemonOffset = 17, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FRONT_PIC(Dudunsparce ##segments##Segment, 64, 64), \ - .frontPicYOffset = 10, \ - .frontAnimFrames = sAnims_Dudunsparce, \ - BACK_PIC(Dudunsparce ##segments##Segment, 64, 64), \ - .backPicYOffset = 11, \ - PALETTES(Dudunsparce), \ - ICON(Dudunsparce, 0), \ - LEARNSETS(Dudunsparce), \ - .formSpeciesIdTable = sDudunsparceFormSpeciesIdTable - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //.backAnimId = BACK_ANIM_NONE, - //FOOTPRINT(Dudunsparce) - [SPECIES_DUDUNSPARCE_TWO_SEGMENT] = { - DUDUNSPARCE_MISC_INFO(Two), + .baseHP = 125, + .baseAttack = 100, + .baseDefense = 80, + .baseSpeed = 55, + .baseSpAttack = 85, + .baseSpDefense = 75, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 45, + .expYield = 182, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_SERENE_GRACE, ABILITY_RUN_AWAY, ABILITY_RATTLED }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Dudunsprce"), + .cryId = CRY_DUDUNSPARCE, + .natDexNum = NATIONAL_DEX_DUDUNSPARCE, + .categoryName = _("Land Snake"), .height = 36, .weight = 392, .description = COMPOUND_STRING( @@ -3282,11 +3418,52 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = "make its nest by boring holes into\n" "bedrock deep underground. The nest\n" "can reach lengths of over six miles."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_DudunsparceTwoSegment, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Dudunsparce, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_DudunsparceTwoSegment, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Dudunsparce, + .shinyPalette = gMonShinyPalette_Dudunsparce, + .iconSprite = gMonIcon_Dudunsparce, + .iconPalIndex = 0, + //FOOTPRINT(Dudunsparce), + .levelUpLearnset = sDudunsparceLevelUpLearnset, + .teachableLearnset = sDudunsparceTeachableLearnset, + .formSpeciesIdTable = sDudunsparceFormSpeciesIdTable, }, [SPECIES_DUDUNSPARCE_THREE_SEGMENT] = { - DUDUNSPARCE_MISC_INFO(Three), + .baseHP = 125, + .baseAttack = 100, + .baseDefense = 80, + .baseSpeed = 55, + .baseSpAttack = 85, + .baseSpDefense = 75, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 45, + .expYield = 182, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_SERENE_GRACE, ABILITY_RUN_AWAY, ABILITY_RATTLED }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Dudunsprce"), + .cryId = CRY_DUDUNSPARCE, + .natDexNum = NATIONAL_DEX_DUDUNSPARCE, + .categoryName = _("Land Snake"), .height = 45, .weight = 474, .description = COMPOUND_STRING( @@ -3294,6 +3471,27 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = "number of segments a\n" "Dudunsparce's body has is determined by the\n" "Pokémon's genes."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_DudunsparceThreeSegment, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Dudunsparce, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_DudunsparceThreeSegment, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Dudunsparce, + .shinyPalette = gMonShinyPalette_Dudunsparce, + .iconSprite = gMonIcon_Dudunsparce, + .iconPalIndex = 0, + //FOOTPRINT(Dudunsparce), + .levelUpLearnset = sDudunsparceLevelUpLearnset, + .teachableLearnset = sDudunsparceTeachableLearnset, + .formSpeciesIdTable = sDudunsparceFormSpeciesIdTable, }, #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_DUNSPARCE @@ -3333,20 +3531,27 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = -1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Gligar, 56, 56), - FRONT_PIC_FEMALE(Gligar, 56, 56), + .frontPic = gMonFrontPic_Gligar, + .frontPicFemale = gMonFrontPic_GligarF, + .frontPicSize = MON_COORDS_SIZE(56, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Gligar, .frontAnimId = ANIM_SHRINK_GROW, .enemyMonElevation = 8, - BACK_PIC(Gligar, 64, 64), - BACK_PIC_FEMALE(Gligar, 64, 64), + .backPic = gMonBackPic_Gligar, + .backPicFemale = gMonBackPic_GligarF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Gligar), - ICON(Gligar, 0), + .palette = gMonPalette_Gligar, + .shinyPalette = gMonShinyPalette_Gligar, + .iconSprite = gMonIcon_Gligar, + .iconPalIndex = 0, FOOTPRINT(Gligar) - LEARNSETS(Gligar), + .levelUpLearnset = sGligarLevelUpLearnset, + .teachableLearnset = sGligarTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}, {EVO_ITEM_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}), }, @@ -3386,18 +3591,23 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 1, .trainerScale = 334, .trainerOffset = 4, - FRONT_PIC(Gliscor, 64, 56), + .frontPic = gMonFrontPic_Gliscor, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Gliscor, .frontAnimId = ANIM_SWING_CONVEX, .enemyMonElevation = 9, - BACK_PIC(Gliscor, 64, 48), + .backPic = gMonBackPic_Gliscor, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Gliscor), - ICON(Gliscor, 2), + .palette = gMonPalette_Gliscor, + .shinyPalette = gMonShinyPalette_Gliscor, + .iconSprite = gMonIcon_Gliscor, + .iconPalIndex = 2, FOOTPRINT(Gliscor) - LEARNSETS(Gliscor), + .levelUpLearnset = sGliscorLevelUpLearnset, + .teachableLearnset = sGliscorTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_GLIGAR @@ -3411,11 +3621,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .baseSpeed = 30, .baseSpAttack = 40, .baseSpDefense = 40, - #if P_UPDATED_TYPES >= GEN_6 - .types = MON_TYPES(TYPE_FAIRY), - #else - .types = MON_TYPES(TYPE_NORMAL), - #endif + #if P_UPDATED_TYPES >= GEN_6 + .types = MON_TYPES(TYPE_FAIRY), + #else + .types = MON_TYPES(TYPE_NORMAL), + #endif .catchRate = 190, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 60 : 63, .evYield_Attack = 1, @@ -3441,17 +3651,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Snubbull, 40, 40), + .frontPic = gMonFrontPic_Snubbull, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Snubbull, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Snubbull, 56, 40), + .backPic = gMonBackPic_Snubbull, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Snubbull), - ICON(Snubbull, 0), + .palette = gMonPalette_Snubbull, + .shinyPalette = gMonShinyPalette_Snubbull, + .iconSprite = gMonIcon_Snubbull, + .iconPalIndex = 0, FOOTPRINT(Snubbull) - LEARNSETS(Snubbull), + .levelUpLearnset = sSnubbullLevelUpLearnset, + .teachableLearnset = sSnubbullTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 23, SPECIES_GRANBULL}), }, @@ -3463,11 +3678,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .baseSpeed = 45, .baseSpAttack = 60, .baseSpDefense = 60, - #if P_UPDATED_TYPES >= GEN_6 - .types = MON_TYPES(TYPE_FAIRY), - #else - .types = MON_TYPES(TYPE_NORMAL), - #endif + #if P_UPDATED_TYPES >= GEN_6 + .types = MON_TYPES(TYPE_FAIRY), + #else + .types = MON_TYPES(TYPE_NORMAL), + #endif .catchRate = 75, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 158 : 178, .evYield_Attack = 2, @@ -3493,17 +3708,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Granbull, 56, 56), + .frontPic = gMonFrontPic_Granbull, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Granbull, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Granbull, 56, 48), + .backPic = gMonBackPic_Granbull, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Granbull), - ICON(Granbull, 2), + .palette = gMonPalette_Granbull, + .shinyPalette = gMonShinyPalette_Granbull, + .iconSprite = gMonIcon_Granbull, + .iconPalIndex = 2, FOOTPRINT(Granbull) - LEARNSETS(Granbull), + .levelUpLearnset = sGranbullLevelUpLearnset, + .teachableLearnset = sGranbullTeachableLearnset, }, #endif //P_FAMILY_SNUBBULL @@ -3517,82 +3737,116 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = #define QWILFISH_EXP_YIELD 100 #endif -#define QWILFISH_MISC_INFO \ - .baseHP = 65, \ - .baseAttack = 95, \ - .baseDefense = P_UPDATED_STATS >= GEN_7 ? 85 : 75, \ - .baseSpeed = 85, \ - .baseSpAttack = 55, \ - .baseSpDefense = 55, \ - .catchRate = 45, \ - .expYield = QWILFISH_EXP_YIELD, \ - .evYield_Attack = 1, \ - .itemRare = ITEM_POISON_BARB, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), \ - .abilities = { ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE }, \ - .speciesName = _("Qwilfish"), \ - .cryId = CRY_QWILFISH, \ - .natDexNum = NATIONAL_DEX_QWILFISH, \ - .categoryName = _("Balloon"), \ - .height = 5, \ - .weight = 39, \ - .pokemonScale = 430, \ - .pokemonOffset = 0, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Qwilfish) \ - .formSpeciesIdTable = sQwilfishFormSpeciesIdTable - [SPECIES_QWILFISH] = { - QWILFISH_MISC_INFO, + .baseHP = 65, + .baseAttack = 95, + .baseDefense = P_UPDATED_STATS >= GEN_7 ? 85 : 75, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 55, .types = MON_TYPES(TYPE_WATER, TYPE_POISON), + .catchRate = 45, + .expYield = QWILFISH_EXP_YIELD, + .evYield_Attack = 1, + .itemRare = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), + .abilities = { ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE }, .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Qwilfish"), + .cryId = CRY_QWILFISH, + .natDexNum = NATIONAL_DEX_QWILFISH, + .categoryName = _("Balloon"), + .height = 5, + .weight = 39, .description = COMPOUND_STRING( "A Qwilfish uses the pressure of water\n" "it swallows to shoot toxic quills all at\n" "once from all over its body. It finds\n" "swimming to be somewhat challenging."), - FRONT_PIC(Qwilfish, 40, 48), + .pokemonScale = 430, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Qwilfish, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Qwilfish, .frontAnimId = ANIM_GROW_IN_STAGES, .frontAnimDelay = 39, - BACK_PIC(Qwilfish, 56, 56), + .backPic = gMonBackPic_Qwilfish, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(Qwilfish), - ICON(Qwilfish, 0), - LEARNSETS(Qwilfish), + .palette = gMonPalette_Qwilfish, + .shinyPalette = gMonShinyPalette_Qwilfish, + .iconSprite = gMonIcon_Qwilfish, + .iconPalIndex = 0, + FOOTPRINT(Qwilfish) + .levelUpLearnset = sQwilfishLevelUpLearnset, + .teachableLearnset = sQwilfishTeachableLearnset, + .formSpeciesIdTable = sQwilfishFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_QWILFISH_HISUIAN] = { - QWILFISH_MISC_INFO, + .baseHP = 65, + .baseAttack = 95, + .baseDefense = P_UPDATED_STATS >= GEN_7 ? 85 : 75, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 55, .types = MON_TYPES(TYPE_DARK, TYPE_POISON), + .catchRate = 45, + .expYield = QWILFISH_EXP_YIELD, + .evYield_Attack = 1, + .itemRare = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), + .abilities = { ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE }, .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Qwilfish"), + .cryId = CRY_QWILFISH, + .natDexNum = NATIONAL_DEX_QWILFISH, + .categoryName = _("Balloon"), + .height = 5, + .weight = 39, .description = COMPOUND_STRING( "A form of Qwilfish from the distant past.\n" "Fishers detest this troublesome Pokémon\n" "because it sprays poison from its spines,\n" "getting it everywhere."), - FRONT_PIC(QwilfishHisuian, 48, 40), + .pokemonScale = 430, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_QwilfishHisuian, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 16, .frontAnimFrames = sAnims_QwilfishHisuian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 9, - BACK_PIC(QwilfishHisuian, 56, 56), + .backPic = gMonBackPic_QwilfishHisuian, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(QwilfishHisuian), - ICON(QwilfishHisuian, 0), - LEARNSETS(QwilfishHisuian), + .palette = gMonPalette_QwilfishHisuian, + .shinyPalette = gMonShinyPalette_QwilfishHisuian, + .iconSprite = gMonIcon_QwilfishHisuian, + .iconPalIndex = 0, + FOOTPRINT(Qwilfish) .isHisuianForm = TRUE, + .levelUpLearnset = sQwilfishHisuianLevelUpLearnset, + .teachableLearnset = sQwilfishHisuianTeachableLearnset, + .formSpeciesIdTable = sQwilfishFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_MOVE, MOVE_BARB_BARRAGE, SPECIES_OVERQWIL}), }, @@ -3630,17 +3884,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 10, .trainerScale = 423, .trainerOffset = 8, - FRONT_PIC(Overqwil, 64, 64), + .frontPic = gMonFrontPic_Overqwil, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Overqwil, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Overqwil, 64, 56), + .backPic = gMonBackPic_Overqwil, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Overqwil), - ICON(Overqwil, 2), + .palette = gMonPalette_Overqwil, + .shinyPalette = gMonShinyPalette_Overqwil, + .iconSprite = gMonIcon_Overqwil, + .iconPalIndex = 2, //FOOTPRINT(Overqwil) - LEARNSETS(Overqwil), + .levelUpLearnset = sOverqwilLevelUpLearnset, + .teachableLearnset = sOverqwilTeachableLearnset, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_QWILFISH @@ -3683,51 +3942,49 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 18, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Shuckle, 56, 48), + .frontPic = gMonFrontPic_Shuckle, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Shuckle, .frontAnimId = ANIM_SWING_CONCAVE, - BACK_PIC(Shuckle, 48, 48), + .backPic = gMonBackPic_Shuckle, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Shuckle), - ICON(Shuckle, 1), + .palette = gMonPalette_Shuckle, + .shinyPalette = gMonShinyPalette_Shuckle, + .iconSprite = gMonIcon_Shuckle, + .iconPalIndex = 1, FOOTPRINT(Shuckle) - LEARNSETS(Shuckle), + .levelUpLearnset = sShuckleLevelUpLearnset, + .teachableLearnset = sShuckleTeachableLearnset, }, #endif //P_FAMILY_SHUCKLE #if P_FAMILY_HERACROSS -#define HERACROSS_MISC_INFO \ - .types = MON_TYPES(TYPE_BUG, TYPE_FIGHTING), \ - .catchRate = 45, \ - .evYield_Attack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), \ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Heracross"), \ - .natDexNum = NATIONAL_DEX_HERACROSS, \ - .categoryName = _("Single Horn"), \ - FOOTPRINT(Heracross) \ - LEARNSETS(Heracross), \ - .formSpeciesIdTable = sHeracrossFormSpeciesIdTable, \ - .formChangeTable = sHeracrossFormChangeTable - [SPECIES_HERACROSS] = { - HERACROSS_MISC_INFO, .baseHP = 80, .baseAttack = 125, .baseDefense = 75, .baseSpeed = 85, .baseSpAttack = 40, .baseSpDefense = 95, + .types = MON_TYPES(TYPE_BUG, TYPE_FIGHTING), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 175 : 200, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), .abilities = { ABILITY_SWARM, ABILITY_GUTS, ABILITY_MOXIE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Heracross"), .cryId = CRY_HERACROSS, + .natDexNum = NATIONAL_DEX_HERACROSS, + .categoryName = _("Single Horn"), .height = 15, .weight = 540, .description = COMPOUND_STRING( @@ -3739,32 +3996,54 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Heracross, 64, 64), - FRONT_PIC_FEMALE(Heracross, 64, 64), + .frontPic = gMonFrontPic_Heracross, + .frontPicFemale = gMonFrontPic_HeracrossF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Heracross, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Heracross, 48, 64), - BACK_PIC_FEMALE(Heracross, 48, 64), + .backPic = gMonBackPic_Heracross, + .backPicFemale = gMonBackPic_HeracrossF, + .backPicSize = MON_COORDS_SIZE(48, 64), + .backPicSizeFemale = MON_COORDS_SIZE(48, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Heracross), - ICON(Heracross, 0), + .palette = gMonPalette_Heracross, + .shinyPalette = gMonShinyPalette_Heracross, + .iconSprite = gMonIcon_Heracross, + .iconPalIndex = 0, + FOOTPRINT(Heracross) + .levelUpLearnset = sHeracrossLevelUpLearnset, + .teachableLearnset = sHeracrossTeachableLearnset, + .formSpeciesIdTable = sHeracrossFormSpeciesIdTable, + .formChangeTable = sHeracrossFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_HERACROSS_MEGA] = { - HERACROSS_MISC_INFO, .baseHP = 80, .baseAttack = 185, .baseDefense = 115, .baseSpeed = 75, .baseSpAttack = 40, .baseSpDefense = 105, + .types = MON_TYPES(TYPE_BUG, TYPE_FIGHTING), + .catchRate = 45, .expYield = 210, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), .abilities = { ABILITY_SKILL_LINK, ABILITY_SKILL_LINK, ABILITY_SKILL_LINK }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Heracross"), .cryId = CRY_HERACROSS_MEGA, + .natDexNum = NATIONAL_DEX_HERACROSS, + .categoryName = _("Single Horn"), .height = 17, .weight = 625, .description = COMPOUND_STRING( @@ -3776,74 +4055,87 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(HeracrossMega, 64, 64), + .frontPic = gMonFrontPic_HeracrossMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_HeracrossMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(HeracrossMega, 56, 64), + .backPic = gMonBackPic_HeracrossMega, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(HeracrossMega), - ICON(HeracrossMega, 0), + .palette = gMonPalette_HeracrossMega, + .shinyPalette = gMonShinyPalette_HeracrossMega, + .iconSprite = gMonIcon_HeracrossMega, + .iconPalIndex = 0, + FOOTPRINT(Heracross) .isMegaEvolution = TRUE, + .levelUpLearnset = sHeracrossLevelUpLearnset, + .teachableLearnset = sHeracrossTeachableLearnset, + .formSpeciesIdTable = sHeracrossFormSpeciesIdTable, + .formChangeTable = sHeracrossFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_HERACROSS #if P_FAMILY_SNEASEL -#define SNEASEL_MISC_INFO \ - .baseHP = 55, \ - .baseAttack = 95, \ - .baseDefense = 55, \ - .baseSpeed = 115, \ - .baseSpAttack = 35, \ - .baseSpDefense = 75, \ - .catchRate = 60, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 86 : 132, \ - .evYield_Speed = 1, \ - .itemRare = ITEM_QUICK_CLAW, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = 35, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .noFlip = TRUE, \ - .speciesName = _("Sneasel"), \ - .cryId = CRY_SNEASEL, \ - .natDexNum = NATIONAL_DEX_SNEASEL, \ - .categoryName = _("Sharp Claw"), \ - .height = 9, \ - .pokemonScale = 413, \ - .pokemonOffset = -3, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Sneasel) \ - .formSpeciesIdTable = sSneaselFormSpeciesIdTable - [SPECIES_SNEASEL] = { - SNEASEL_MISC_INFO, + .baseHP = 55, + .baseAttack = 95, + .baseDefense = 55, + .baseSpeed = 115, + .baseSpAttack = 35, + .baseSpDefense = 75, .types = MON_TYPES(TYPE_DARK, TYPE_ICE), + .catchRate = 60, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 86 : 132, + .evYield_Speed = 1, + .itemRare = ITEM_QUICK_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_INNER_FOCUS, ABILITY_KEEN_EYE, ABILITY_PICKPOCKET }, .bodyColor = BODY_COLOR_BLACK, + .noFlip = TRUE, + .speciesName = _("Sneasel"), + .cryId = CRY_SNEASEL, + .natDexNum = NATIONAL_DEX_SNEASEL, + .categoryName = _("Sharp Claw"), + .height = 9, .weight = 280, .description = COMPOUND_STRING( "A Sneasel scales trees by punching its\n" "hooked claws into the bark. It seeks out\n" "unguarded nests and steals eggs for food\n" "while the parents are away."), - FRONT_PIC(Sneasel, 56, 48), - FRONT_PIC_FEMALE(Sneasel, 56, 48), + .pokemonScale = 413, + .pokemonOffset = -3, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Sneasel, + .frontPicFemale = gMonFrontPic_SneaselF, + .frontPicSize = MON_COORDS_SIZE(56, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Sneasel, .frontAnimId = ANIM_H_JUMPS, - BACK_PIC(Sneasel, 64, 64), - BACK_PIC_FEMALE(Sneasel, 64, 64), + .backPic = gMonBackPic_Sneasel, + .backPicFemale = gMonBackPic_SneaselF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Sneasel), - ICON(Sneasel, 0), - LEARNSETS(Sneasel), + .palette = gMonPalette_Sneasel, + .shinyPalette = gMonShinyPalette_Sneasel, + .iconSprite = gMonIcon_Sneasel, + .iconPalIndex = 0, + FOOTPRINT(Sneasel) + .levelUpLearnset = sSneaselLevelUpLearnset, + .teachableLearnset = sSneaselTeachableLearnset, + .formSpeciesIdTable = sSneaselFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_CLAW, SPECIES_WEAVILE}, {EVO_ITEM_NIGHT, ITEM_RAZOR_CLAW, SPECIES_WEAVILE}), }, @@ -3885,48 +4177,88 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Weavile, 56, 56), - FRONT_PIC_FEMALE(Weavile, 56, 56), + .frontPic = gMonFrontPic_Weavile, + .frontPicFemale = gMonFrontPic_WeavileF, + .frontPicSize = MON_COORDS_SIZE(56, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Weavile, .frontAnimId = ANIM_H_VIBRATE, - BACK_PIC(Weavile, 64, 64), - BACK_PIC_FEMALE(Weavile, 64, 64), + .backPic = gMonBackPic_Weavile, + .backPicFemale = gMonBackPic_WeavileF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Weavile), - ICON(Weavile, 0), + .palette = gMonPalette_Weavile, + .shinyPalette = gMonShinyPalette_Weavile, + .iconSprite = gMonIcon_Weavile, + .iconPalIndex = 0, FOOTPRINT(Weavile) - LEARNSETS(Weavile), + .levelUpLearnset = sWeavileLevelUpLearnset, + .teachableLearnset = sWeavileTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #if P_HISUIAN_FORMS [SPECIES_SNEASEL_HISUIAN] = { - SNEASEL_MISC_INFO, + .baseHP = 55, + .baseAttack = 95, + .baseDefense = 55, + .baseSpeed = 115, + .baseSpAttack = 35, + .baseSpDefense = 75, .types = MON_TYPES(TYPE_FIGHTING, TYPE_POISON), + .catchRate = 60, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 86 : 132, + .evYield_Speed = 1, + .itemRare = ITEM_QUICK_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_INNER_FOCUS, ABILITY_KEEN_EYE, ABILITY_PICKPOCKET }, .bodyColor = BODY_COLOR_GRAY, + .noFlip = TRUE, + .speciesName = _("Sneasel"), + .cryId = CRY_SNEASEL, + .natDexNum = NATIONAL_DEX_SNEASEL, + .categoryName = _("Sharp Claw"), + .height = 9, .weight = 270, .description = COMPOUND_STRING( "Its sturdy, curved claws are ideal for\n" "traversing precipitous cliffs. From the\n" "tips of these claws drips a venom that\n" "infiltrates the nerves of any prey caught."), - FRONT_PIC(SneaselHisuian, 56, 56), - FRONT_PIC_FEMALE(SneaselHisuian, 56, 56), + .pokemonScale = 413, + .pokemonOffset = -3, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_SneaselHisuian, + .frontPicFemale = gMonFrontPic_SneaselHisuianF, + .frontPicSize = MON_COORDS_SIZE(56, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_SneaselHisuian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SneaselHisuian, 56, 64), - BACK_PIC_FEMALE(SneaselHisuian, 56, 64), + .backPic = gMonBackPic_SneaselHisuian, + .backPicFemale = gMonBackPic_SneaselHisuianF, + .backPicSize = MON_COORDS_SIZE(56, 64), + .backPicSizeFemale = MON_COORDS_SIZE(56, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(SneaselHisuian), - ICON(SneaselHisuian, 2), - LEARNSETS(SneaselHisuian), + .palette = gMonPalette_SneaselHisuian, + .shinyPalette = gMonShinyPalette_SneaselHisuian, + .iconSprite = gMonIcon_SneaselHisuian, + .iconPalIndex = 2, + FOOTPRINT(Sneasel) .isHisuianForm = TRUE, + .levelUpLearnset = sSneaselHisuianLevelUpLearnset, + .teachableLearnset = sSneaselHisuianTeachableLearnset, + .formSpeciesIdTable = sSneaselFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM_HOLD_DAY, ITEM_RAZOR_CLAW, SPECIES_SNEASLER}, {EVO_ITEM_DAY, ITEM_RAZOR_CLAW, SPECIES_SNEASLER}), }, @@ -3965,17 +4297,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Sneasler, 64, 64), + .frontPic = gMonFrontPic_Sneasler, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Sneasler, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Sneasler, 64, 64), + .backPic = gMonBackPic_Sneasler, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Sneasler), - ICON(Sneasler, 2), + .palette = gMonPalette_Sneasler, + .shinyPalette = gMonShinyPalette_Sneasler, + .iconSprite = gMonIcon_Sneasler, + .iconPalIndex = 2, //FOOTPRINT(Sneasler) - LEARNSETS(Sneasler), + .levelUpLearnset = sSneaslerLevelUpLearnset, + .teachableLearnset = sSneaslerTeachableLearnset, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_SNEASEL @@ -4016,17 +4353,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Teddiursa, 40, 40), + .frontPic = gMonFrontPic_Teddiursa, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Teddiursa, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Teddiursa, 48, 48), + .backPic = gMonBackPic_Teddiursa, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Teddiursa), - ICON(Teddiursa, 0), + .palette = gMonPalette_Teddiursa, + .shinyPalette = gMonShinyPalette_Teddiursa, + .iconSprite = gMonIcon_Teddiursa, + .iconPalIndex = 0, FOOTPRINT(Teddiursa) - LEARNSETS(Teddiursa), + .levelUpLearnset = sTeddiursaLevelUpLearnset, + .teachableLearnset = sTeddiursaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_URSARING}), }, @@ -4064,51 +4406,54 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Ursaring, 64, 64), - FRONT_PIC_FEMALE(Ursaring, 64, 64), + .frontPic = gMonFrontPic_Ursaring, + .frontPicFemale = gMonFrontPic_UrsaringF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Ursaring, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Ursaring, 56, 64), - BACK_PIC_FEMALE(Ursaring, 56, 64), + .backPic = gMonBackPic_Ursaring, + .backPicFemale = gMonBackPic_UrsaringF, + .backPicSize = MON_COORDS_SIZE(56, 64), + .backPicSizeFemale = MON_COORDS_SIZE(56, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Ursaring), - ICON(Ursaring, 2), + .palette = gMonPalette_Ursaring, + .shinyPalette = gMonShinyPalette_Ursaring, + .iconSprite = gMonIcon_Ursaring, + .iconPalIndex = 2, FOOTPRINT(Ursaring) - LEARNSETS(Ursaring), + .levelUpLearnset = sUrsaringLevelUpLearnset, + .teachableLearnset = sUrsaringTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM_NIGHT, ITEM_PEAT_BLOCK, SPECIES_URSALUNA}, {EVO_NONE, 0, SPECIES_URSALUNA_BLOODMOON}), }, #if P_GEN_8_CROSS_EVOS -#define URSALUNA_MISC_INFO \ - .expYield = 275, \ - .types = MON_TYPES(TYPE_GROUND, TYPE_NORMAL), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .bodyColor = BODY_COLOR_BROWN, \ - .speciesName = _("Ursaluna"), \ - .cryId = CRY_URSALUNA, \ - .natDexNum = NATIONAL_DEX_URSALUNA, \ - .categoryName = _("Peat"), \ - .formSpeciesIdTable = sUrsalunaFormSpeciesIdTable - [SPECIES_URSALUNA] = { - URSALUNA_MISC_INFO, .baseHP = 130, .baseAttack = 140, .baseDefense = 105, .baseSpeed = 50, .baseSpAttack = 45, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_GROUND, TYPE_NORMAL), .catchRate = 20, + .expYield = 275, .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_GUTS, ABILITY_BULLETPROOF, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Ursaluna"), + .cryId = CRY_URSALUNA, + .natDexNum = NATIONAL_DEX_URSALUNA, + .categoryName = _("Peat"), .height = 24, .weight = 2900, .description = COMPOUND_STRING( @@ -4119,32 +4464,48 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 3, .trainerScale = 369, .trainerOffset = 7, - FRONT_PIC(Ursaluna, 56, 56), + .frontPic = gMonFrontPic_Ursaluna, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Ursaluna, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Ursaluna, 64, 40), + .backPic = gMonBackPic_Ursaluna, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Ursaluna), - ICON(Ursaluna, 2), + .palette = gMonPalette_Ursaluna, + .shinyPalette = gMonShinyPalette_Ursaluna, + .iconSprite = gMonIcon_Ursaluna, + .iconPalIndex = 2, //FOOTPRINT(Ursaluna) - LEARNSETS(Ursaluna), + .levelUpLearnset = sUrsalunaLevelUpLearnset, + .teachableLearnset = sUrsalunaTeachableLearnset, + .formSpeciesIdTable = sUrsalunaFormSpeciesIdTable, }, [SPECIES_URSALUNA_BLOODMOON] = { - URSALUNA_MISC_INFO, .baseHP = 113, .baseAttack = 70, .baseDefense = 120, .baseSpeed = 52, .baseSpAttack = 135, .baseSpDefense = 65, + .types = MON_TYPES(TYPE_GROUND, TYPE_NORMAL), .catchRate = 5, + .expYield = 275, .evYield_SpAttack = 3, .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_MINDS_EYE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Ursaluna"), + .cryId = CRY_URSALUNA, + .natDexNum = NATIONAL_DEX_URSALUNA, + .categoryName = _("Peat"), .height = 27, .weight = 3330, .description = COMPOUND_STRING( @@ -4156,17 +4517,23 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 3, .trainerScale = 369, .trainerOffset = 7, - FRONT_PIC(UrsalunaBloodmoon, 64, 64), + .frontPic = gMonFrontPic_UrsalunaBloodmoon, + .frontPicSize = MON_COORDS_SIZE(64, 64), //.frontPicYOffset = 0, .frontAnimFrames = sAnims_UrsalunaBloodmoon, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(UrsalunaBloodmoon, 64, 40), + .backPic = gMonBackPic_UrsalunaBloodmoon, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(UrsalunaBloodmoon), - //ICON(UrsalunaBloodmoon, 0), + .palette = gMonPalette_UrsalunaBloodmoon, + .shinyPalette = gMonShinyPalette_UrsalunaBloodmoon, + //.iconSprite = gMonIcon_UrsalunaBloodmoon, + //.iconPalIndex = 0, //FOOTPRINT(UrsalunaBloodmoon) - LEARNSETS(UrsalunaBloodmoon), + .levelUpLearnset = sUrsalunaBloodmoonLevelUpLearnset, + .teachableLearnset = sUrsalunaBloodmoonTeachableLearnset, + .formSpeciesIdTable = sUrsalunaFormSpeciesIdTable, }, #endif //P_GEN_8_CROSS_EVOS #endif //P_FAMILY_TEDDIURSA @@ -4206,17 +4573,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Slugma, 32, 48), + .frontPic = gMonFrontPic_Slugma, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Slugma, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Slugma, 64, 56), + .backPic = gMonBackPic_Slugma, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Slugma), - ICON(Slugma, 0), + .palette = gMonPalette_Slugma, + .shinyPalette = gMonShinyPalette_Slugma, + .iconSprite = gMonIcon_Slugma, + .iconPalIndex = 0, FOOTPRINT(Slugma) - LEARNSETS(Slugma), + .levelUpLearnset = sSlugmaLevelUpLearnset, + .teachableLearnset = sSlugmaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_MAGCARGO}), }, @@ -4261,17 +4633,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Magcargo, 56, 64), + .frontPic = gMonFrontPic_Magcargo, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Magcargo, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Magcargo, 64, 56), + .backPic = gMonBackPic_Magcargo, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Magcargo), - ICON(Magcargo, 0), + .palette = gMonPalette_Magcargo, + .shinyPalette = gMonShinyPalette_Magcargo, + .iconSprite = gMonIcon_Magcargo, + .iconPalIndex = 0, FOOTPRINT(Magcargo) - LEARNSETS(Magcargo), + .levelUpLearnset = sMagcargoLevelUpLearnset, + .teachableLearnset = sMagcargoTeachableLearnset, }, #endif //P_FAMILY_SLUGMA @@ -4310,17 +4687,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Swinub, 40, 32), + .frontPic = gMonFrontPic_Swinub, + .frontPicSize = MON_COORDS_SIZE(40, 32), .frontPicYOffset = 18, .frontAnimFrames = sAnims_Swinub, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Swinub, 56, 40), + .backPic = gMonBackPic_Swinub, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 15, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Swinub), - ICON(Swinub, 2), + .palette = gMonPalette_Swinub, + .shinyPalette = gMonShinyPalette_Swinub, + .iconSprite = gMonIcon_Swinub, + .iconPalIndex = 2, FOOTPRINT(Swinub) - LEARNSETS(Swinub), + .levelUpLearnset = sSwinubLevelUpLearnset, + .teachableLearnset = sSwinubTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_PILOSWINE}), }, @@ -4359,19 +4741,26 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Piloswine, 48, 56), - FRONT_PIC_FEMALE(Piloswine, 48, 56), + .frontPic = gMonFrontPic_Piloswine, + .frontPicFemale = gMonFrontPic_PiloswineF, + .frontPicSize = MON_COORDS_SIZE(48, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Piloswine, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Piloswine, 64, 48), - BACK_PIC_FEMALE(Piloswine, 64, 48), + .backPic = gMonBackPic_Piloswine, + .backPicFemale = gMonBackPic_PiloswineF, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicSizeFemale = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Piloswine), - ICON(Piloswine, 2), + .palette = gMonPalette_Piloswine, + .shinyPalette = gMonShinyPalette_Piloswine, + .iconSprite = gMonIcon_Piloswine, + .iconPalIndex = 2, FOOTPRINT(Piloswine) - LEARNSETS(Piloswine), + .levelUpLearnset = sPiloswineLevelUpLearnset, + .teachableLearnset = sPiloswineTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_MAMOSWINE}), }, @@ -4416,18 +4805,24 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 6, .trainerScale = 423, .trainerOffset = 8, - FRONT_PIC(Mamoswine, 64, 56), - FRONT_PIC_FEMALE(Mamoswine, 64, 56), + .frontPic = gMonFrontPic_Mamoswine, + .frontPicFemale = gMonFrontPic_MamoswineF, + .frontPicSize = MON_COORDS_SIZE(64, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Mamoswine, .frontAnimId = ANIM_BACK_AND_LUNGE, - BACK_PIC(Mamoswine, 64, 56), + .backPic = gMonBackPic_Mamoswine, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Mamoswine), - ICON(Mamoswine, 2), + .palette = gMonPalette_Mamoswine, + .shinyPalette = gMonShinyPalette_Mamoswine, + .iconSprite = gMonIcon_Mamoswine, + .iconPalIndex = 2, FOOTPRINT(Mamoswine) - LEARNSETS(Mamoswine), + .levelUpLearnset = sMamoswineLevelUpLearnset, + .teachableLearnset = sMamoswineTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_SWINUB @@ -4443,30 +4838,8 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = #define CORSOLA_HP (P_UPDATED_STATS >= GEN_7 ? 65 : 55) #define CORSOLA_DEFENSES (P_UPDATED_STATS >= GEN_7 ? 95 : 85) -#define CORSOLA_MISC_INFO \ - .catchRate = 60, \ - .expYield = CORSOLA_EXP_YIELD, \ - .evYield_SpDefense = 1, \ - .genderRatio = PERCENT_FEMALE(75), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_WATER_3),\ - .speciesName = _("Corsola"), \ - .cryId = CRY_CORSOLA, \ - .natDexNum = NATIONAL_DEX_CORSOLA, \ - .categoryName = _("Coral"), \ - .height = 6, \ - .pokemonScale = 410, \ - .pokemonOffset = 15, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Corsola) \ - .formSpeciesIdTable = sCorsolaFormSpeciesIdTable - [SPECIES_CORSOLA] = { - CORSOLA_MISC_INFO, .baseHP = CORSOLA_HP, .baseAttack = 55, .baseDefense = CORSOLA_DEFENSES, @@ -4474,32 +4847,55 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .baseSpAttack = 65, .baseSpDefense = CORSOLA_DEFENSES, .types = MON_TYPES(TYPE_WATER, TYPE_ROCK), + .catchRate = 60, + .expYield = CORSOLA_EXP_YIELD, .evYield_Defense = 1, + .evYield_SpDefense = 1, .itemRare = ITEM_LUMINOUS_MOSS, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_WATER_3), .abilities = { ABILITY_HUSTLE, ABILITY_NATURAL_CURE, ABILITY_REGENERATOR }, .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Corsola"), + .cryId = CRY_CORSOLA, + .natDexNum = NATIONAL_DEX_CORSOLA, + .categoryName = _("Coral"), + .height = 6, .weight = 50, .description = COMPOUND_STRING( "Corsola live in warm southern seas.\n" "If the sea becomes polluted, the beautiful\n" "coral stalks become discolored and crumble\n" "away in tatters."), - FRONT_PIC(Corsola, 48, 40), + .pokemonScale = 410, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Corsola, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Corsola, .frontAnimId = ANIM_H_SLIDE, - BACK_PIC(Corsola, 56, 48), + .backPic = gMonBackPic_Corsola, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Corsola), - ICON(Corsola, 0), - LEARNSETS(Corsola), + .palette = gMonPalette_Corsola, + .shinyPalette = gMonShinyPalette_Corsola, + .iconSprite = gMonIcon_Corsola, + .iconPalIndex = 0, + FOOTPRINT(Corsola) + .levelUpLearnset = sCorsolaLevelUpLearnset, + .teachableLearnset = sCorsolaTeachableLearnset, + .formSpeciesIdTable = sCorsolaFormSpeciesIdTable, }, #if P_GALARIAN_FORMS [SPECIES_CORSOLA_GALARIAN] = { - CORSOLA_MISC_INFO, .baseHP = CORSOLA_HP - 5, .baseAttack = 55, .baseDefense = CORSOLA_DEFENSES + 5, @@ -4507,25 +4903,49 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .baseSpAttack = 65, .baseSpDefense = CORSOLA_DEFENSES + 5, .types = MON_TYPES(TYPE_GHOST), + .catchRate = 60, + .expYield = CORSOLA_EXP_YIELD, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_WATER_3), .abilities = { ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY }, .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Corsola"), + .cryId = CRY_CORSOLA, + .natDexNum = NATIONAL_DEX_CORSOLA, + .categoryName = _("Coral"), + .height = 6, .weight = 5, .description = COMPOUND_STRING( "Sudden climate change wiped out this\n" "ancient kind of Corsola. With its branches,\n" "it absorbs others' life-force. It curses\n" "those unaware that kick it by accident."), - FRONT_PIC(CorsolaGalarian, 48, 48), + .pokemonScale = 410, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_CorsolaGalarian, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_CorsolaGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(CorsolaGalarian, 56, 48), + .backPic = gMonBackPic_CorsolaGalarian, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(CorsolaGalarian), - ICON(CorsolaGalarian, 0), - LEARNSETS(CorsolaGalarian), + .palette = gMonPalette_CorsolaGalarian, + .shinyPalette = gMonShinyPalette_CorsolaGalarian, + .iconSprite = gMonIcon_CorsolaGalarian, + .iconPalIndex = 0, + FOOTPRINT(Corsola) .isGalarianForm = TRUE, + .levelUpLearnset = sCorsolaGalarianLevelUpLearnset, + .teachableLearnset = sCorsolaGalarianTeachableLearnset, + .formSpeciesIdTable = sCorsolaFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_CURSOLA}), }, @@ -4563,17 +4983,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Cursola, 64, 64), + .frontPic = gMonFrontPic_Cursola, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Cursola, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Cursola, 64, 56), + .backPic = gMonBackPic_Cursola, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Cursola), - ICON(Cursola, 0), + .palette = gMonPalette_Cursola, + .shinyPalette = gMonShinyPalette_Cursola, + .iconSprite = gMonIcon_Cursola, + .iconPalIndex = 0, FOOTPRINT(Cursola) - LEARNSETS(Cursola), + .levelUpLearnset = sCursolaLevelUpLearnset, + .teachableLearnset = sCursolaTeachableLearnset, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_CORSOLA @@ -4613,17 +5038,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Remoraid, 40, 48), + .frontPic = gMonFrontPic_Remoraid, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Remoraid, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Remoraid, 56, 40), + .backPic = gMonBackPic_Remoraid, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Remoraid), - ICON(Remoraid, 0), + .palette = gMonPalette_Remoraid, + .shinyPalette = gMonShinyPalette_Remoraid, + .iconSprite = gMonIcon_Remoraid, + .iconPalIndex = 0, FOOTPRINT(Remoraid) - LEARNSETS(Remoraid), + .levelUpLearnset = sRemoraidLevelUpLearnset, + .teachableLearnset = sRemoraidTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_OCTILLERY}), }, @@ -4662,20 +5092,27 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Octillery, 56, 48), - FRONT_PIC_FEMALE(Octillery, 56, 48), + .frontPic = gMonFrontPic_Octillery, + .frontPicFemale = gMonFrontPic_OctilleryF, + .frontPicSize = MON_COORDS_SIZE(56, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Octillery, .frontAnimId = ANIM_V_STRETCH, .frontAnimDelay = 20, - BACK_PIC(Octillery, 64, 56), - BACK_PIC_FEMALE(Octillery, 64, 56), + .backPic = gMonBackPic_Octillery, + .backPicFemale = gMonBackPic_OctilleryF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Octillery), - ICON(Octillery, 0), + .palette = gMonPalette_Octillery, + .shinyPalette = gMonShinyPalette_Octillery, + .iconSprite = gMonIcon_Octillery, + .iconPalIndex = 0, FOOTPRINT(Octillery) - LEARNSETS(Octillery), + .levelUpLearnset = sOctilleryLevelUpLearnset, + .teachableLearnset = sOctilleryTeachableLearnset, }, #endif //P_FAMILY_REMORAID @@ -4714,17 +5151,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 11, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Delibird, 48, 56), + .frontPic = gMonFrontPic_Delibird, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Delibird, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Delibird, 56, 56), + .backPic = gMonBackPic_Delibird, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Delibird), - ICON(Delibird, 1), + .palette = gMonPalette_Delibird, + .shinyPalette = gMonShinyPalette_Delibird, + .iconSprite = gMonIcon_Delibird, + .iconPalIndex = 1, FOOTPRINT(Delibird) - LEARNSETS(Delibird), + .levelUpLearnset = sDelibirdLevelUpLearnset, + .teachableLearnset = sDelibirdTeachableLearnset, }, #endif //P_FAMILY_DELIBIRD @@ -4764,17 +5206,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Mantyke, 48, 48), + .frontPic = gMonFrontPic_Mantyke, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Mantyke, .frontAnimId = ANIM_TWIST_TWICE, - BACK_PIC(Mantyke, 64, 56), + .backPic = gMonBackPic_Mantyke, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Mantyke), - ICON(Mantyke, 0), + .palette = gMonPalette_Mantyke, + .shinyPalette = gMonShinyPalette_Mantyke, + .iconSprite = gMonIcon_Mantyke, + .iconPalIndex = 0, FOOTPRINT(Mantyke) - LEARNSETS(Mantyke), + .levelUpLearnset = sMantykeLevelUpLearnset, + .teachableLearnset = sMantykeTeachableLearnset, .evolutions = EVOLUTION({EVO_SPECIFIC_MON_IN_PARTY, SPECIES_REMORAID, SPECIES_MANTINE}), }, #endif //P_GEN_4_CROSS_EVOS @@ -4819,18 +5266,23 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 342, .trainerOffset = 7, - FRONT_PIC(Mantine, 64, 56), + .frontPic = gMonFrontPic_Mantine, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Mantine, .frontAnimId = ANIM_SWING_CONVEX, .enemyMonElevation = 6, - BACK_PIC(Mantine, 64, 64), + .backPic = gMonBackPic_Mantine, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Mantine), - ICON(Mantine, 2), + .palette = gMonPalette_Mantine, + .shinyPalette = gMonShinyPalette_Mantine, + .iconSprite = gMonIcon_Mantine, + .iconPalIndex = 2, FOOTPRINT(Mantine) - LEARNSETS(Mantine), + .levelUpLearnset = sMantineLevelUpLearnset, + .teachableLearnset = sMantineTeachableLearnset, }, #endif //P_FAMILY_MANTINE @@ -4870,17 +5322,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 271, .trainerOffset = 1, - FRONT_PIC(Skarmory, 64, 64), + .frontPic = gMonFrontPic_Skarmory, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Skarmory, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Skarmory, 48, 64), + .backPic = gMonBackPic_Skarmory, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Skarmory), - ICON(Skarmory, 0), + .palette = gMonPalette_Skarmory, + .shinyPalette = gMonShinyPalette_Skarmory, + .iconSprite = gMonIcon_Skarmory, + .iconPalIndex = 0, FOOTPRINT(Skarmory) - LEARNSETS(Skarmory), + .levelUpLearnset = sSkarmoryLevelUpLearnset, + .teachableLearnset = sSkarmoryTeachableLearnset, }, #endif //P_FAMILY_SKARMORY @@ -4919,50 +5376,48 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Houndour, 40, 48), + .frontPic = gMonFrontPic_Houndour, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Houndour, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Houndour, 40, 48), + .backPic = gMonBackPic_Houndour, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Houndour), - ICON(Houndour, 0), + .palette = gMonPalette_Houndour, + .shinyPalette = gMonShinyPalette_Houndour, + .iconSprite = gMonIcon_Houndour, + .iconPalIndex = 0, FOOTPRINT(Houndour) - LEARNSETS(Houndour), + .levelUpLearnset = sHoundourLevelUpLearnset, + .teachableLearnset = sHoundourTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_HOUNDOOM}), }, -#define HOUNDOOM_MISC_INFO \ - .types = MON_TYPES(TYPE_DARK, TYPE_FIRE), \ - .catchRate = 45, \ - .evYield_SpAttack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = 35, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .bodyColor = BODY_COLOR_BLACK, \ - .speciesName = _("Houndoom"), \ - .natDexNum = NATIONAL_DEX_HOUNDOOM, \ - .categoryName = _("Dark"), \ - FOOTPRINT(Houndoom) \ - LEARNSETS(Houndoom), \ - .formSpeciesIdTable = sHoundoomFormSpeciesIdTable, \ - .formChangeTable = sHoundoomFormChangeTable - [SPECIES_HOUNDOOM] = { - HOUNDOOM_MISC_INFO, .baseHP = 75, .baseAttack = 90, .baseDefense = 50, .baseSpeed = 95, .baseSpAttack = 110, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_DARK, TYPE_FIRE), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 175 : 204, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_EARLY_BIRD, ABILITY_FLASH_FIRE, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Houndoom"), .cryId = CRY_HOUNDOOM, + .natDexNum = NATIONAL_DEX_HOUNDOOM, + .categoryName = _("Dark"), .height = 14, .weight = 350, .description = COMPOUND_STRING( @@ -4974,32 +5429,54 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Houndoom, 64, 64), - FRONT_PIC_FEMALE(Houndoom, 64, 64), + .frontPic = gMonFrontPic_Houndoom, + .frontPicFemale = gMonFrontPic_HoundoomF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Houndoom, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Houndoom, 64, 56), - BACK_PIC_FEMALE(Houndoom, 64, 56), + .backPic = gMonBackPic_Houndoom, + .backPicFemale = gMonBackPic_HoundoomF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Houndoom), - ICON(Houndoom, 0), + .palette = gMonPalette_Houndoom, + .shinyPalette = gMonShinyPalette_Houndoom, + .iconSprite = gMonIcon_Houndoom, + .iconPalIndex = 0, + FOOTPRINT(Houndoom) + .levelUpLearnset = sHoundoomLevelUpLearnset, + .teachableLearnset = sHoundoomTeachableLearnset, + .formSpeciesIdTable = sHoundoomFormSpeciesIdTable, + .formChangeTable = sHoundoomFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_HOUNDOOM_MEGA] = { - HOUNDOOM_MISC_INFO, .baseHP = 75, .baseAttack = 90, .baseDefense = 90, .baseSpeed = 115, .baseSpAttack = 140, .baseSpDefense = 90, + .types = MON_TYPES(TYPE_DARK, TYPE_FIRE), + .catchRate = 45, .expYield = 210, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_SOLAR_POWER, ABILITY_SOLAR_POWER, ABILITY_SOLAR_POWER }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Houndoom"), .cryId = CRY_HOUNDOOM_MEGA, + .natDexNum = NATIONAL_DEX_HOUNDOOM, + .categoryName = _("Dark"), .height = 19, .weight = 495, .description = COMPOUND_STRING( @@ -5010,16 +5487,25 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(HoundoomMega, 64, 64), + .frontPic = gMonFrontPic_HoundoomMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_HoundoomMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(HoundoomMega, 64, 64), + .backPic = gMonBackPic_HoundoomMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(HoundoomMega), - ICON(HoundoomMega, 0), + .palette = gMonPalette_HoundoomMega, + .shinyPalette = gMonShinyPalette_HoundoomMega, + .iconSprite = gMonIcon_HoundoomMega, + .iconPalIndex = 0, + FOOTPRINT(Houndoom) .isMegaEvolution = TRUE, + .levelUpLearnset = sHoundoomLevelUpLearnset, + .teachableLearnset = sHoundoomTeachableLearnset, + .formSpeciesIdTable = sHoundoomFormSpeciesIdTable, + .formChangeTable = sHoundoomFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_HOUNDOUR @@ -5059,17 +5545,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 21, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Phanpy, 40, 32), + .frontPic = gMonFrontPic_Phanpy, + .frontPicSize = MON_COORDS_SIZE(40, 32), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Phanpy, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(Phanpy, 56, 40), + .backPic = gMonBackPic_Phanpy, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Phanpy), - ICON(Phanpy, 0), + .palette = gMonPalette_Phanpy, + .shinyPalette = gMonShinyPalette_Phanpy, + .iconSprite = gMonIcon_Phanpy, + .iconPalIndex = 0, FOOTPRINT(Phanpy) - LEARNSETS(Phanpy), + .levelUpLearnset = sPhanpyLevelUpLearnset, + .teachableLearnset = sPhanpyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_DONPHAN}), }, @@ -5108,19 +5599,26 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 9, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Donphan, 64, 48), - FRONT_PIC_FEMALE(Donphan, 64, 48), + .frontPic = gMonFrontPic_Donphan, + .frontPicFemale = gMonFrontPic_DonphanF, + .frontPicSize = MON_COORDS_SIZE(64, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Donphan, .frontAnimId = ANIM_ROTATE_UP_SLAM_DOWN, - BACK_PIC(Donphan, 64, 48), - BACK_PIC_FEMALE(Donphan, 64, 48), + .backPic = gMonBackPic_Donphan, + .backPicFemale = gMonBackPic_DonphanF, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicSizeFemale = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Donphan), - ICON(Donphan, 0), + .palette = gMonPalette_Donphan, + .shinyPalette = gMonShinyPalette_Donphan, + .iconSprite = gMonIcon_Donphan, + .iconPalIndex = 0, FOOTPRINT(Donphan) - LEARNSETS(Donphan), + .levelUpLearnset = sDonphanLevelUpLearnset, + .teachableLearnset = sDonphanTeachableLearnset, }, #endif //P_FAMILY_PHANPY @@ -5159,17 +5657,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Stantler, 48, 64), + .frontPic = gMonFrontPic_Stantler, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Stantler, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Stantler, 64, 64), + .backPic = gMonBackPic_Stantler, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Stantler), - ICON(Stantler, 2), + .palette = gMonPalette_Stantler, + .shinyPalette = gMonShinyPalette_Stantler, + .iconSprite = gMonIcon_Stantler, + .iconPalIndex = 2, FOOTPRINT(Stantler) - LEARNSETS(Stantler), + .levelUpLearnset = sStantlerLevelUpLearnset, + .teachableLearnset = sStantlerTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_MOVE_TWENTY_TIMES, MOVE_PSYSHIELD_BASH, SPECIES_WYRDEER}), }, @@ -5209,17 +5712,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 2, .trainerScale = 286, .trainerOffset = 1, - FRONT_PIC(Wyrdeer, 64, 64), + .frontPic = gMonFrontPic_Wyrdeer, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Wyrdeer, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Wyrdeer, 64, 64), + .backPic = gMonBackPic_Wyrdeer, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Wyrdeer), - ICON(Wyrdeer, 2), + .palette = gMonPalette_Wyrdeer, + .shinyPalette = gMonShinyPalette_Wyrdeer, + .iconSprite = gMonIcon_Wyrdeer, + .iconPalIndex = 2, //FOOTPRINT(Wyrdeer) - LEARNSETS(Wyrdeer), + .levelUpLearnset = sWyrdeerLevelUpLearnset, + .teachableLearnset = sWyrdeerTeachableLearnset, }, #endif //P_GEN_8_CROSS_EVOS #endif //P_FAMILY_STANTLER @@ -5259,18 +5767,23 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 5, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Smeargle, 64, 56), + .frontPic = gMonFrontPic_Smeargle, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Smeargle, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(Smeargle, 56, 48), + .backPic = gMonBackPic_Smeargle, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Smeargle), - ICON(Smeargle, 1), + .palette = gMonPalette_Smeargle, + .shinyPalette = gMonShinyPalette_Smeargle, + .iconSprite = gMonIcon_Smeargle, + .iconPalIndex = 1, FOOTPRINT(Smeargle) - LEARNSETS(Smeargle), .tmIlliterate = TRUE, + .levelUpLearnset = sSmeargleLevelUpLearnset, + .teachableLearnset = sSmeargleTeachableLearnset, }, #endif //P_FAMILY_SMEARGLE @@ -5311,17 +5824,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 5, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Miltank, 64, 48), + .frontPic = gMonFrontPic_Miltank, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Miltank, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Miltank, 64, 56), + .backPic = gMonBackPic_Miltank, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Miltank), - ICON(Miltank, 0), + .palette = gMonPalette_Miltank, + .shinyPalette = gMonShinyPalette_Miltank, + .iconSprite = gMonIcon_Miltank, + .iconPalIndex = 0, FOOTPRINT(Miltank) - LEARNSETS(Miltank), + .levelUpLearnset = sMiltankLevelUpLearnset, + .teachableLearnset = sMiltankTeachableLearnset, }, #endif //P_FAMILY_MILTANK @@ -5350,13 +5868,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = 35, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - #if P_UPDATED_ABILITIES >= GEN_7 - .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INNER_FOCUS }, - #else - .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_VOLT_ABSORB }, - #endif + #if P_UPDATED_ABILITIES >= GEN_7 + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INNER_FOCUS }, + #else + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_VOLT_ABSORB }, + #endif .bodyColor = BODY_COLOR_YELLOW, - .isLegendary = TRUE, .speciesName = _("Raikou"), .cryId = CRY_RAIKOU, .natDexNum = NATIONAL_DEX_RAIKOU, @@ -5372,17 +5889,23 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 345, .trainerOffset = 7, - FRONT_PIC(Raikou, 64, 56), + .frontPic = gMonFrontPic_Raikou, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Raikou, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Raikou, 64, 56), + .backPic = gMonBackPic_Raikou, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(Raikou), - ICON(Raikou, 2), + .palette = gMonPalette_Raikou, + .shinyPalette = gMonShinyPalette_Raikou, + .iconSprite = gMonIcon_Raikou, + .iconPalIndex = 2, FOOTPRINT(Raikou) - LEARNSETS(Raikou), + .isLegendary = TRUE, + .levelUpLearnset = sRaikouLevelUpLearnset, + .teachableLearnset = sRaikouTeachableLearnset, }, #endif //P_FAMILY_RAIKOU @@ -5411,13 +5934,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = 35, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - #if P_UPDATED_ABILITIES >= GEN_7 - .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INNER_FOCUS }, - #else - .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FLASH_FIRE }, - #endif + #if P_UPDATED_ABILITIES >= GEN_7 + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INNER_FOCUS }, + #else + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FLASH_FIRE }, + #endif .bodyColor = BODY_COLOR_BROWN, - .isLegendary = TRUE, .speciesName = _("Entei"), .cryId = CRY_ENTEI, .natDexNum = NATIONAL_DEX_ENTEI, @@ -5433,17 +5955,23 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 345, .trainerOffset = 7, - FRONT_PIC(Entei, 64, 64), + .frontPic = gMonFrontPic_Entei, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Entei, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Entei, 64, 48), + .backPic = gMonBackPic_Entei, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Entei), - ICON(Entei, 2), + .palette = gMonPalette_Entei, + .shinyPalette = gMonShinyPalette_Entei, + .iconSprite = gMonIcon_Entei, + .iconPalIndex = 2, FOOTPRINT(Entei) - LEARNSETS(Entei), + .isLegendary = TRUE, + .levelUpLearnset = sEnteiLevelUpLearnset, + .teachableLearnset = sEnteiTeachableLearnset, }, #endif //P_FAMILY_ENTEI @@ -5472,13 +6000,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = 35, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - #if P_UPDATED_ABILITIES >= GEN_7 - .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INNER_FOCUS }, - #else - .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_WATER_ABSORB }, - #endif + #if P_UPDATED_ABILITIES >= GEN_7 + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INNER_FOCUS }, + #else + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_WATER_ABSORB }, + #endif .bodyColor = BODY_COLOR_BLUE, - .isLegendary = TRUE, .speciesName = _("Suicune"), .cryId = CRY_SUICUNE, .natDexNum = NATIONAL_DEX_SUICUNE, @@ -5494,17 +6021,23 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 345, .trainerOffset = 7, - FRONT_PIC(Suicune, 64, 64), + .frontPic = gMonFrontPic_Suicune, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Suicune, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Suicune, 64, 64), + .backPic = gMonBackPic_Suicune, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(Suicune), - ICON(Suicune, 2), + .palette = gMonPalette_Suicune, + .shinyPalette = gMonShinyPalette_Suicune, + .iconSprite = gMonIcon_Suicune, + .iconPalIndex = 2, FOOTPRINT(Suicune) - LEARNSETS(Suicune), + .isLegendary = TRUE, + .levelUpLearnset = sSuicuneLevelUpLearnset, + .teachableLearnset = sSuicuneTeachableLearnset, }, #endif //P_FAMILY_SUICUNE @@ -5543,17 +6076,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 18, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Larvitar, 40, 48), + .frontPic = gMonFrontPic_Larvitar, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Larvitar, .frontAnimId = ANIM_V_JUMPS_SMALL, - BACK_PIC(Larvitar, 56, 64), + .backPic = gMonBackPic_Larvitar, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 8, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Larvitar), - ICON(Larvitar, 1), + .palette = gMonPalette_Larvitar, + .shinyPalette = gMonShinyPalette_Larvitar, + .iconSprite = gMonIcon_Larvitar, + .iconPalIndex = 1, FOOTPRINT(Larvitar) - LEARNSETS(Larvitar), + .levelUpLearnset = sLarvitarLevelUpLearnset, + .teachableLearnset = sLarvitarTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_PUPITAR}), }, @@ -5591,47 +6129,35 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pupitar, 40, 48), + .frontPic = gMonFrontPic_Pupitar, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Pupitar, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Pupitar, 48, 56), + .backPic = gMonBackPic_Pupitar, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Pupitar), - ICON(Pupitar, 2), + .palette = gMonPalette_Pupitar, + .shinyPalette = gMonShinyPalette_Pupitar, + .iconSprite = gMonIcon_Pupitar, + .iconPalIndex = 2, FOOTPRINT(Pupitar) - LEARNSETS(Pupitar), + .levelUpLearnset = sPupitarLevelUpLearnset, + .teachableLearnset = sPupitarTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 55, SPECIES_TYRANITAR}), }, -#define TYRANITAR_MISC_INFO \ - .types = MON_TYPES(TYPE_ROCK, TYPE_DARK), \ - .catchRate = 45, \ - .evYield_Attack = 3, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 40, \ - .friendship = 35, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), \ - .bodyColor = BODY_COLOR_GREEN, \ - .speciesName = _("Tyranitar"), \ - .natDexNum = NATIONAL_DEX_TYRANITAR, \ - .categoryName = _("Armor"), \ - FOOTPRINT(Tyranitar) \ - LEARNSETS(Tyranitar), \ - .formSpeciesIdTable = sTyranitarFormSpeciesIdTable, \ - .formChangeTable = sTyranitarFormChangeTable - [SPECIES_TYRANITAR] = { - TYRANITAR_MISC_INFO, .baseHP = 100, .baseAttack = 134, .baseDefense = 110, .baseSpeed = 61, .baseSpAttack = 95, .baseSpDefense = 100, + .types = MON_TYPES(TYPE_ROCK, TYPE_DARK), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 300, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -5639,8 +6165,18 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = #else .expYield = 218, #endif + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), .abilities = { ABILITY_SAND_STREAM, ABILITY_NONE, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Tyranitar"), .cryId = CRY_TYRANITAR, + .natDexNum = NATIONAL_DEX_TYRANITAR, + .categoryName = _("Armor"), .height = 20, .weight = 2020, .description = COMPOUND_STRING( @@ -5652,31 +6188,51 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 345, .trainerOffset = 7, - FRONT_PIC(Tyranitar, 64, 64), + .frontPic = gMonFrontPic_Tyranitar, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Tyranitar, .frontAnimId = ANIM_V_SHAKE, .frontAnimDelay = 10, - BACK_PIC(Tyranitar, 64, 64), + .backPic = gMonBackPic_Tyranitar, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Tyranitar), - ICON(Tyranitar, 4), + .palette = gMonPalette_Tyranitar, + .shinyPalette = gMonShinyPalette_Tyranitar, + .iconSprite = gMonIcon_Tyranitar, + .iconPalIndex = 4, + FOOTPRINT(Tyranitar) + .levelUpLearnset = sTyranitarLevelUpLearnset, + .teachableLearnset = sTyranitarTeachableLearnset, + .formSpeciesIdTable = sTyranitarFormSpeciesIdTable, + .formChangeTable = sTyranitarFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_TYRANITAR_MEGA] = { - TYRANITAR_MISC_INFO, .baseHP = 100, .baseAttack = 164, .baseDefense = 150, .baseSpeed = 71, .baseSpAttack = 95, .baseSpDefense = 120, + .types = MON_TYPES(TYPE_ROCK, TYPE_DARK), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 350 : 315, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), .abilities = { ABILITY_SAND_STREAM, ABILITY_SAND_STREAM, ABILITY_SAND_STREAM }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Tyranitar"), .cryId = CRY_TYRANITAR_MEGA, + .natDexNum = NATIONAL_DEX_TYRANITAR, + .categoryName = _("Armor"), .height = 25, .weight = 2550, .description = COMPOUND_STRING( @@ -5688,16 +6244,25 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 345, .trainerOffset = 7, - FRONT_PIC(TyranitarMega, 64, 64), + .frontPic = gMonFrontPic_TyranitarMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_TyranitarMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(TyranitarMega, 64, 64), + .backPic = gMonBackPic_TyranitarMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(TyranitarMega), - ICON(TyranitarMega, 1), + .palette = gMonPalette_TyranitarMega, + .shinyPalette = gMonShinyPalette_TyranitarMega, + .iconSprite = gMonIcon_TyranitarMega, + .iconPalIndex = 1, + FOOTPRINT(Tyranitar) .isMegaEvolution = TRUE, + .levelUpLearnset = sTyranitarLevelUpLearnset, + .teachableLearnset = sTyranitarTeachableLearnset, + .formSpeciesIdTable = sTyranitarFormSpeciesIdTable, + .formChangeTable = sTyranitarFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_LARVITAR @@ -5728,7 +6293,6 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_MULTISCALE }, .bodyColor = BODY_COLOR_WHITE, - .isLegendary = TRUE, .speciesName = _("Lugia"), .cryId = CRY_LUGIA, .natDexNum = NATIONAL_DEX_LUGIA, @@ -5744,19 +6308,25 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 721, .trainerOffset = 19, - FRONT_PIC(Lugia, 64, 64), + .frontPic = gMonFrontPic_Lugia, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Lugia, .frontAnimId = ANIM_GROW_IN_STAGES, .frontAnimDelay = 20, .enemyMonElevation = 6, - BACK_PIC(Lugia, 64, 64), + .backPic = gMonBackPic_Lugia, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(Lugia), - ICON(Lugia, 0), + .palette = gMonPalette_Lugia, + .shinyPalette = gMonShinyPalette_Lugia, + .iconSprite = gMonIcon_Lugia, + .iconPalIndex = 0, FOOTPRINT(Lugia) - LEARNSETS(Lugia), + .isLegendary = TRUE, + .levelUpLearnset = sLugiaLevelUpLearnset, + .teachableLearnset = sLugiaTeachableLearnset, }, #endif //P_FAMILY_LUGIA @@ -5788,7 +6358,6 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_REGENERATOR }, .bodyColor = BODY_COLOR_RED, - .isLegendary = TRUE, .speciesName = _("Ho-Oh"), .cryId = CRY_HO_OH, .natDexNum = NATIONAL_DEX_HO_OH, @@ -5804,18 +6373,24 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, .trainerScale = 610, .trainerOffset = 17, - FRONT_PIC(HoOh, 64, 64), + .frontPic = gMonFrontPic_HoOh, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_HoOh, .frontAnimId = ANIM_GROW_VIBRATE, .enemyMonElevation = 6, - BACK_PIC(HoOh, 64, 64), + .backPic = gMonBackPic_HoOh, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(HoOh), - ICON(HoOh, 1), + .palette = gMonPalette_HoOh, + .shinyPalette = gMonShinyPalette_HoOh, + .iconSprite = gMonIcon_HoOh, + .iconPalIndex = 1, FOOTPRINT(HoOh) - LEARNSETS(HoOh), + .isLegendary = TRUE, + .levelUpLearnset = sHoOhLevelUpLearnset, + .teachableLearnset = sHoOhTeachableLearnset, }, #endif //P_FAMILY_HO_OH @@ -5847,7 +6422,6 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_NATURAL_CURE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, - .isMythical = TRUE, .speciesName = _("Celebi"), .cryId = CRY_CELEBI, .natDexNum = NATIONAL_DEX_CELEBI, @@ -5863,18 +6437,24 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = -10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Celebi, 40, 40), + .frontPic = gMonFrontPic_Celebi, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Celebi, .frontAnimId = ANIM_H_SLIDE_WOBBLE, .enemyMonElevation = 15, - BACK_PIC(Celebi, 48, 56), + .backPic = gMonBackPic_Celebi, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, - PALETTES(Celebi), - ICON(Celebi, 1), + .palette = gMonPalette_Celebi, + .shinyPalette = gMonShinyPalette_Celebi, + .iconSprite = gMonIcon_Celebi, + .iconPalIndex = 1, FOOTPRINT(Celebi) - LEARNSETS(Celebi), + .isMythical = TRUE, + .levelUpLearnset = sCelebiLevelUpLearnset, + .teachableLearnset = sCelebiTeachableLearnset, }, #endif //P_FAMILY_CELEBI diff --git a/src/data/pokemon/species_info/gen_3.h b/src/data/pokemon/species_info/gen_3.h index 94daa4b55f..6664a61899 100644 --- a/src/data/pokemon/species_info/gen_3.h +++ b/src/data/pokemon/species_info/gen_3.h @@ -38,17 +38,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Treecko, 48, 48), + .frontPic = gMonFrontPic_Treecko, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Treecko, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Treecko, 56, 48), + .backPic = gMonBackPic_Treecko, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Treecko), - ICON(Treecko, 1), + .palette = gMonPalette_Treecko, + .shinyPalette = gMonShinyPalette_Treecko, + .iconSprite = gMonIcon_Treecko, + .iconPalIndex = 1, FOOTPRINT(Treecko) - LEARNSETS(Treecko), + .levelUpLearnset = sTreeckoLevelUpLearnset, + .teachableLearnset = sTreeckoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_GROVYLE}), }, @@ -86,40 +91,27 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 5, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Grovyle, 64, 56), + .frontPic = gMonFrontPic_Grovyle, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Grovyle, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Grovyle, 64, 56), + .backPic = gMonBackPic_Grovyle, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Grovyle), - ICON(Grovyle, 1), + .palette = gMonPalette_Grovyle, + .shinyPalette = gMonShinyPalette_Grovyle, + .iconSprite = gMonIcon_Grovyle, + .iconPalIndex = 1, FOOTPRINT(Grovyle) - LEARNSETS(Grovyle), + .levelUpLearnset = sGrovyleLevelUpLearnset, + .teachableLearnset = sGrovyleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SCEPTILE}), }, -#define SCEPTILE_MISC_INFO \ - .catchRate = 45, \ - .evYield_Speed = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_DRAGON),\ - .bodyColor = BODY_COLOR_GREEN, \ - .speciesName = _("Sceptile"), \ - .natDexNum = NATIONAL_DEX_SCEPTILE, \ - .categoryName = _("Forest"), \ - FOOTPRINT(Sceptile) \ - LEARNSETS(Sceptile), \ - .formSpeciesIdTable = sSceptileFormSpeciesIdTable, \ - .formChangeTable = sSceptileFormChangeTable - [SPECIES_SCEPTILE] = { - SCEPTILE_MISC_INFO, .baseHP = 70, .baseAttack = 85, .baseDefense = 65, @@ -127,6 +119,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .baseSpAttack = 105, .baseSpDefense = 85, .types = MON_TYPES(TYPE_GRASS), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 265, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -134,8 +127,18 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 208, #endif + .evYield_Speed = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_DRAGON), .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_UNBURDEN }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Sceptile"), .cryId = CRY_SCEPTILE, + .natDexNum = NATIONAL_DEX_SCEPTILE, + .categoryName = _("Forest"), .height = 17, .weight = 522, .description = COMPOUND_STRING( @@ -147,21 +150,29 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -1, .trainerScale = 275, .trainerOffset = 2, - FRONT_PIC(Sceptile, 64, 64), + .frontPic = gMonFrontPic_Sceptile, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Sceptile, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Sceptile, 64, 64), + .backPic = gMonBackPic_Sceptile, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Sceptile), - ICON(Sceptile, 1), + .palette = gMonPalette_Sceptile, + .shinyPalette = gMonShinyPalette_Sceptile, + .iconSprite = gMonIcon_Sceptile, + .iconPalIndex = 1, + FOOTPRINT(Sceptile) + .levelUpLearnset = sSceptileLevelUpLearnset, + .teachableLearnset = sSceptileTeachableLearnset, + .formSpeciesIdTable = sSceptileFormSpeciesIdTable, + .formChangeTable = sSceptileFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_SCEPTILE_MEGA] = { - SCEPTILE_MISC_INFO, .baseHP = 70, .baseAttack = 110, .baseDefense = 75, @@ -169,9 +180,20 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .baseSpAttack = 145, .baseSpDefense = 85, .types = MON_TYPES(TYPE_GRASS, TYPE_DRAGON), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 315 : 284, + .evYield_Speed = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_DRAGON), .abilities = { ABILITY_LIGHTNING_ROD, ABILITY_LIGHTNING_ROD, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Sceptile"), .cryId = CRY_SCEPTILE_MEGA, + .natDexNum = NATIONAL_DEX_SCEPTILE, + .categoryName = _("Forest"), .height = 19, .weight = 552, .description = COMPOUND_STRING( @@ -183,16 +205,25 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -1, .trainerScale = 275, .trainerOffset = 2, - FRONT_PIC(SceptileMega, 64, 64), + .frontPic = gMonFrontPic_SceptileMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_SceptileMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SceptileMega, 64, 64), + .backPic = gMonBackPic_SceptileMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(SceptileMega), - ICON(SceptileMega, 1), + .palette = gMonPalette_SceptileMega, + .shinyPalette = gMonShinyPalette_SceptileMega, + .iconSprite = gMonIcon_SceptileMega, + .iconPalIndex = 1, + FOOTPRINT(Sceptile) .isMegaEvolution = TRUE, + .levelUpLearnset = sSceptileLevelUpLearnset, + .teachableLearnset = sSceptileTeachableLearnset, + .formSpeciesIdTable = sSceptileFormSpeciesIdTable, + .formChangeTable = sSceptileFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_TREECKO @@ -232,18 +263,24 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Torchic, 32, 48), + .frontPic = gMonFrontPic_Torchic, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Torchic, .frontAnimId = ANIM_V_JUMPS_SMALL, - BACK_PIC(Torchic, 40, 48), - BACK_PIC_FEMALE(Torchic, 40, 48), + .backPic = gMonBackPic_Torchic, + .backPicFemale = gMonBackPic_TorchicF, + .backPicSize = MON_COORDS_SIZE(40, 48), + .backPicSizeFemale = MON_COORDS_SIZE(40, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Torchic), - ICON(Torchic, 0), + .palette = gMonPalette_Torchic, + .shinyPalette = gMonShinyPalette_Torchic, + .iconSprite = gMonIcon_Torchic, + .iconPalIndex = 0, FOOTPRINT(Torchic) - LEARNSETS(Torchic), + .levelUpLearnset = sTorchicLevelUpLearnset, + .teachableLearnset = sTorchicTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_COMBUSKEN}), }, @@ -282,55 +319,39 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 5, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Combusken, 48, 64), - FRONT_PIC_FEMALE(Combusken, 48, 64), + .frontPic = gMonFrontPic_Combusken, + .frontPicFemale = gMonFrontPic_CombuskenF, + .frontPicSize = MON_COORDS_SIZE(48, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Combusken, .frontAnimId = ANIM_V_JUMPS_H_JUMPS, - BACK_PIC(Combusken, 64, 64), - BACK_PIC_FEMALE(Combusken, 64, 64), + .backPic = gMonBackPic_Combusken, + .backPicFemale = gMonBackPic_CombuskenF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Combusken), - ICON(Combusken, 0), + .palette = gMonPalette_Combusken, + .shinyPalette = gMonShinyPalette_Combusken, + .iconSprite = gMonIcon_Combusken, + .iconPalIndex = 0, FOOTPRINT(Combusken) - LEARNSETS(Combusken), + .levelUpLearnset = sCombuskenLevelUpLearnset, + .teachableLearnset = sCombuskenTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_BLAZIKEN}), }, -#define BLAZIKEN_MISC_INFO \ - .types = MON_TYPES(TYPE_FIRE, TYPE_FIGHTING), \ - .catchRate = 45, \ - .evYield_Attack = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .bodyColor = BODY_COLOR_RED, \ - .speciesName = _("Blaziken"), \ - .natDexNum = NATIONAL_DEX_BLAZIKEN, \ - .categoryName = _("Blaze"), \ - .height = 19, \ - .weight = 520, \ - .pokemonScale = 256, \ - .pokemonOffset = 0, \ - .trainerScale = 301, \ - .trainerOffset = 4, \ - FOOTPRINT(Blaziken) \ - LEARNSETS(Blaziken), \ - .formSpeciesIdTable = sBlazikenFormSpeciesIdTable, \ - .formChangeTable = sBlazikenFormChangeTable - [SPECIES_BLAZIKEN] = { - BLAZIKEN_MISC_INFO, .baseHP = 80, .baseAttack = 120, .baseDefense = 70, .baseSpeed = 80, .baseSpAttack = 110, .baseSpDefense = 70, + .types = MON_TYPES(TYPE_FIRE, TYPE_FIGHTING), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 265, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -338,54 +359,107 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 209, #endif + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_SPEED_BOOST }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Blaziken"), .cryId = CRY_BLAZIKEN, + .natDexNum = NATIONAL_DEX_BLAZIKEN, + .categoryName = _("Blaze"), + .height = 19, + .weight = 520, .description = COMPOUND_STRING( "It learns martial arts that use punches\n" "and kicks. Every several years, its old\n" "feathers burn off, and new, supple\n" "feathers grow back in their place."), - FRONT_PIC(Blaziken, 56, 64), - FRONT_PIC_FEMALE(Blaziken, 56, 64), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 301, + .trainerOffset = 4, + .frontPic = gMonFrontPic_Blaziken, + .frontPicFemale = gMonFrontPic_BlazikenF, + .frontPicSize = MON_COORDS_SIZE(56, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Blaziken, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Blaziken, 64, 64), - BACK_PIC_FEMALE(Blaziken, 64, 64), + .backPic = gMonBackPic_Blaziken, + .backPicFemale = gMonBackPic_BlazikenF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Blaziken), - ICON(Blaziken, 0), + .palette = gMonPalette_Blaziken, + .shinyPalette = gMonShinyPalette_Blaziken, + .iconSprite = gMonIcon_Blaziken, + .iconPalIndex = 0, + FOOTPRINT(Blaziken) + .levelUpLearnset = sBlazikenLevelUpLearnset, + .teachableLearnset = sBlazikenTeachableLearnset, + .formSpeciesIdTable = sBlazikenFormSpeciesIdTable, + .formChangeTable = sBlazikenFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_BLAZIKEN_MEGA] = { - BLAZIKEN_MISC_INFO, .baseHP = 80, .baseAttack = 160, .baseDefense = 80, .baseSpeed = 100, .baseSpAttack = 130, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_FIRE, TYPE_FIGHTING), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 315 : 284, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_SPEED_BOOST, ABILITY_SPEED_BOOST, ABILITY_SPEED_BOOST }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Blaziken"), .cryId = CRY_BLAZIKEN_MEGA, + .natDexNum = NATIONAL_DEX_BLAZIKEN, + .categoryName = _("Blaze"), + .height = 19, + .weight = 520, .description = COMPOUND_STRING( "As it unleashes a flurry of savage kicks,\n" "its legs can begin to burn from the\n" "friction of the surrounding atmosphere.\n" "They're always a source of pride to it."), - FRONT_PIC(BlazikenMega, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 301, + .trainerOffset = 4, + .frontPic = gMonFrontPic_BlazikenMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_BlazikenMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(BlazikenMega, 56, 64), + .backPic = gMonBackPic_BlazikenMega, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(BlazikenMega), - ICON(BlazikenMega, 0), + .palette = gMonPalette_BlazikenMega, + .shinyPalette = gMonShinyPalette_BlazikenMega, + .iconSprite = gMonIcon_BlazikenMega, + .iconPalIndex = 0, + FOOTPRINT(Blaziken) .isMegaEvolution = TRUE, + .levelUpLearnset = sBlazikenLevelUpLearnset, + .teachableLearnset = sBlazikenTeachableLearnset, + .formSpeciesIdTable = sBlazikenFormSpeciesIdTable, + .formChangeTable = sBlazikenFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_TORCHIC @@ -425,17 +499,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Mudkip, 40, 40), + .frontPic = gMonFrontPic_Mudkip, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Mudkip, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, - BACK_PIC(Mudkip, 48, 48), + .backPic = gMonBackPic_Mudkip, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Mudkip), - ICON(Mudkip, 0), + .palette = gMonPalette_Mudkip, + .shinyPalette = gMonShinyPalette_Mudkip, + .iconSprite = gMonIcon_Mudkip, + .iconPalIndex = 0, FOOTPRINT(Mudkip) - LEARNSETS(Mudkip), + .levelUpLearnset = sMudkipLevelUpLearnset, + .teachableLearnset = sMudkipTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_MARSHTOMP}), }, @@ -473,47 +552,35 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Marshtomp, 48, 56), + .frontPic = gMonFrontPic_Marshtomp, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Marshtomp, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Marshtomp, 64, 64), + .backPic = gMonBackPic_Marshtomp, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Marshtomp), - ICON(Marshtomp, 0), + .palette = gMonPalette_Marshtomp, + .shinyPalette = gMonShinyPalette_Marshtomp, + .iconSprite = gMonIcon_Marshtomp, + .iconPalIndex = 0, FOOTPRINT(Marshtomp) - LEARNSETS(Marshtomp), + .levelUpLearnset = sMarshtompLevelUpLearnset, + .teachableLearnset = sMarshtompTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SWAMPERT}), }, -#define SWAMPERT_MISC_INFO \ - .types = MON_TYPES(TYPE_WATER, TYPE_GROUND), \ - .catchRate = 45, \ - .evYield_Attack = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1),\ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Swampert"), \ - .natDexNum = NATIONAL_DEX_SWAMPERT, \ - .categoryName = _("Mud Fish"), \ - FOOTPRINT(Swampert) \ - LEARNSETS(Swampert), \ - .formSpeciesIdTable = sSwampertFormSpeciesIdTable, \ - .formChangeTable = sSwampertFormChangeTable - [SPECIES_SWAMPERT] = { - SWAMPERT_MISC_INFO, .baseHP = 100, .baseAttack = 110, .baseDefense = 90, .baseSpeed = 60, .baseSpAttack = 85, .baseSpDefense = 90, + .types = MON_TYPES(TYPE_WATER, TYPE_GROUND), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 268, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -521,8 +588,18 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 210, #endif + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_DAMP }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Swampert"), .cryId = CRY_SWAMPERT, + .natDexNum = NATIONAL_DEX_SWAMPERT, + .categoryName = _("Mud Fish"), .height = 15, .weight = 819, .description = COMPOUND_STRING( @@ -534,30 +611,50 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Swampert, 64, 56), + .frontPic = gMonFrontPic_Swampert, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Swampert, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Swampert, 64, 64), + .backPic = gMonBackPic_Swampert, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(Swampert), - ICON(Swampert, 0), + .palette = gMonPalette_Swampert, + .shinyPalette = gMonShinyPalette_Swampert, + .iconSprite = gMonIcon_Swampert, + .iconPalIndex = 0, + FOOTPRINT(Swampert) + .levelUpLearnset = sSwampertLevelUpLearnset, + .teachableLearnset = sSwampertTeachableLearnset, + .formSpeciesIdTable = sSwampertFormSpeciesIdTable, + .formChangeTable = sSwampertFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_SWAMPERT_MEGA] = { - SWAMPERT_MISC_INFO, .baseHP = 100, .baseAttack = 150, .baseDefense = 110, .baseSpeed = 70, .baseSpAttack = 95, .baseSpDefense = 110, + .types = MON_TYPES(TYPE_WATER, TYPE_GROUND), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 318 : 286, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), .abilities = { ABILITY_SWIFT_SWIM, ABILITY_SWIFT_SWIM, ABILITY_SWIFT_SWIM }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Swampert"), .cryId = CRY_SWAMPERT_MEGA, + .natDexNum = NATIONAL_DEX_SWAMPERT, + .categoryName = _("Mud Fish"), .height = 19, .weight = 1020, .description = COMPOUND_STRING( @@ -569,16 +666,25 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(SwampertMega, 64, 64), + .frontPic = gMonFrontPic_SwampertMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 6, .frontAnimFrames = sAnims_SwampertMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SwampertMega, 64, 56), + .backPic = gMonBackPic_SwampertMega, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(SwampertMega), - ICON(SwampertMega, 0), + .palette = gMonPalette_SwampertMega, + .shinyPalette = gMonShinyPalette_SwampertMega, + .iconSprite = gMonIcon_SwampertMega, + .iconPalIndex = 0, + FOOTPRINT(Swampert) .isMegaEvolution = TRUE, + .levelUpLearnset = sSwampertLevelUpLearnset, + .teachableLearnset = sSwampertTeachableLearnset, + .formSpeciesIdTable = sSwampertFormSpeciesIdTable, + .formChangeTable = sSwampertFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_MUDKIP @@ -624,17 +730,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Poochyena, 48, 48), + .frontPic = gMonFrontPic_Poochyena, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Poochyena, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Poochyena, 64, 48), + .backPic = gMonBackPic_Poochyena, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Poochyena), - ICON(Poochyena, 2), + .palette = gMonPalette_Poochyena, + .shinyPalette = gMonShinyPalette_Poochyena, + .iconSprite = gMonIcon_Poochyena, + .iconPalIndex = 2, FOOTPRINT(Poochyena) - LEARNSETS(Poochyena), + .levelUpLearnset = sPoochyenaLevelUpLearnset, + .teachableLearnset = sPoochyenaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_MIGHTYENA}), }, @@ -672,17 +783,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 9, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Mightyena, 64, 64), + .frontPic = gMonFrontPic_Mightyena, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Mightyena, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Mightyena, 64, 64), + .backPic = gMonBackPic_Mightyena, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Mightyena), - ICON(Mightyena, 2), + .palette = gMonPalette_Mightyena, + .shinyPalette = gMonShinyPalette_Mightyena, + .iconSprite = gMonIcon_Mightyena, + .iconPalIndex = 2, FOOTPRINT(Mightyena) - LEARNSETS(Mightyena), + .levelUpLearnset = sMightyenaLevelUpLearnset, + .teachableLearnset = sMightyenaTeachableLearnset, }, #endif //P_FAMILY_POOCHYENA @@ -695,158 +811,225 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #define ZIGZAGOON_EXP_YIELD 60 #endif -#define ZIGZAGOON_MISC_INFO \ - .baseHP = 38, \ - .baseAttack = 30, \ - .baseDefense = 41, \ - .baseSpeed = 60, \ - .baseSpAttack = 30, \ - .baseSpDefense = 41, \ - .catchRate = 255, \ - .expYield = ZIGZAGOON_EXP_YIELD, \ - .evYield_Speed = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .abilities = { ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET }, \ - .speciesName = _("Zigzagoon"), \ - .cryId = CRY_ZIGZAGOON, \ - .natDexNum = NATIONAL_DEX_ZIGZAGOON, \ - .categoryName = _("Tiny Raccoon"), \ - .height = 4, \ - .weight = 175, \ - .pokemonScale = 560, \ - .pokemonOffset = 22, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Zigzagoon) \ - .formSpeciesIdTable = sZigzagoonFormSpeciesIdTable - -#define LINOONE_MISC_INFO \ - .baseHP = 78, \ - .baseAttack = 70, \ - .baseDefense = 61, \ - .baseSpeed = 100, \ - .baseSpAttack = 50, \ - .baseSpDefense = 61, \ - .catchRate = 90, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 147 : 128, \ - .evYield_Speed = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .abilities = { ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET }, \ - .bodyColor = BODY_COLOR_WHITE, \ - .speciesName = _("Linoone"), \ - .cryId = CRY_LINOONE, \ - .natDexNum = NATIONAL_DEX_LINOONE, \ - .categoryName = _("Rushing"), \ - .height = 5, \ - .weight = 325, \ - .pokemonScale = 321, \ - .pokemonOffset = 7, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Linoone) \ - .formSpeciesIdTable = sLinooneFormSpeciesIdTable - [SPECIES_ZIGZAGOON] = { - ZIGZAGOON_MISC_INFO, + .baseHP = 38, + .baseAttack = 30, + .baseDefense = 41, + .baseSpeed = 60, + .baseSpAttack = 30, + .baseSpDefense = 41, .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 255, + .expYield = ZIGZAGOON_EXP_YIELD, + .evYield_Speed = 1, .itemCommon = ITEM_POTION, .itemRare = ITEM_REVIVE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET }, .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Zigzagoon"), + .cryId = CRY_ZIGZAGOON, + .natDexNum = NATIONAL_DEX_ZIGZAGOON, + .categoryName = _("Tiny Raccoon"), + .height = 4, + .weight = 175, .description = COMPOUND_STRING( "Rubbing its nose against the ground, it\n" "always wanders about back and forth in\n" "search of something. It is distinguished\n" "by the zigzag footprints it leaves."), - FRONT_PIC(Zigzagoon, 56, 40), + .pokemonScale = 560, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Zigzagoon, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Zigzagoon, .frontAnimId = ANIM_H_SLIDE, - BACK_PIC(Zigzagoon, 56, 56), + .backPic = gMonBackPic_Zigzagoon, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Zigzagoon), - ICON(Zigzagoon, 2), - LEARNSETS(Zigzagoon), + .palette = gMonPalette_Zigzagoon, + .shinyPalette = gMonShinyPalette_Zigzagoon, + .iconSprite = gMonIcon_Zigzagoon, + .iconPalIndex = 2, + FOOTPRINT(Zigzagoon) + .levelUpLearnset = sZigzagoonLevelUpLearnset, + .teachableLearnset = sZigzagoonTeachableLearnset, + .formSpeciesIdTable = sZigzagoonFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LINOONE}), }, [SPECIES_LINOONE] = { - LINOONE_MISC_INFO, + .baseHP = 78, + .baseAttack = 70, + .baseDefense = 61, + .baseSpeed = 100, + .baseSpAttack = 50, + .baseSpDefense = 61, .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 90, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 147 : 128, + .evYield_Speed = 2, .itemCommon = ITEM_POTION, .itemRare = ITEM_MAX_REVIVE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Linoone"), + .cryId = CRY_LINOONE, + .natDexNum = NATIONAL_DEX_LINOONE, + .categoryName = _("Rushing"), + .height = 5, + .weight = 325, .description = COMPOUND_STRING( "It is exceedingly fast if it only has to run\n" "in a straight line. When it spots pond-\n" "dwelling prey underwater, it quickly leaps\n" "in and catches it with its sharp claws."), - FRONT_PIC(Linoone, 64, 40), + .pokemonScale = 321, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Linoone, + .frontPicSize = MON_COORDS_SIZE(64, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Linoone, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Linoone, 56, 40), + .backPic = gMonBackPic_Linoone, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Linoone), - ICON(Linoone, 2), - LEARNSETS(Linoone), + .palette = gMonPalette_Linoone, + .shinyPalette = gMonShinyPalette_Linoone, + .iconSprite = gMonIcon_Linoone, + .iconPalIndex = 2, + FOOTPRINT(Linoone) + .levelUpLearnset = sLinooneLevelUpLearnset, + .teachableLearnset = sLinooneTeachableLearnset, + .formSpeciesIdTable = sLinooneFormSpeciesIdTable, }, #if P_GALARIAN_FORMS [SPECIES_ZIGZAGOON_GALARIAN] = { - ZIGZAGOON_MISC_INFO, + .baseHP = 38, + .baseAttack = 30, + .baseDefense = 41, + .baseSpeed = 60, + .baseSpAttack = 30, + .baseSpDefense = 41, .types = MON_TYPES(TYPE_DARK, TYPE_NORMAL), + .catchRate = 255, + .expYield = ZIGZAGOON_EXP_YIELD, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET }, .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Zigzagoon"), + .cryId = CRY_ZIGZAGOON, + .natDexNum = NATIONAL_DEX_ZIGZAGOON, + .categoryName = _("Tiny Raccoon"), + .height = 4, + .weight = 175, .description = COMPOUND_STRING( "Its restlessness has it constantly moving\n" "in zigzags. It will purposely run into other\n" "Pokémon to start fights. It's thought to\n" "be the oldest form of Zigzagoon."), - FRONT_PIC(ZigzagoonGalarian, 56, 40), + .pokemonScale = 560, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_ZigzagoonGalarian, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_ZigzagoonGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ZigzagoonGalarian, 56, 48), + .backPic = gMonBackPic_ZigzagoonGalarian, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 12, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ZigzagoonGalarian), - ICON(ZigzagoonGalarian, 0), - LEARNSETS(ZigzagoonGalarian), + .palette = gMonPalette_ZigzagoonGalarian, + .shinyPalette = gMonShinyPalette_ZigzagoonGalarian, + .iconSprite = gMonIcon_ZigzagoonGalarian, + .iconPalIndex = 0, + FOOTPRINT(Zigzagoon) .isGalarianForm = TRUE, + .levelUpLearnset = sZigzagoonGalarianLevelUpLearnset, + .teachableLearnset = sZigzagoonGalarianTeachableLearnset, + .formSpeciesIdTable = sZigzagoonFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LINOONE_GALARIAN}), }, [SPECIES_LINOONE_GALARIAN] = { - LINOONE_MISC_INFO, + .baseHP = 78, + .baseAttack = 70, + .baseDefense = 61, + .baseSpeed = 100, + .baseSpAttack = 50, + .baseSpDefense = 61, .types = MON_TYPES(TYPE_DARK, TYPE_NORMAL), + .catchRate = 90, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 147 : 128, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Linoone"), + .cryId = CRY_LINOONE, + .natDexNum = NATIONAL_DEX_LINOONE, + .categoryName = _("Rushing"), + .height = 5, + .weight = 325, .description = COMPOUND_STRING( "This very aggressive Pokémon will\n" "recklessly challenge opponents stronger\n" "than itself. It uses its long tongue to\n" "taunt them to then tackle forcefully."), - FRONT_PIC(LinooneGalarian, 64, 40), + .pokemonScale = 321, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_LinooneGalarian, + .frontPicSize = MON_COORDS_SIZE(64, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_LinooneGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(LinooneGalarian, 64, 40), + .backPic = gMonBackPic_LinooneGalarian, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, - PALETTES(LinooneGalarian), - ICON(LinooneGalarian, 0), - LEARNSETS(LinooneGalarian), + .palette = gMonPalette_LinooneGalarian, + .shinyPalette = gMonShinyPalette_LinooneGalarian, + .iconSprite = gMonIcon_LinooneGalarian, + .iconPalIndex = 0, + FOOTPRINT(Linoone) .isGalarianForm = TRUE, + .levelUpLearnset = sLinooneGalarianLevelUpLearnset, + .teachableLearnset = sLinooneGalarianTeachableLearnset, + .formSpeciesIdTable = sLinooneFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 35, SPECIES_OBSTAGOON}), }, @@ -884,17 +1067,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(Obstagoon, 56, 64), + .frontPic = gMonFrontPic_Obstagoon, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Obstagoon, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Obstagoon, 64, 64), + .backPic = gMonBackPic_Obstagoon, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Obstagoon), - ICON(Obstagoon, 0), + .palette = gMonPalette_Obstagoon, + .shinyPalette = gMonShinyPalette_Obstagoon, + .iconSprite = gMonIcon_Obstagoon, + .iconPalIndex = 0, FOOTPRINT(Obstagoon) - LEARNSETS(Obstagoon), + .levelUpLearnset = sObstagoonLevelUpLearnset, + .teachableLearnset = sObstagoonTeachableLearnset, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_ZIGZAGOON @@ -942,18 +1130,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Wurmple, 40, 40), + .frontPic = gMonFrontPic_Wurmple, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Wurmple, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Wurmple, 64, 56), + .backPic = gMonBackPic_Wurmple, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Wurmple), - ICON(Wurmple, 0), + .palette = gMonPalette_Wurmple, + .shinyPalette = gMonShinyPalette_Wurmple, + .iconSprite = gMonIcon_Wurmple, + .iconPalIndex = 0, FOOTPRINT(Wurmple) - LEARNSETS(Wurmple), .tmIlliterate = TRUE, + .levelUpLearnset = sWurmpleLevelUpLearnset, + .teachableLearnset = sWurmpleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}), }, @@ -992,18 +1185,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Silcoon, 56, 48), + .frontPic = gMonFrontPic_Silcoon, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Silcoon, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Silcoon, 64, 40), + .backPic = gMonBackPic_Silcoon, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Silcoon), - ICON(Silcoon, 2), + .palette = gMonPalette_Silcoon, + .shinyPalette = gMonShinyPalette_Silcoon, + .iconSprite = gMonIcon_Silcoon, + .iconPalIndex = 2, FOOTPRINT(Silcoon) - LEARNSETS(Silcoon), .tmIlliterate = TRUE, + .levelUpLearnset = sSilcoonLevelUpLearnset, + .teachableLearnset = sSilcoonTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_BEAUTIFLY}), }, @@ -1050,20 +1248,27 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Beautifly, 64, 56), - FRONT_PIC_FEMALE(Beautifly, 64, 56), + .frontPic = gMonFrontPic_Beautifly, + .frontPicFemale = gMonFrontPic_BeautiflyF, + .frontPicSize = MON_COORDS_SIZE(64, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Beautifly, .frontAnimId = ANIM_V_SLIDE, .enemyMonElevation = 10, - BACK_PIC(Beautifly, 64, 64), - BACK_PIC_FEMALE(Beautifly, 64, 64), + .backPic = gMonBackPic_Beautifly, + .backPicFemale = gMonBackPic_BeautiflyF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Beautifly), - ICON(Beautifly, 0), + .palette = gMonPalette_Beautifly, + .shinyPalette = gMonShinyPalette_Beautifly, + .iconSprite = gMonIcon_Beautifly, + .iconPalIndex = 0, FOOTPRINT(Beautifly) - LEARNSETS(Beautifly), + .levelUpLearnset = sBeautiflyLevelUpLearnset, + .teachableLearnset = sBeautiflyTeachableLearnset, }, [SPECIES_CASCOON] = @@ -1106,18 +1311,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cascoon, 56, 48), + .frontPic = gMonFrontPic_Cascoon, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Cascoon, .frontAnimId = ANIM_V_SLIDE, - BACK_PIC(Cascoon, 56, 40), + .backPic = gMonBackPic_Cascoon, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 15, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Cascoon), - ICON(Cascoon, 2), + .palette = gMonPalette_Cascoon, + .shinyPalette = gMonShinyPalette_Cascoon, + .iconSprite = gMonIcon_Cascoon, + .iconPalIndex = 2, FOOTPRINT(Cascoon) - LEARNSETS(Cascoon), .tmIlliterate = TRUE, + .levelUpLearnset = sCascoonLevelUpLearnset, + .teachableLearnset = sCascoonTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_DUSTOX}), }, @@ -1166,20 +1376,27 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Dustox, 64, 48), - FRONT_PIC_FEMALE(Dustox, 64, 48), + .frontPic = gMonFrontPic_Dustox, + .frontPicFemale = gMonFrontPic_DustoxF, + .frontPicSize = MON_COORDS_SIZE(64, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Dustox, .frontAnimId = ANIM_V_JUMPS_H_JUMPS, .enemyMonElevation = 12, - BACK_PIC(Dustox, 64, 64), - BACK_PIC_FEMALE(Dustox, 64, 64), + .backPic = gMonBackPic_Dustox, + .backPicFemale = gMonBackPic_DustoxF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Dustox), - ICON(Dustox, 5), + .palette = gMonPalette_Dustox, + .shinyPalette = gMonShinyPalette_Dustox, + .iconSprite = gMonIcon_Dustox, + .iconPalIndex = 5, FOOTPRINT(Dustox) - LEARNSETS(Dustox), + .levelUpLearnset = sDustoxLevelUpLearnset, + .teachableLearnset = sDustoxTeachableLearnset, }, #endif //P_FAMILY_WURMPLE @@ -1219,17 +1436,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Lotad, 40, 40), + .frontPic = gMonFrontPic_Lotad, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Lotad, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Lotad, 56, 40), + .backPic = gMonBackPic_Lotad, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Lotad), - ICON(Lotad, 4), + .palette = gMonPalette_Lotad, + .shinyPalette = gMonShinyPalette_Lotad, + .iconSprite = gMonIcon_Lotad, + .iconPalIndex = 4, FOOTPRINT(Lotad) - LEARNSETS(Lotad), + .levelUpLearnset = sLotadLevelUpLearnset, + .teachableLearnset = sLotadTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_LOMBRE}), }, @@ -1268,17 +1490,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 9, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Lombre, 48, 48), + .frontPic = gMonFrontPic_Lombre, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Lombre, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Lombre, 48, 56), + .backPic = gMonBackPic_Lombre, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Lombre), - ICON(Lombre, 1), + .palette = gMonPalette_Lombre, + .shinyPalette = gMonShinyPalette_Lombre, + .iconSprite = gMonIcon_Lombre, + .iconPalIndex = 1, FOOTPRINT(Lombre) - LEARNSETS(Lombre), + .levelUpLearnset = sLombreLevelUpLearnset, + .teachableLearnset = sLombreTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}), }, @@ -1323,19 +1550,26 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 268, .trainerOffset = -1, - FRONT_PIC(Ludicolo, 56, 64), - FRONT_PIC_FEMALE(Ludicolo, 56, 64), + .frontPic = gMonFrontPic_Ludicolo, + .frontPicFemale = gMonFrontPic_LudicoloF, + .frontPicSize = MON_COORDS_SIZE(56, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Ludicolo, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - BACK_PIC(Ludicolo, 64, 56), - BACK_PIC_FEMALE(Ludicolo, 64, 56), + .backPic = gMonBackPic_Ludicolo, + .backPicFemale = gMonBackPic_LudicoloF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Ludicolo), - ICON(Ludicolo, 1), + .palette = gMonPalette_Ludicolo, + .shinyPalette = gMonShinyPalette_Ludicolo, + .iconSprite = gMonIcon_Ludicolo, + .iconPalIndex = 1, FOOTPRINT(Ludicolo) - LEARNSETS(Ludicolo), + .levelUpLearnset = sLudicoloLevelUpLearnset, + .teachableLearnset = sLudicoloTeachableLearnset, }, #endif //P_FAMILY_LOTAD @@ -1375,17 +1609,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Seedot, 32, 40), + .frontPic = gMonFrontPic_Seedot, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Seedot, .frontAnimId = ANIM_V_JUMPS_H_JUMPS, - BACK_PIC(Seedot, 48, 48), + .backPic = gMonBackPic_Seedot, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Seedot), - ICON(Seedot, 2), + .palette = gMonPalette_Seedot, + .shinyPalette = gMonShinyPalette_Seedot, + .iconSprite = gMonIcon_Seedot, + .iconPalIndex = 2, FOOTPRINT(Seedot) - LEARNSETS(Seedot), + .levelUpLearnset = sSeedotLevelUpLearnset, + .teachableLearnset = sSeedotTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_NUZLEAF}), }, @@ -1424,19 +1663,26 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Nuzleaf, 40, 56), - FRONT_PIC_FEMALE(Nuzleaf, 40, 56), + .frontPic = gMonFrontPic_Nuzleaf, + .frontPicFemale = gMonFrontPic_NuzleafF, + .frontPicSize = MON_COORDS_SIZE(40, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(40, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Nuzleaf, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Nuzleaf, 56, 48), - BACK_PIC_FEMALE(Nuzleaf, 56, 48), + .backPic = gMonBackPic_Nuzleaf, + .backPicFemale = gMonBackPic_NuzleafF, + .backPicSize = MON_COORDS_SIZE(56, 48), + .backPicSizeFemale = MON_COORDS_SIZE(56, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Nuzleaf), - ICON(Nuzleaf, 1), + .palette = gMonPalette_Nuzleaf, + .shinyPalette = gMonShinyPalette_Nuzleaf, + .iconSprite = gMonIcon_Nuzleaf, + .iconPalIndex = 1, FOOTPRINT(Nuzleaf) - LEARNSETS(Nuzleaf), + .levelUpLearnset = sNuzleafLevelUpLearnset, + .teachableLearnset = sNuzleafTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}), }, @@ -1464,11 +1710,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_GRASS), - #if P_UPDATED_ABILITIES >= GEN_9 - .abilities = { ABILITY_CHLOROPHYLL, ABILITY_WIND_RIDER, ABILITY_PICKPOCKET }, - #else - .abilities = { ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD, ABILITY_PICKPOCKET }, - #endif + #if P_UPDATED_ABILITIES >= GEN_9 + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_WIND_RIDER, ABILITY_PICKPOCKET }, + #else + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD, ABILITY_PICKPOCKET }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Shiftry"), .cryId = CRY_SHIFTRY, @@ -1485,19 +1731,26 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Shiftry, 64, 56), - FRONT_PIC_FEMALE(Shiftry, 64, 56), + .frontPic = gMonFrontPic_Shiftry, + .frontPicFemale = gMonFrontPic_ShiftryF, + .frontPicSize = MON_COORDS_SIZE(64, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Shiftry, .frontAnimId = ANIM_H_VIBRATE, - BACK_PIC(Shiftry, 64, 56), - BACK_PIC_FEMALE(Shiftry, 64, 56), + .backPic = gMonBackPic_Shiftry, + .backPicFemale = gMonBackPic_ShiftryF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Shiftry), - ICON(Shiftry, 5), + .palette = gMonPalette_Shiftry, + .shinyPalette = gMonShinyPalette_Shiftry, + .iconSprite = gMonIcon_Shiftry, + .iconPalIndex = 5, FOOTPRINT(Shiftry) - LEARNSETS(Shiftry), + .levelUpLearnset = sShiftryLevelUpLearnset, + .teachableLearnset = sShiftryTeachableLearnset, }, #endif //P_FAMILY_SEEDOT @@ -1536,17 +1789,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 21, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Taillow, 48, 48), + .frontPic = gMonFrontPic_Taillow, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Taillow, .frontAnimId = ANIM_V_JUMPS_BIG, - BACK_PIC(Taillow, 56, 40), + .backPic = gMonBackPic_Taillow, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 15, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Taillow), - ICON(Taillow, 2), + .palette = gMonPalette_Taillow, + .shinyPalette = gMonShinyPalette_Taillow, + .iconSprite = gMonIcon_Taillow, + .iconPalIndex = 2, FOOTPRINT(Taillow) - LEARNSETS(Taillow), + .levelUpLearnset = sTaillowLevelUpLearnset, + .teachableLearnset = sTaillowTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_SWELLOW}), }, @@ -1590,17 +1848,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Swellow, 64, 56), + .frontPic = gMonFrontPic_Swellow, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Swellow, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, - BACK_PIC(Swellow, 56, 56), + .backPic = gMonBackPic_Swellow, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Swellow), - ICON(Swellow, 2), + .palette = gMonPalette_Swellow, + .shinyPalette = gMonShinyPalette_Swellow, + .iconSprite = gMonIcon_Swellow, + .iconPalIndex = 2, FOOTPRINT(Swellow) - LEARNSETS(Swellow), + .levelUpLearnset = sSwellowLevelUpLearnset, + .teachableLearnset = sSwellowTeachableLearnset, }, #endif //P_FAMILY_TAILLOW @@ -1640,18 +1903,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Wingull, 64, 48), + .frontPic = gMonFrontPic_Wingull, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Wingull, .frontAnimId = ANIM_H_PIVOT, .enemyMonElevation = 15, - BACK_PIC(Wingull, 64, 40), + .backPic = gMonBackPic_Wingull, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Wingull), - ICON(Wingull, 0), + .palette = gMonPalette_Wingull, + .shinyPalette = gMonShinyPalette_Wingull, + .iconSprite = gMonIcon_Wingull, + .iconPalIndex = 0, FOOTPRINT(Wingull) - LEARNSETS(Wingull), + .levelUpLearnset = sWingullLevelUpLearnset, + .teachableLearnset = sWingullTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_PELIPPER}), }, @@ -1696,18 +1964,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pelipper, 64, 64), + .frontPic = gMonFrontPic_Pelipper, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Pelipper, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 8, - BACK_PIC(Pelipper, 64, 56), + .backPic = gMonBackPic_Pelipper, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Pelipper), - ICON(Pelipper, 2), + .palette = gMonPalette_Pelipper, + .shinyPalette = gMonShinyPalette_Pelipper, + .iconSprite = gMonIcon_Pelipper, + .iconPalIndex = 2, FOOTPRINT(Pelipper) - LEARNSETS(Pelipper), + .levelUpLearnset = sPelipperLevelUpLearnset, + .teachableLearnset = sPelipperTeachableLearnset, }, #endif //P_FAMILY_WINGULL @@ -1754,17 +2027,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Ralts, 24, 40), + .frontPic = gMonFrontPic_Ralts, + .frontPicSize = MON_COORDS_SIZE(24, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Ralts, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Ralts, 32, 40), + .backPic = gMonBackPic_Ralts, + .backPicSize = MON_COORDS_SIZE(32, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Ralts), - ICON(Ralts, 1), + .palette = gMonPalette_Ralts, + .shinyPalette = gMonShinyPalette_Ralts, + .iconSprite = gMonIcon_Ralts, + .iconPalIndex = 1, FOOTPRINT(Ralts) - LEARNSETS(Ralts), + .levelUpLearnset = sRaltsLevelUpLearnset, + .teachableLearnset = sRaltsTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_KIRLIA}), }, @@ -1802,54 +2080,36 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Kirlia, 32, 56), + .frontPic = gMonFrontPic_Kirlia, + .frontPicSize = MON_COORDS_SIZE(32, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Kirlia, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Kirlia, 48, 56), + .backPic = gMonBackPic_Kirlia, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Kirlia), - ICON(Kirlia, 1), + .palette = gMonPalette_Kirlia, + .shinyPalette = gMonShinyPalette_Kirlia, + .iconSprite = gMonIcon_Kirlia, + .iconPalIndex = 1, FOOTPRINT(Kirlia) - LEARNSETS(Kirlia), + .levelUpLearnset = sKirliaLevelUpLearnset, + .teachableLearnset = sKirliaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GARDEVOIR}, {EVO_ITEM_MALE, ITEM_DAWN_STONE, SPECIES_GALLADE}), }, -#define GARDEVOIR_MISC_INFO \ - .catchRate = 45, \ - .evYield_SpAttack = 3, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = 35, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = RALTS_FAMILY_EGG_GROUPS, \ - .types = MON_TYPES(TYPE_PSYCHIC, RALTS_FAMILY_TYPE2),\ - .bodyColor = BODY_COLOR_WHITE, \ - .speciesName = _("Gardevoir"), \ - .natDexNum = NATIONAL_DEX_GARDEVOIR, \ - .categoryName = _("Embrace"), \ - .height = 16, \ - .weight = 484, \ - .pokemonScale = 256, \ - .pokemonOffset = 0, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Gardevoir) \ - LEARNSETS(Gardevoir), \ - .formSpeciesIdTable = sGardevoirFormSpeciesIdTable, \ - .formChangeTable = sGardevoirFormChangeTable - [SPECIES_GARDEVOIR] = { - GARDEVOIR_MISC_INFO, .baseHP = 68, .baseAttack = 65, .baseDefense = 65, .baseSpeed = 80, .baseSpAttack = 125, .baseSpDefense = 115, + .types = MON_TYPES(TYPE_PSYCHIC, RALTS_FAMILY_TYPE2), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 259, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -1857,88 +2117,117 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 208, #endif + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = RALTS_FAMILY_EGG_GROUPS, .abilities = { ABILITY_SYNCHRONIZE, ABILITY_TRACE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Gardevoir"), .cryId = CRY_GARDEVOIR, + .natDexNum = NATIONAL_DEX_GARDEVOIR, + .categoryName = _("Embrace"), + .height = 16, + .weight = 484, .description = COMPOUND_STRING( "It apparently does not feel the pull of\n" "gravity because it supports itself with\n" "psychic power. It will give its life to\n" "protect its Trainer."), - FRONT_PIC(Gardevoir, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Gardevoir, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Gardevoir, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Gardevoir, 48, 56), + .backPic = gMonBackPic_Gardevoir, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Gardevoir), - ICON(Gardevoir, 1), + .palette = gMonPalette_Gardevoir, + .shinyPalette = gMonShinyPalette_Gardevoir, + .iconSprite = gMonIcon_Gardevoir, + .iconPalIndex = 1, + FOOTPRINT(Gardevoir) + .levelUpLearnset = sGardevoirLevelUpLearnset, + .teachableLearnset = sGardevoirTeachableLearnset, + .formSpeciesIdTable = sGardevoirFormSpeciesIdTable, + .formChangeTable = sGardevoirFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_GARDEVOIR_MEGA] = { - GARDEVOIR_MISC_INFO, .baseHP = 68, .baseAttack = 85, .baseDefense = 65, .baseSpeed = 100, .baseSpAttack = 165, .baseSpDefense = 135, + .types = MON_TYPES(TYPE_PSYCHIC, RALTS_FAMILY_TYPE2), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 309 : 278, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = RALTS_FAMILY_EGG_GROUPS, .abilities = { ABILITY_PIXILATE, ABILITY_PIXILATE, ABILITY_PIXILATE }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Gardevoir"), .cryId = CRY_GARDEVOIR_MEGA, + .natDexNum = NATIONAL_DEX_GARDEVOIR, + .categoryName = _("Embrace"), + .height = 16, + .weight = 484, .description = COMPOUND_STRING( "By opening its heart, Mega Gardevoir\n" "becomes able to use tremendous psychic\n" "power. The red plate in its chest is said to\n" "be a physical manifestation of its heart."), - FRONT_PIC(GardevoirMega, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_GardevoirMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_GardevoirMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(GardevoirMega, 48, 56), + .backPic = gMonBackPic_GardevoirMega, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, - PALETTES(GardevoirMega), - ICON(GardevoirMega, 1), + .palette = gMonPalette_GardevoirMega, + .shinyPalette = gMonShinyPalette_GardevoirMega, + .iconSprite = gMonIcon_GardevoirMega, + .iconPalIndex = 1, + FOOTPRINT(Gardevoir) .isMegaEvolution = TRUE, + .levelUpLearnset = sGardevoirLevelUpLearnset, + .teachableLearnset = sGardevoirTeachableLearnset, + .formSpeciesIdTable = sGardevoirFormSpeciesIdTable, + .formChangeTable = sGardevoirFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #if P_GEN_4_CROSS_EVOS -#define GALLADE_MISC_INFO \ - .types = MON_TYPES(TYPE_PSYCHIC, TYPE_FIGHTING), \ - .catchRate = 45, \ - .evYield_Attack = 3, \ - .genderRatio = MON_MALE, \ - .eggCycles = 20, \ - .friendship = 35, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = RALTS_FAMILY_EGG_GROUPS, \ - .bodyColor = BODY_COLOR_WHITE, \ - .speciesName = _("Gallade"), \ - .natDexNum = NATIONAL_DEX_GALLADE, \ - .categoryName = _("Blade"), \ - .height = 16, \ - .pokemonScale = 259, \ - .pokemonOffset = 1, \ - .trainerScale = 296, \ - .trainerOffset = 1, \ - FOOTPRINT(Gallade) \ - LEARNSETS(Gallade), \ - .formSpeciesIdTable = sGalladeFormSpeciesIdTable, \ - .formChangeTable = sGalladeFormChangeTable - [SPECIES_GALLADE] = { - GALLADE_MISC_INFO, .baseHP = 68, .baseAttack = 125, .baseDefense = 65, .baseSpeed = 80, .baseSpAttack = 65, .baseSpDefense = 115, + .types = MON_TYPES(TYPE_PSYCHIC, TYPE_FIGHTING), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 259, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -1946,58 +2235,107 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 208, #endif - #if P_UPDATED_ABILITIES >= GEN_9 - .abilities = { ABILITY_STEADFAST, ABILITY_SHARPNESS, ABILITY_JUSTIFIED }, - #else - .abilities = { ABILITY_STEADFAST, ABILITY_NONE, ABILITY_JUSTIFIED }, - #endif + .evYield_Attack = 3, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = RALTS_FAMILY_EGG_GROUPS, + #if P_UPDATED_ABILITIES >= GEN_9 + .abilities = { ABILITY_STEADFAST, ABILITY_SHARPNESS, ABILITY_JUSTIFIED }, + #else + .abilities = { ABILITY_STEADFAST, ABILITY_NONE, ABILITY_JUSTIFIED }, + #endif + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Gallade"), .cryId = CRY_GALLADE, + .natDexNum = NATIONAL_DEX_GALLADE, + .categoryName = _("Blade"), + .height = 16, .weight = 520, .description = COMPOUND_STRING( "A master of courtesy and swordsmanship,\n" "it fights using extending swords on its\n" "elbows when trying to protect someone.\n" "It can sense what its foe is thinking."), - FRONT_PIC(Gallade, 56, 64), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + .frontPic = gMonFrontPic_Gallade, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Gallade, .frontAnimId = ANIM_H_VIBRATE, - BACK_PIC(Gallade, 64, 64), + .backPic = gMonBackPic_Gallade, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Gallade), - ICON(Gallade, 1), + .palette = gMonPalette_Gallade, + .shinyPalette = gMonShinyPalette_Gallade, + .iconSprite = gMonIcon_Gallade, + .iconPalIndex = 1, + FOOTPRINT(Gallade) + .levelUpLearnset = sGalladeLevelUpLearnset, + .teachableLearnset = sGalladeTeachableLearnset, + .formSpeciesIdTable = sGalladeFormSpeciesIdTable, + .formChangeTable = sGalladeFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_GALLADE_MEGA] = { - GALLADE_MISC_INFO, .baseHP = 68, .baseAttack = 165, .baseDefense = 95, .baseSpeed = 110, .baseSpAttack = 65, .baseSpDefense = 115, + .types = MON_TYPES(TYPE_PSYCHIC, TYPE_FIGHTING), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 309 : 278, + .evYield_Attack = 3, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = RALTS_FAMILY_EGG_GROUPS, .abilities = { ABILITY_INNER_FOCUS, ABILITY_INNER_FOCUS, ABILITY_INNER_FOCUS }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Gallade"), .cryId = CRY_GALLADE_MEGA, + .natDexNum = NATIONAL_DEX_GALLADE, + .categoryName = _("Blade"), + .height = 16, .weight = 564, .description = COMPOUND_STRING( "Mega Gallade has a knightly appearance.\n" "It can use its psychic power to reshape\n" "both arms into blades simultaneously and\n" "fight using a dual-wielding style."), - FRONT_PIC(GalladeMega, 64, 64), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + .frontPic = gMonFrontPic_GalladeMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_GalladeMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(GalladeMega, 64, 64), + .backPic = gMonBackPic_GalladeMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(GalladeMega), - ICON(GalladeMega, 1), + .palette = gMonPalette_GalladeMega, + .shinyPalette = gMonShinyPalette_GalladeMega, + .iconSprite = gMonIcon_GalladeMega, + .iconPalIndex = 1, + FOOTPRINT(Gallade) .isMegaEvolution = TRUE, + .levelUpLearnset = sGalladeLevelUpLearnset, + .teachableLearnset = sGalladeTeachableLearnset, + .formSpeciesIdTable = sGalladeFormSpeciesIdTable, + .formChangeTable = sGalladeFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_GEN_4_CROSS_EVOS @@ -2039,17 +2377,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Surskit, 48, 48), + .frontPic = gMonFrontPic_Surskit, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Surskit, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Surskit, 56, 40), + .backPic = gMonBackPic_Surskit, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_H_SPRING, - PALETTES(Surskit), - ICON(Surskit, 0), + .palette = gMonPalette_Surskit, + .shinyPalette = gMonShinyPalette_Surskit, + .iconSprite = gMonIcon_Surskit, + .iconPalIndex = 0, FOOTPRINT(Surskit) - LEARNSETS(Surskit), + .levelUpLearnset = sSurskitLevelUpLearnset, + .teachableLearnset = sSurskitTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_MASQUERAIN}), }, @@ -2058,14 +2401,9 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .baseHP = 70, .baseAttack = 60, .baseDefense = 62, + .baseSpeed = P_UPDATED_STATS >= GEN_7 ? 80 : 60, + .baseSpAttack = P_UPDATED_STATS >= GEN_7 ? 100 : 80, .baseSpDefense = 82, - #if P_UPDATED_STATS >= GEN_7 - .baseSpeed = 80, - .baseSpAttack = 100, - #else - .baseSpeed = 60, - .baseSpAttack = 80, - #endif .types = MON_TYPES(TYPE_BUG, TYPE_FLYING), .catchRate = 75, #if P_UPDATED_EXP_YIELDS >= GEN_7 @@ -2100,18 +2438,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Masquerain, 64, 64), + .frontPic = gMonFrontPic_Masquerain, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Masquerain, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 10, - BACK_PIC(Masquerain, 64, 64), + .backPic = gMonBackPic_Masquerain, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Masquerain), - ICON(Masquerain, 0), + .palette = gMonPalette_Masquerain, + .shinyPalette = gMonShinyPalette_Masquerain, + .iconSprite = gMonIcon_Masquerain, + .iconPalIndex = 0, FOOTPRINT(Masquerain) - LEARNSETS(Masquerain), + .levelUpLearnset = sMasquerainLevelUpLearnset, + .teachableLearnset = sMasquerainTeachableLearnset, }, #endif //P_FAMILY_SURSKIT @@ -2152,17 +2495,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 22, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Shroomish, 40, 40), + .frontPic = gMonFrontPic_Shroomish, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Shroomish, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Shroomish, 56, 48), + .backPic = gMonBackPic_Shroomish, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Shroomish), - ICON(Shroomish, 1), + .palette = gMonPalette_Shroomish, + .shinyPalette = gMonShinyPalette_Shroomish, + .iconSprite = gMonIcon_Shroomish, + .iconPalIndex = 1, FOOTPRINT(Shroomish) - LEARNSETS(Shroomish), + .levelUpLearnset = sShroomishLevelUpLearnset, + .teachableLearnset = sShroomishTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 23, SPECIES_BRELOOM}), }, @@ -2202,17 +2550,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 6, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Breloom, 48, 64), + .frontPic = gMonFrontPic_Breloom, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Breloom, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Breloom, 64, 64), + .backPic = gMonBackPic_Breloom, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Breloom), - ICON(Breloom, 1), + .palette = gMonPalette_Breloom, + .shinyPalette = gMonShinyPalette_Breloom, + .iconSprite = gMonIcon_Breloom, + .iconPalIndex = 1, FOOTPRINT(Breloom) - LEARNSETS(Breloom), + .levelUpLearnset = sBreloomLevelUpLearnset, + .teachableLearnset = sBreloomTeachableLearnset, }, #endif //P_FAMILY_SHROOMISH @@ -2251,17 +2604,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Slakoth, 56, 40), + .frontPic = gMonFrontPic_Slakoth, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Slakoth, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Slakoth, 64, 40), + .backPic = gMonBackPic_Slakoth, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Slakoth), - ICON(Slakoth, 2), + .palette = gMonPalette_Slakoth, + .shinyPalette = gMonShinyPalette_Slakoth, + .iconSprite = gMonIcon_Slakoth, + .iconPalIndex = 2, FOOTPRINT(Slakoth) - LEARNSETS(Slakoth), + .levelUpLearnset = sSlakothLevelUpLearnset, + .teachableLearnset = sSlakothTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_VIGOROTH}), }, @@ -2299,17 +2657,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Vigoroth, 64, 56), + .frontPic = gMonFrontPic_Vigoroth, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Vigoroth, .frontAnimId = ANIM_H_JUMPS, - BACK_PIC(Vigoroth, 56, 64), + .backPic = gMonBackPic_Vigoroth, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Vigoroth), - ICON(Vigoroth, 2), + .palette = gMonPalette_Vigoroth, + .shinyPalette = gMonShinyPalette_Vigoroth, + .iconSprite = gMonIcon_Vigoroth, + .iconPalIndex = 2, FOOTPRINT(Vigoroth) - LEARNSETS(Vigoroth), + .levelUpLearnset = sVigorothLevelUpLearnset, + .teachableLearnset = sVigorothTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SLAKING}), }, @@ -2353,17 +2716,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 2, .trainerScale = 300, .trainerOffset = 1, - FRONT_PIC(Slaking, 64, 56), + .frontPic = gMonFrontPic_Slaking, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Slaking, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Slaking, 64, 56), + .backPic = gMonBackPic_Slaking, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Slaking), - ICON(Slaking, 2), + .palette = gMonPalette_Slaking, + .shinyPalette = gMonShinyPalette_Slaking, + .iconSprite = gMonIcon_Slaking, + .iconPalIndex = 2, FOOTPRINT(Slaking) - LEARNSETS(Slaking), + .levelUpLearnset = sSlakingLevelUpLearnset, + .teachableLearnset = sSlakingTeachableLearnset, }, #endif //P_FAMILY_SLAKOTH @@ -2403,17 +2771,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 21, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Nincada, 56, 32), + .frontPic = gMonFrontPic_Nincada, + .frontPicSize = MON_COORDS_SIZE(56, 32), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Nincada, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Nincada, 64, 32), + .backPic = gMonBackPic_Nincada, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 18, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Nincada), - ICON(Nincada, 1), + .palette = gMonPalette_Nincada, + .shinyPalette = gMonShinyPalette_Nincada, + .iconSprite = gMonIcon_Nincada, + .iconPalIndex = 1, FOOTPRINT(Nincada) - LEARNSETS(Nincada), + .levelUpLearnset = sNincadaLevelUpLearnset, + .teachableLearnset = sNincadaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}), }, @@ -2452,18 +2825,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -9, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Ninjask, 64, 48), + .frontPic = gMonFrontPic_Ninjask, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Ninjask, .frontAnimId = ANIM_H_SLIDE_SLOW, .enemyMonElevation = 10, - BACK_PIC(Ninjask, 64, 40), + .backPic = gMonBackPic_Ninjask, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Ninjask), - ICON(Ninjask, 1), + .palette = gMonPalette_Ninjask, + .shinyPalette = gMonShinyPalette_Ninjask, + .iconSprite = gMonIcon_Ninjask, + .iconPalIndex = 1, FOOTPRINT(Ninjask) - LEARNSETS(Ninjask), + .levelUpLearnset = sNinjaskLevelUpLearnset, + .teachableLearnset = sNinjaskTeachableLearnset, }, [SPECIES_SHEDINJA] = @@ -2500,18 +2878,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Shedinja, 48, 48), + .frontPic = gMonFrontPic_Shedinja, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Shedinja, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 8, - BACK_PIC(Shedinja, 64, 56), + .backPic = gMonBackPic_Shedinja, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Shedinja), - ICON(Shedinja, 1), + .palette = gMonPalette_Shedinja, + .shinyPalette = gMonShinyPalette_Shedinja, + .iconSprite = gMonIcon_Shedinja, + .iconPalIndex = 1, FOOTPRINT(Shedinja) - LEARNSETS(Shedinja), + .levelUpLearnset = sShedinjaLevelUpLearnset, + .teachableLearnset = sShedinjaTeachableLearnset, }, #endif //P_FAMILY_NINCADA @@ -2550,17 +2933,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Whismur, 48, 40), + .frontPic = gMonFrontPic_Whismur, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Whismur, .frontAnimId = ANIM_H_SLIDE, - BACK_PIC(Whismur, 56, 40), + .backPic = gMonBackPic_Whismur, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Whismur), - ICON(Whismur, 1), + .palette = gMonPalette_Whismur, + .shinyPalette = gMonShinyPalette_Whismur, + .iconSprite = gMonIcon_Whismur, + .iconPalIndex = 1, FOOTPRINT(Whismur) - LEARNSETS(Whismur), + .levelUpLearnset = sWhismurLevelUpLearnset, + .teachableLearnset = sWhismurTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LOUDRED}), }, @@ -2598,17 +2986,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Loudred, 56, 64), + .frontPic = gMonFrontPic_Loudred, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Loudred, .frontAnimId = ANIM_SHRINK_GROW, - BACK_PIC(Loudred, 64, 56), + .backPic = gMonBackPic_Loudred, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Loudred), - ICON(Loudred, 2), + .palette = gMonPalette_Loudred, + .shinyPalette = gMonShinyPalette_Loudred, + .iconSprite = gMonIcon_Loudred, + .iconPalIndex = 2, FOOTPRINT(Loudred) - LEARNSETS(Loudred), + .levelUpLearnset = sLoudredLevelUpLearnset, + .teachableLearnset = sLoudredTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_EXPLOUD}), }, @@ -2654,17 +3047,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Exploud, 64, 64), + .frontPic = gMonFrontPic_Exploud, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Exploud, .frontAnimId = ANIM_V_SHAKE_TWICE, - BACK_PIC(Exploud, 64, 64), + .backPic = gMonBackPic_Exploud, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(Exploud), - ICON(Exploud, 2), + .palette = gMonPalette_Exploud, + .shinyPalette = gMonShinyPalette_Exploud, + .iconSprite = gMonIcon_Exploud, + .iconPalIndex = 2, FOOTPRINT(Exploud) - LEARNSETS(Exploud), + .levelUpLearnset = sExploudLevelUpLearnset, + .teachableLearnset = sExploudTeachableLearnset, }, #endif //P_FAMILY_WHISMUR @@ -2704,17 +3102,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Makuhita, 48, 48), + .frontPic = gMonFrontPic_Makuhita, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Makuhita, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Makuhita, 56, 56), + .backPic = gMonBackPic_Makuhita, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Makuhita), - ICON(Makuhita, 1), + .palette = gMonPalette_Makuhita, + .shinyPalette = gMonShinyPalette_Makuhita, + .iconSprite = gMonIcon_Makuhita, + .iconPalIndex = 1, FOOTPRINT(Makuhita) - LEARNSETS(Makuhita), + .levelUpLearnset = sMakuhitaLevelUpLearnset, + .teachableLearnset = sMakuhitaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_HARIYAMA}), }, @@ -2753,17 +3156,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 343, .trainerOffset = 7, - FRONT_PIC(Hariyama, 64, 64), + .frontPic = gMonFrontPic_Hariyama, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Hariyama, .frontAnimId = ANIM_ROTATE_UP_TO_SIDES, - BACK_PIC(Hariyama, 64, 56), + .backPic = gMonBackPic_Hariyama, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Hariyama), - ICON(Hariyama, 2), + .palette = gMonPalette_Hariyama, + .shinyPalette = gMonShinyPalette_Hariyama, + .iconSprite = gMonIcon_Hariyama, + .iconPalIndex = 2, FOOTPRINT(Hariyama) - LEARNSETS(Hariyama), + .levelUpLearnset = sHariyamaLevelUpLearnset, + .teachableLearnset = sHariyamaTeachableLearnset, }, #endif //P_FAMILY_MAKUHITA @@ -2803,17 +3211,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 9, .trainerScale = 289, .trainerOffset = 3, - FRONT_PIC(Nosepass, 40, 48), + .frontPic = gMonFrontPic_Nosepass, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Nosepass, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(Nosepass, 56, 48), + .backPic = gMonBackPic_Nosepass, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Nosepass), - ICON(Nosepass, 0), + .palette = gMonPalette_Nosepass, + .shinyPalette = gMonShinyPalette_Nosepass, + .iconSprite = gMonIcon_Nosepass, + .iconPalIndex = 0, FOOTPRINT(Nosepass) - LEARNSETS(Nosepass), + .levelUpLearnset = sNosepassLevelUpLearnset, + .teachableLearnset = sNosepassTeachableLearnset, .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_PROBOPASS}, {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_PROBOPASS}), }, @@ -2855,18 +3268,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 2, .trainerScale = 262, .trainerOffset = 0, - FRONT_PIC(Probopass, 56, 56), + .frontPic = gMonFrontPic_Probopass, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Probopass, .frontAnimId = ANIM_V_SLIDE, .enemyMonElevation = 6, - BACK_PIC(Probopass, 64, 56), + .backPic = gMonBackPic_Probopass, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Probopass), - ICON(Probopass, 0), + .palette = gMonPalette_Probopass, + .shinyPalette = gMonShinyPalette_Probopass, + .iconSprite = gMonIcon_Probopass, + .iconPalIndex = 0, FOOTPRINT(Probopass) - LEARNSETS(Probopass), + .levelUpLearnset = sProbopassLevelUpLearnset, + .teachableLearnset = sProbopassTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_NOSEPASS @@ -2906,17 +3324,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Skitty, 56, 40), + .frontPic = gMonFrontPic_Skitty, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Skitty, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Skitty, 64, 56), + .backPic = gMonBackPic_Skitty, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Skitty), - ICON(Skitty, 0), + .palette = gMonPalette_Skitty, + .shinyPalette = gMonShinyPalette_Skitty, + .iconSprite = gMonIcon_Skitty, + .iconPalIndex = 0, FOOTPRINT(Skitty) - LEARNSETS(Skitty), + .levelUpLearnset = sSkittyLevelUpLearnset, + .teachableLearnset = sSkittyTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}), }, @@ -2961,54 +3384,52 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Delcatty, 56, 56), + .frontPic = gMonFrontPic_Delcatty, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Delcatty, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Delcatty, 64, 64), + .backPic = gMonBackPic_Delcatty, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Delcatty), - ICON(Delcatty, 2), + .palette = gMonPalette_Delcatty, + .shinyPalette = gMonShinyPalette_Delcatty, + .iconSprite = gMonIcon_Delcatty, + .iconPalIndex = 2, FOOTPRINT(Delcatty) - LEARNSETS(Delcatty), + .levelUpLearnset = sDelcattyLevelUpLearnset, + .teachableLearnset = sDelcattyTeachableLearnset, }, #endif //P_FAMILY_SKITTY #if P_FAMILY_SABLEYE -#define SABLEYE_MISC_INFO \ - .types = MON_TYPES(TYPE_DARK, TYPE_GHOST), \ - .catchRate = 45, \ - .evYield_Attack = 1, \ - .evYield_Defense = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = 35, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), \ - .bodyColor = BODY_COLOR_PURPLE, \ - .speciesName = _("Sableye"), \ - .natDexNum = NATIONAL_DEX_SABLEYE, \ - .categoryName = _("Darkness"), \ - .height = 5, \ - FOOTPRINT(Sableye) \ - LEARNSETS(Sableye), \ - .formSpeciesIdTable = sSableyeFormSpeciesIdTable, \ - .formChangeTable = sSableyeFormChangeTable - [SPECIES_SABLEYE] = { - SABLEYE_MISC_INFO, .baseHP = 50, .baseAttack = 75, .baseDefense = 75, .baseSpeed = 50, .baseSpAttack = 65, .baseSpDefense = 65, + .types = MON_TYPES(TYPE_DARK, TYPE_GHOST), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 133 : 98, + .evYield_Attack = 1, + .evYield_Defense = 1, .itemRare = ITEM_WIDE_LENS, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), .abilities = { ABILITY_KEEN_EYE, ABILITY_STALL, ABILITY_PRANKSTER }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Sableye"), .cryId = CRY_SABLEYE, + .natDexNum = NATIONAL_DEX_SABLEYE, + .categoryName = _("Darkness"), + .height = 5, .weight = 110, .description = COMPOUND_STRING( "It digs branching holes in caves using its\n" @@ -3019,30 +3440,52 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Sableye, 48, 48), + .frontPic = gMonFrontPic_Sableye, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Sableye, .frontAnimId = ANIM_GLOW_BLACK, - BACK_PIC(Sableye, 48, 48), + .backPic = gMonBackPic_Sableye, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 13, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Sableye), - ICON(Sableye, 2), + .palette = gMonPalette_Sableye, + .shinyPalette = gMonShinyPalette_Sableye, + .iconSprite = gMonIcon_Sableye, + .iconPalIndex = 2, + FOOTPRINT(Sableye) + .levelUpLearnset = sSableyeLevelUpLearnset, + .teachableLearnset = sSableyeTeachableLearnset, + .formSpeciesIdTable = sSableyeFormSpeciesIdTable, + .formChangeTable = sSableyeFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_SABLEYE_MEGA] = { - SABLEYE_MISC_INFO, .baseHP = 50, .baseAttack = 85, .baseDefense = 125, .baseSpeed = 20, .baseSpAttack = 85, .baseSpDefense = 115, + .types = MON_TYPES(TYPE_DARK, TYPE_GHOST), + .catchRate = 45, .expYield = 168, + .evYield_Attack = 1, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), .abilities = { ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Sableye"), .cryId = CRY_SABLEYE_MEGA, + .natDexNum = NATIONAL_DEX_SABLEYE, + .categoryName = _("Darkness"), + .height = 5, .weight = 1610, .description = COMPOUND_STRING( "Bathed in the energy of Mega Evolution,\n" @@ -3052,16 +3495,25 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(SableyeMega, 64, 64), + .frontPic = gMonFrontPic_SableyeMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_SableyeMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SableyeMega, 64, 64), + .backPic = gMonBackPic_SableyeMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 13, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(SableyeMega), - ICON(SableyeMega, 2), + .palette = gMonPalette_SableyeMega, + .shinyPalette = gMonShinyPalette_SableyeMega, + .iconSprite = gMonIcon_SableyeMega, + .iconPalIndex = 2, + FOOTPRINT(Sableye) .isMegaEvolution = TRUE, + .levelUpLearnset = sSableyeLevelUpLearnset, + .teachableLearnset = sSableyeTeachableLearnset, + .formSpeciesIdTable = sSableyeFormSpeciesIdTable, + .formChangeTable = sSableyeFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_SABLEYE @@ -3073,38 +3525,31 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #define MAWILE_TYPES { TYPE_STEEL, TYPE_STEEL } #endif -#define MAWILE_MISC_INFO \ - .types = MAWILE_TYPES, \ - .catchRate = 45, \ - .evYield_Attack = 1, \ - .evYield_Defense = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY),\ - .bodyColor = BODY_COLOR_BLACK, \ - .speciesName = _("Mawile"), \ - .natDexNum = NATIONAL_DEX_MAWILE, \ - .categoryName = _("Deceiver"), \ - FOOTPRINT(Mawile) \ - LEARNSETS(Mawile), \ - .formSpeciesIdTable = sMawileFormSpeciesIdTable, \ - .formChangeTable = sMawileFormChangeTable - [SPECIES_MAWILE] = { - MAWILE_MISC_INFO, .baseHP = 50, .baseAttack = 85, .baseDefense = 85, .baseSpeed = 50, .baseSpAttack = 55, .baseSpDefense = 55, + .types = MAWILE_TYPES, + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 133 : 98, + .evYield_Attack = 1, + .evYield_Defense = 1, .itemRare = ITEM_IRON_BALL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), .abilities = { ABILITY_HYPER_CUTTER, ABILITY_INTIMIDATE, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Mawile"), .cryId = CRY_MAWILE, + .natDexNum = NATIONAL_DEX_MAWILE, + .categoryName = _("Deceiver"), .height = 6, .weight = 115, .description = COMPOUND_STRING( @@ -3116,30 +3561,51 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Mawile, 64, 48), + .frontPic = gMonFrontPic_Mawile, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Mawile, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Mawile, 64, 56), + .backPic = gMonBackPic_Mawile, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Mawile), - ICON(Mawile, 2), + .palette = gMonPalette_Mawile, + .shinyPalette = gMonShinyPalette_Mawile, + .iconSprite = gMonIcon_Mawile, + .iconPalIndex = 2, + FOOTPRINT(Mawile) + .levelUpLearnset = sMawileLevelUpLearnset, + .teachableLearnset = sMawileTeachableLearnset, + .formSpeciesIdTable = sMawileFormSpeciesIdTable, + .formChangeTable = sMawileFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_MAWILE_MEGA] = { - MAWILE_MISC_INFO, .baseHP = 50, .baseAttack = 105, .baseDefense = 125, .baseSpeed = 50, .baseSpAttack = 55, .baseSpDefense = 95, + .types = MAWILE_TYPES, + .catchRate = 45, .expYield = 168, + .evYield_Attack = 1, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), .abilities = { ABILITY_HUGE_POWER, ABILITY_HUGE_POWER, ABILITY_HUGE_POWER }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Mawile"), .cryId = CRY_MAWILE_MEGA, + .natDexNum = NATIONAL_DEX_MAWILE, + .categoryName = _("Deceiver"), .height = 10, .weight = 235, .description = COMPOUND_STRING( @@ -3151,16 +3617,25 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(MawileMega, 64, 64), + .frontPic = gMonFrontPic_MawileMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_MawileMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(MawileMega, 64, 64), + .backPic = gMonBackPic_MawileMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(MawileMega), - ICON(MawileMega, 0), + .palette = gMonPalette_MawileMega, + .shinyPalette = gMonShinyPalette_MawileMega, + .iconSprite = gMonIcon_MawileMega, + .iconPalIndex = 0, + FOOTPRINT(Mawile) .isMegaEvolution = TRUE, + .levelUpLearnset = sMawileLevelUpLearnset, + .teachableLearnset = sMawileTeachableLearnset, + .formSpeciesIdTable = sMawileFormSpeciesIdTable, + .formChangeTable = sMawileFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_MAWILE @@ -3201,17 +3676,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 23, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Aron, 32, 40), + .frontPic = gMonFrontPic_Aron, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Aron, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Aron, 48, 40), + .backPic = gMonBackPic_Aron, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Aron), - ICON(Aron, 2), + .palette = gMonPalette_Aron, + .shinyPalette = gMonShinyPalette_Aron, + .iconSprite = gMonIcon_Aron, + .iconPalIndex = 2, FOOTPRINT(Aron) - LEARNSETS(Aron), + .levelUpLearnset = sAronLevelUpLearnset, + .teachableLearnset = sAronTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_LAIRON}), }, @@ -3250,41 +3730,27 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Lairon, 56, 48), + .frontPic = gMonFrontPic_Lairon, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Lairon, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Lairon, 64, 40), + .backPic = gMonBackPic_Lairon, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 15, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Lairon), - ICON(Lairon, 2), + .palette = gMonPalette_Lairon, + .shinyPalette = gMonShinyPalette_Lairon, + .iconSprite = gMonIcon_Lairon, + .iconPalIndex = 2, FOOTPRINT(Lairon) - LEARNSETS(Lairon), + .levelUpLearnset = sLaironLevelUpLearnset, + .teachableLearnset = sLaironTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_AGGRON}), }, -#define AGGRON_MISC_INFO \ - .catchRate = 45, \ - .evYield_Defense = 3, \ - .itemRare = ITEM_HARD_STONE, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 35, \ - .friendship = 35, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), \ - .bodyColor = BODY_COLOR_GRAY, \ - .speciesName = _("Aggron"), \ - .natDexNum = NATIONAL_DEX_AGGRON, \ - .categoryName = _("Iron Armor"), \ - FOOTPRINT(Aggron) \ - LEARNSETS(Aggron), \ - .formSpeciesIdTable = sAggronFormSpeciesIdTable, \ - .formChangeTable = sAggronFormChangeTable - [SPECIES_AGGRON] = { - AGGRON_MISC_INFO, .baseHP = 70, .baseAttack = 110, .baseDefense = 180, @@ -3292,6 +3758,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .baseSpAttack = 60, .baseSpDefense = 60, .types = MON_TYPES(TYPE_STEEL, TYPE_ROCK), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 265, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -3299,8 +3766,19 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 205, #endif + .evYield_Defense = 3, + .itemRare = ITEM_HARD_STONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), .abilities = { ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_HEAVY_METAL }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Aggron"), .cryId = CRY_AGGRON, + .natDexNum = NATIONAL_DEX_AGGRON, + .categoryName = _("Iron Armor"), .height = 21, .weight = 3600, .description = COMPOUND_STRING( @@ -3312,21 +3790,29 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -1, .trainerScale = 350, .trainerOffset = 6, - FRONT_PIC(Aggron, 64, 64), + .frontPic = gMonFrontPic_Aggron, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Aggron, .frontAnimId = ANIM_V_SHAKE_TWICE, - BACK_PIC(Aggron, 64, 56), + .backPic = gMonBackPic_Aggron, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Aggron), - ICON(Aggron, 2), + .palette = gMonPalette_Aggron, + .shinyPalette = gMonShinyPalette_Aggron, + .iconSprite = gMonIcon_Aggron, + .iconPalIndex = 2, + FOOTPRINT(Aggron) + .levelUpLearnset = sAggronLevelUpLearnset, + .teachableLearnset = sAggronTeachableLearnset, + .formSpeciesIdTable = sAggronFormSpeciesIdTable, + .formChangeTable = sAggronFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_AGGRON_MEGA] = { - AGGRON_MISC_INFO, .baseHP = 70, .baseAttack = 140, .baseDefense = 230, @@ -3334,9 +3820,21 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .baseSpAttack = 60, .baseSpDefense = 80, .types = MON_TYPES(TYPE_STEEL), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 315 : 284, + .evYield_Defense = 3, + .itemRare = ITEM_HARD_STONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), .abilities = { ABILITY_FILTER, ABILITY_FILTER, ABILITY_FILTER }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Aggron"), .cryId = CRY_AGGRON_MEGA, + .natDexNum = NATIONAL_DEX_AGGRON, + .categoryName = _("Iron Armor"), .height = 22, .weight = 3950, .description = COMPOUND_STRING( @@ -3348,16 +3846,25 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -1, .trainerScale = 350, .trainerOffset = 6, - FRONT_PIC(AggronMega, 64, 64), + .frontPic = gMonFrontPic_AggronMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_AggronMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(AggronMega, 64, 56), + .backPic = gMonBackPic_AggronMega, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(AggronMega), - ICON(AggronMega, 2), + .palette = gMonPalette_AggronMega, + .shinyPalette = gMonShinyPalette_AggronMega, + .iconSprite = gMonIcon_AggronMega, + .iconPalIndex = 2, + FOOTPRINT(Aggron) .isMegaEvolution = TRUE, + .levelUpLearnset = sAggronLevelUpLearnset, + .teachableLearnset = sAggronTeachableLearnset, + .formSpeciesIdTable = sAggronFormSpeciesIdTable, + .formChangeTable = sAggronFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_ARON @@ -3397,104 +3904,141 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Meditite, 48, 48), - FRONT_PIC_FEMALE(Meditite, 48, 48), + .frontPic = gMonFrontPic_Meditite, + .frontPicFemale = gMonFrontPic_MedititeF, + .frontPicSize = MON_COORDS_SIZE(48, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Meditite, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES, - BACK_PIC(Meditite, 48, 48), - BACK_PIC_FEMALE(Meditite, 48, 48), + .backPic = gMonBackPic_Meditite, + .backPicFemale = gMonBackPic_MedititeF, + .backPicSize = MON_COORDS_SIZE(48, 48), + .backPicSizeFemale = MON_COORDS_SIZE(48, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Meditite), - ICON(Meditite, 0), + .palette = gMonPalette_Meditite, + .shinyPalette = gMonShinyPalette_Meditite, + .iconSprite = gMonIcon_Meditite, + .iconPalIndex = 0, FOOTPRINT(Meditite) - LEARNSETS(Meditite), + .levelUpLearnset = sMedititeLevelUpLearnset, + .teachableLearnset = sMedititeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_MEDICHAM}), }, -#define MEDICHAM_MISC_INFO \ - .types = MON_TYPES(TYPE_FIGHTING, TYPE_PSYCHIC), \ - .catchRate = 90, \ - .evYield_Speed = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), \ - .bodyColor = BODY_COLOR_RED, \ - .speciesName = _("Medicham"), \ - .natDexNum = NATIONAL_DEX_MEDICHAM, \ - .categoryName = _("Meditate"), \ - .height = 13, \ - .weight = 315, \ - .pokemonScale = 298, \ - .pokemonOffset = 5, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Medicham) \ - LEARNSETS(Medicham), \ - .formSpeciesIdTable = sMedichamFormSpeciesIdTable, \ - .formChangeTable = sMedichamFormChangeTable - [SPECIES_MEDICHAM] = { - MEDICHAM_MISC_INFO, .baseHP = 60, .baseAttack = 60, .baseDefense = 75, .baseSpeed = 80, .baseSpAttack = 60, .baseSpDefense = 75, + .types = MON_TYPES(TYPE_FIGHTING, TYPE_PSYCHIC), + .catchRate = 90, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 144 : 153, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), .abilities = { ABILITY_PURE_POWER, ABILITY_NONE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Medicham"), .cryId = CRY_MEDICHAM, + .natDexNum = NATIONAL_DEX_MEDICHAM, + .categoryName = _("Meditate"), + .height = 13, + .weight = 315, .description = COMPOUND_STRING( "Through crushingly harsh yoga training, it\n" "gained the power to foretell its foe's\n" "actions. It battles with elegant, dance-\n" "like movement."), - FRONT_PIC(Medicham, 40, 64), - FRONT_PIC_FEMALE(Medicham, 40, 64), + .pokemonScale = 298, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Medicham, + .frontPicFemale = gMonFrontPic_MedichamF, + .frontPicSize = MON_COORDS_SIZE(40, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(40, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Medicham, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Medicham, 56, 64), - BACK_PIC_FEMALE(Medicham, 56, 64), + .backPic = gMonBackPic_Medicham, + .backPicFemale = gMonBackPic_MedichamF, + .backPicSize = MON_COORDS_SIZE(56, 64), + .backPicSizeFemale = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Medicham), - ICON(Medicham, 0), + .palette = gMonPalette_Medicham, + .shinyPalette = gMonShinyPalette_Medicham, + .iconSprite = gMonIcon_Medicham, + .iconPalIndex = 0, + FOOTPRINT(Medicham) + .levelUpLearnset = sMedichamLevelUpLearnset, + .teachableLearnset = sMedichamTeachableLearnset, + .formSpeciesIdTable = sMedichamFormSpeciesIdTable, + .formChangeTable = sMedichamFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_MEDICHAM_MEGA] = { - MEDICHAM_MISC_INFO, .baseHP = 60, .baseAttack = 100, .baseDefense = 85, .baseSpeed = 100, .baseSpAttack = 80, .baseSpDefense = 85, + .types = MON_TYPES(TYPE_FIGHTING, TYPE_PSYCHIC), + .catchRate = 90, .expYield = 179, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), .abilities = { ABILITY_PURE_POWER, ABILITY_PURE_POWER, ABILITY_PURE_POWER }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Medicham"), .cryId = CRY_MEDICHAM_MEGA, + .natDexNum = NATIONAL_DEX_MEDICHAM, + .categoryName = _("Meditate"), + .height = 13, + .weight = 315, .description = COMPOUND_STRING( "It uses its amped-up willpower to create\n" "additional arms for itself. The more it has\n" "trained its spirit, the more realistic and\n" "dexterous these self-created arms become."), - FRONT_PIC(MedichamMega, 64, 64), + .pokemonScale = 298, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_MedichamMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_MedichamMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(MedichamMega, 64, 64), + .backPic = gMonBackPic_MedichamMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(MedichamMega), - ICON(MedichamMega, 0), + .palette = gMonPalette_MedichamMega, + .shinyPalette = gMonShinyPalette_MedichamMega, + .iconSprite = gMonIcon_MedichamMega, + .iconPalIndex = 0, + FOOTPRINT(Medicham) .isMegaEvolution = TRUE, + .levelUpLearnset = sMedichamLevelUpLearnset, + .teachableLearnset = sMedichamTeachableLearnset, + .formSpeciesIdTable = sMedichamFormSpeciesIdTable, + .formChangeTable = sMedichamFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_MEDITITE @@ -3534,50 +4078,48 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Electrike, 48, 40), + .frontPic = gMonFrontPic_Electrike, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Electrike, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Electrike, 56, 40), + .backPic = gMonBackPic_Electrike, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Electrike), - ICON(Electrike, 1), + .palette = gMonPalette_Electrike, + .shinyPalette = gMonShinyPalette_Electrike, + .iconSprite = gMonIcon_Electrike, + .iconPalIndex = 1, FOOTPRINT(Electrike) - LEARNSETS(Electrike), + .levelUpLearnset = sElectrikeLevelUpLearnset, + .teachableLearnset = sElectrikeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_MANECTRIC}), }, -#define MANECTRIC_MISC_INFO \ - .types = MON_TYPES(TYPE_ELECTRIC), \ - .catchRate = 45, \ - .evYield_Speed = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .bodyColor = BODY_COLOR_YELLOW, \ - .speciesName = _("Manectric"), \ - .natDexNum = NATIONAL_DEX_MANECTRIC, \ - .categoryName = _("Discharge"), \ - FOOTPRINT(Manectric) \ - LEARNSETS(Manectric), \ - .formSpeciesIdTable = sManectricFormSpeciesIdTable, \ - .formChangeTable = sManectricFormChangeTable - [SPECIES_MANECTRIC] = { - MANECTRIC_MISC_INFO, .baseHP = 70, .baseAttack = 75, .baseDefense = 60, .baseSpeed = 105, .baseSpAttack = 105, .baseSpDefense = 60, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 166 : 168, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_STATIC, ABILITY_LIGHTNING_ROD, ABILITY_MINUS }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Manectric"), .cryId = CRY_MANECTRIC, + .natDexNum = NATIONAL_DEX_MANECTRIC, + .categoryName = _("Discharge"), .height = 15, .weight = 402, .description = COMPOUND_STRING( @@ -3589,30 +4131,50 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 3, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Manectric, 56, 64), + .frontPic = gMonFrontPic_Manectric, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Manectric, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Manectric, 56, 64), + .backPic = gMonBackPic_Manectric, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Manectric), - ICON(Manectric, 0), + .palette = gMonPalette_Manectric, + .shinyPalette = gMonShinyPalette_Manectric, + .iconSprite = gMonIcon_Manectric, + .iconPalIndex = 0, + FOOTPRINT(Manectric) + .levelUpLearnset = sManectricLevelUpLearnset, + .teachableLearnset = sManectricTeachableLearnset, + .formSpeciesIdTable = sManectricFormSpeciesIdTable, + .formChangeTable = sManectricFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_MANECTRIC_MEGA] = { - MANECTRIC_MISC_INFO, .baseHP = 70, .baseAttack = 75, .baseDefense = 80, .baseSpeed = 135, .baseSpAttack = 135, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 45, .expYield = 201, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_INTIMIDATE, ABILITY_INTIMIDATE, ABILITY_INTIMIDATE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Manectric"), .cryId = CRY_MANECTRIC_MEGA, + .natDexNum = NATIONAL_DEX_MANECTRIC, + .categoryName = _("Discharge"), .height = 18, .weight = 440, .description = COMPOUND_STRING( @@ -3623,16 +4185,25 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 3, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(ManectricMega, 64, 64), + .frontPic = gMonFrontPic_ManectricMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_ManectricMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ManectricMega, 64, 64), + .backPic = gMonBackPic_ManectricMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(ManectricMega), - ICON(ManectricMega, 0), + .palette = gMonPalette_ManectricMega, + .shinyPalette = gMonShinyPalette_ManectricMega, + .iconSprite = gMonIcon_ManectricMega, + .iconPalIndex = 0, + FOOTPRINT(Manectric) .isMegaEvolution = TRUE, + .levelUpLearnset = sManectricLevelUpLearnset, + .teachableLearnset = sManectricTeachableLearnset, + .formSpeciesIdTable = sManectricFormSpeciesIdTable, + .formChangeTable = sManectricFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_ELECTRIKE @@ -3673,17 +4244,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -9, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Plusle, 40, 48), + .frontPic = gMonFrontPic_Plusle, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Plusle, .frontAnimId = ANIM_V_JUMPS_H_JUMPS, - BACK_PIC(Plusle, 56, 64), + .backPic = gMonBackPic_Plusle, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Plusle), - ICON(Plusle, 0), + .palette = gMonPalette_Plusle, + .shinyPalette = gMonShinyPalette_Plusle, + .iconSprite = gMonIcon_Plusle, + .iconPalIndex = 0, FOOTPRINT(Plusle) - LEARNSETS(Plusle), + .levelUpLearnset = sPlusleLevelUpLearnset, + .teachableLearnset = sPlusleTeachableLearnset, }, #endif //P_FAMILY_PLUSLE @@ -3723,17 +4299,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Minun, 40, 48), + .frontPic = gMonFrontPic_Minun, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Minun, .frontAnimId = ANIM_V_JUMPS_H_JUMPS, - BACK_PIC(Minun, 48, 64), + .backPic = gMonBackPic_Minun, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Minun), - ICON(Minun, 0), + .palette = gMonPalette_Minun, + .shinyPalette = gMonShinyPalette_Minun, + .iconSprite = gMonIcon_Minun, + .iconPalIndex = 0, FOOTPRINT(Minun) - LEARNSETS(Minun), + .levelUpLearnset = sMinunLevelUpLearnset, + .teachableLearnset = sMinunTeachableLearnset, }, #endif //P_FAMILY_MINUN @@ -3742,15 +4323,10 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = { .baseHP = 65, .baseAttack = 73, + .baseDefense = P_UPDATED_STATS >= GEN_7 ? 75 : 55, .baseSpeed = 85, .baseSpAttack = 47, - #if P_UPDATED_STATS >= GEN_7 - .baseDefense = 75, - .baseSpDefense = 85, - #else - .baseDefense = 55, - .baseSpDefense = 75, - #endif + .baseSpDefense = P_UPDATED_STATS >= GEN_7 ? 85 : 75, .types = MON_TYPES(TYPE_BUG), .catchRate = 150, #if P_UPDATED_EXP_YIELDS >= GEN_7 @@ -3784,32 +4360,32 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Volbeat, 48, 56), + .frontPic = gMonFrontPic_Volbeat, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Volbeat, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Volbeat, 48, 64), + .backPic = gMonBackPic_Volbeat, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Volbeat), - ICON(Volbeat, 0), + .palette = gMonPalette_Volbeat, + .shinyPalette = gMonShinyPalette_Volbeat, + .iconSprite = gMonIcon_Volbeat, + .iconPalIndex = 0, FOOTPRINT(Volbeat) - LEARNSETS(Volbeat), + .levelUpLearnset = sVolbeatLevelUpLearnset, + .teachableLearnset = sVolbeatTeachableLearnset, }, [SPECIES_ILLUMISE] = { .baseHP = 65, .baseAttack = 47, + .baseDefense = P_UPDATED_STATS >= GEN_7 ? 75 : 55, .baseSpeed = 85, .baseSpAttack = 73, - #if P_UPDATED_STATS >= GEN_7 - .baseDefense = 75, - .baseSpDefense = 85, - #else - .baseDefense = 55, - .baseSpDefense = 75, - #endif + .baseSpDefense = P_UPDATED_STATS >= GEN_7 ? 85 : 75, .types = MON_TYPES(TYPE_BUG), .catchRate = 150, #if P_UPDATED_EXP_YIELDS >= GEN_7 @@ -3843,17 +4419,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Illumise, 40, 48), + .frontPic = gMonFrontPic_Illumise, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Illumise, .frontAnimId = ANIM_RISING_WOBBLE, - BACK_PIC(Illumise, 48, 56), + .backPic = gMonBackPic_Illumise, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Illumise), - ICON(Illumise, 2), + .palette = gMonPalette_Illumise, + .shinyPalette = gMonShinyPalette_Illumise, + .iconSprite = gMonIcon_Illumise, + .iconPalIndex = 2, FOOTPRINT(Illumise) - LEARNSETS(Illumise), + .levelUpLearnset = sIllumiseLevelUpLearnset, + .teachableLearnset = sIllumiseTeachableLearnset, }, #endif //P_FAMILY_VOLBEAT_ILLUMISE @@ -3895,17 +4476,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Budew, 32, 40), + .frontPic = gMonFrontPic_Budew, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Budew, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Budew, 40, 56), + .backPic = gMonBackPic_Budew, + .backPicSize = MON_COORDS_SIZE(40, 56), .backPicYOffset = 11, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Budew), - ICON(Budew, 1), + .palette = gMonPalette_Budew, + .shinyPalette = gMonShinyPalette_Budew, + .iconSprite = gMonIcon_Budew, + .iconPalIndex = 1, FOOTPRINT(Budew) - LEARNSETS(Budew), + .levelUpLearnset = sBudewLevelUpLearnset, + .teachableLearnset = sBudewTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP_DAY, 0, SPECIES_ROSELIA}), }, #endif //P_GEN_4_CROSS_EVOS @@ -3946,19 +4532,26 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Roselia, 56, 48), - FRONT_PIC_FEMALE(Roselia, 56, 48), + .frontPic = gMonFrontPic_Roselia, + .frontPicFemale = gMonFrontPic_RoseliaF, + .frontPicSize = MON_COORDS_SIZE(56, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Roselia, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Roselia, 64, 56), - BACK_PIC_FEMALE(Roselia, 64, 56), + .backPic = gMonBackPic_Roselia, + .backPicFemale = gMonBackPic_RoseliaF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, - PALETTES(Roselia), - ICON(Roselia, 4), + .palette = gMonPalette_Roselia, + .shinyPalette = gMonShinyPalette_Roselia, + .iconSprite = gMonIcon_Roselia, + .iconPalIndex = 4, FOOTPRINT(Roselia) - LEARNSETS(Roselia), + .levelUpLearnset = sRoseliaLevelUpLearnset, + .teachableLearnset = sRoseliaTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_ROSERADE}), }, @@ -4007,19 +4600,26 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Roserade, 48, 56), - FRONT_PIC_FEMALE(Roserade, 48, 56), + .frontPic = gMonFrontPic_Roserade, + .frontPicFemale = gMonFrontPic_RoseradeF, + .frontPicSize = MON_COORDS_SIZE(48, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Roserade, .frontAnimId = ANIM_H_VIBRATE, - BACK_PIC(Roserade, 64, 56), - BACK_PIC_FEMALE(Roserade, 64, 56), + .backPic = gMonBackPic_Roserade, + .backPicFemale = gMonBackPic_RoseradeF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Roserade), - ICON(Roserade, 0), + .palette = gMonPalette_Roserade, + .shinyPalette = gMonShinyPalette_Roserade, + .iconSprite = gMonIcon_Roserade, + .iconPalIndex = 0, FOOTPRINT(Roserade) - LEARNSETS(Roserade), + .levelUpLearnset = sRoseradeLevelUpLearnset, + .teachableLearnset = sRoseradeTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_ROSELIA @@ -4061,19 +4661,26 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 23, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Gulpin, 40, 48), - FRONT_PIC_FEMALE(Gulpin, 40, 48), + .frontPic = gMonFrontPic_Gulpin, + .frontPicFemale = gMonFrontPic_GulpinF, + .frontPicSize = MON_COORDS_SIZE(40, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Gulpin, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Gulpin, 56, 48), - BACK_PIC_FEMALE(Gulpin, 56, 48), + .backPic = gMonBackPic_Gulpin, + .backPicFemale = gMonBackPic_GulpinF, + .backPicSize = MON_COORDS_SIZE(56, 48), + .backPicSizeFemale = MON_COORDS_SIZE(56, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Gulpin), - ICON(Gulpin, 1), + .palette = gMonPalette_Gulpin, + .shinyPalette = gMonShinyPalette_Gulpin, + .iconSprite = gMonIcon_Gulpin, + .iconPalIndex = 1, FOOTPRINT(Gulpin) - LEARNSETS(Gulpin), + .levelUpLearnset = sGulpinLevelUpLearnset, + .teachableLearnset = sGulpinTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_SWALOT}), }, @@ -4113,19 +4720,26 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 6, .trainerScale = 345, .trainerOffset = 3, - FRONT_PIC(Swalot, 56, 56), - FRONT_PIC_FEMALE(Swalot, 56, 56), + .frontPic = gMonFrontPic_Swalot, + .frontPicFemale = gMonFrontPic_SwalotF, + .frontPicSize = MON_COORDS_SIZE(56, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Swalot, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Swalot, 64, 64), - BACK_PIC_FEMALE(Swalot, 64, 64), + .backPic = gMonBackPic_Swalot, + .backPicFemale = gMonBackPic_SwalotF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Swalot), - ICON(Swalot, 2), + .palette = gMonPalette_Swalot, + .shinyPalette = gMonShinyPalette_Swalot, + .iconSprite = gMonIcon_Swalot, + .iconPalIndex = 2, FOOTPRINT(Swalot) - LEARNSETS(Swalot), + .levelUpLearnset = sSwalotLevelUpLearnset, + .teachableLearnset = sSwalotTeachableLearnset, }, #endif //P_FAMILY_GULPIN @@ -4165,51 +4779,49 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Carvanha, 48, 56), + .frontPic = gMonFrontPic_Carvanha, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Carvanha, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - BACK_PIC(Carvanha, 64, 48), + .backPic = gMonBackPic_Carvanha, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_H_SPRING_REPEATED, - PALETTES(Carvanha), - ICON(Carvanha, 0), + .palette = gMonPalette_Carvanha, + .shinyPalette = gMonShinyPalette_Carvanha, + .iconSprite = gMonIcon_Carvanha, + .iconPalIndex = 0, FOOTPRINT(Carvanha) - LEARNSETS(Carvanha), + .levelUpLearnset = sCarvanhaLevelUpLearnset, + .teachableLearnset = sCarvanhaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_SHARPEDO}), }, -#define SHARPEDO_MISC_INFO \ - .types = MON_TYPES(TYPE_WATER, TYPE_DARK), \ - .catchRate = 60, \ - .evYield_Attack = 2, \ - .itemRare = ITEM_DEEP_SEA_TOOTH, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = 35, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), \ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Sharpedo"), \ - .natDexNum = NATIONAL_DEX_SHARPEDO, \ - .categoryName = _("Brutal"), \ - FOOTPRINT(Sharpedo) \ - LEARNSETS(Sharpedo), \ - .formSpeciesIdTable = sSharpedoFormSpeciesIdTable, \ - .formChangeTable = sSharpedoFormChangeTable - [SPECIES_SHARPEDO] = { - SHARPEDO_MISC_INFO, .baseHP = 70, .baseAttack = 120, .baseDefense = 40, .baseSpeed = 95, .baseSpAttack = 95, .baseSpDefense = 40, + .types = MON_TYPES(TYPE_WATER, TYPE_DARK), + .catchRate = 60, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 161 : 175, + .evYield_Attack = 2, + .itemRare = ITEM_DEEP_SEA_TOOTH, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), .abilities = { ABILITY_ROUGH_SKIN, ABILITY_NONE, ABILITY_SPEED_BOOST }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Sharpedo"), .cryId = CRY_SHARPEDO, + .natDexNum = NATIONAL_DEX_SHARPEDO, + .categoryName = _("Brutal"), .height = 18, .weight = 888, .description = COMPOUND_STRING( @@ -4221,30 +4833,51 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 317, .trainerOffset = 3, - FRONT_PIC(Sharpedo, 64, 64), + .frontPic = gMonFrontPic_Sharpedo, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Sharpedo, .frontAnimId = ANIM_H_JUMPS_V_STRETCH_TWICE, - BACK_PIC(Sharpedo, 64, 64), + .backPic = gMonBackPic_Sharpedo, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Sharpedo), - ICON(Sharpedo, 0), + .palette = gMonPalette_Sharpedo, + .shinyPalette = gMonShinyPalette_Sharpedo, + .iconSprite = gMonIcon_Sharpedo, + .iconPalIndex = 0, + FOOTPRINT(Sharpedo) + .levelUpLearnset = sSharpedoLevelUpLearnset, + .teachableLearnset = sSharpedoTeachableLearnset, + .formSpeciesIdTable = sSharpedoFormSpeciesIdTable, + .formChangeTable = sSharpedoFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_SHARPEDO_MEGA] = { - SHARPEDO_MISC_INFO, .baseHP = 70, .baseAttack = 140, .baseDefense = 70, .baseSpeed = 105, .baseSpAttack = 110, .baseSpDefense = 65, + .types = MON_TYPES(TYPE_WATER, TYPE_DARK), + .catchRate = 60, .expYield = 196, + .evYield_Attack = 2, + .itemRare = ITEM_DEEP_SEA_TOOTH, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), .abilities = { ABILITY_STRONG_JAW, ABILITY_STRONG_JAW, ABILITY_STRONG_JAW }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Sharpedo"), .cryId = CRY_SHARPEDO_MEGA, + .natDexNum = NATIONAL_DEX_SHARPEDO, + .categoryName = _("Brutal"), .height = 25, .weight = 1303, .description = COMPOUND_STRING( @@ -4256,17 +4889,26 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 317, .trainerOffset = 3, - FRONT_PIC(SharpedoMega, 64, 64), + .frontPic = gMonFrontPic_SharpedoMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_SharpedoMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 1, - BACK_PIC(SharpedoMega, 64, 64), + .backPic = gMonBackPic_SharpedoMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(SharpedoMega), - ICON(SharpedoMega, 0), + .palette = gMonPalette_SharpedoMega, + .shinyPalette = gMonShinyPalette_SharpedoMega, + .iconSprite = gMonIcon_SharpedoMega, + .iconPalIndex = 0, + FOOTPRINT(Sharpedo) .isMegaEvolution = TRUE, + .levelUpLearnset = sSharpedoLevelUpLearnset, + .teachableLearnset = sSharpedoTeachableLearnset, + .formSpeciesIdTable = sSharpedoFormSpeciesIdTable, + .formChangeTable = sSharpedoFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_CARVANHA @@ -4306,17 +4948,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 2, .trainerScale = 493, .trainerOffset = 0, - FRONT_PIC(Wailmer, 64, 48), + .frontPic = gMonFrontPic_Wailmer, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Wailmer, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, - BACK_PIC(Wailmer, 64, 48), + .backPic = gMonBackPic_Wailmer, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(Wailmer), - ICON(Wailmer, 2), + .palette = gMonPalette_Wailmer, + .shinyPalette = gMonShinyPalette_Wailmer, + .iconSprite = gMonIcon_Wailmer, + .iconPalIndex = 2, FOOTPRINT(Wailmer) - LEARNSETS(Wailmer), + .levelUpLearnset = sWailmerLevelUpLearnset, + .teachableLearnset = sWailmerTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_WAILORD}), }, @@ -4354,18 +5001,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 1352, .trainerOffset = 18, - FRONT_PIC(Wailord, 64, 56), + .frontPic = gMonFrontPic_Wailord, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Wailord, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .frontAnimDelay = 10, - BACK_PIC(Wailord, 64, 40), + .backPic = gMonBackPic_Wailord, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 14, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(Wailord), - ICON(Wailord, 0), + .palette = gMonPalette_Wailord, + .shinyPalette = gMonShinyPalette_Wailord, + .iconSprite = gMonIcon_Wailord, + .iconPalIndex = 0, FOOTPRINT(Wailord) - LEARNSETS(Wailord), + .levelUpLearnset = sWailordLevelUpLearnset, + .teachableLearnset = sWailordTeachableLearnset, }, #endif //P_FAMILY_WAILMER @@ -4404,53 +5056,53 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Numel, 40, 48), - FRONT_PIC_FEMALE(Numel, 40, 48), + .frontPic = gMonFrontPic_Numel, + .frontPicFemale = gMonFrontPic_NumelF, + .frontPicSize = MON_COORDS_SIZE(40, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Numel, .frontAnimId = ANIM_V_SLIDE, - BACK_PIC(Numel, 56, 56), - BACK_PIC_FEMALE(Numel, 56, 56), + .backPic = gMonBackPic_Numel, + .backPicFemale = gMonBackPic_NumelF, + .backPicSize = MON_COORDS_SIZE(56, 56), + .backPicSizeFemale = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Numel), - ICON(Numel, 1), + .palette = gMonPalette_Numel, + .shinyPalette = gMonShinyPalette_Numel, + .iconSprite = gMonIcon_Numel, + .iconPalIndex = 1, FOOTPRINT(Numel) - LEARNSETS(Numel), + .levelUpLearnset = sNumelLevelUpLearnset, + .teachableLearnset = sNumelTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_CAMERUPT}), }, -#define CAMERUPT_MISC_INFO \ - .types = MON_TYPES(TYPE_FIRE, TYPE_GROUND), \ - .catchRate = 150, \ - .evYield_Attack = 1, \ - .evYield_SpAttack = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .bodyColor = BODY_COLOR_RED, \ - .speciesName = _("Camerupt"), \ - .natDexNum = NATIONAL_DEX_CAMERUPT, \ - .categoryName = _("Eruption"), \ - FOOTPRINT(Camerupt) \ - LEARNSETS(Camerupt), \ - .formSpeciesIdTable = sCameruptFormSpeciesIdTable, \ - .formChangeTable = sCameruptFormChangeTable - [SPECIES_CAMERUPT] = { - CAMERUPT_MISC_INFO, .baseHP = 70, .baseAttack = 100, .baseDefense = 70, .baseSpeed = 40, .baseSpAttack = 105, .baseSpDefense = 75, + .types = MON_TYPES(TYPE_FIRE, TYPE_GROUND), + .catchRate = 150, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 161 : 175, + .evYield_Attack = 1, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_MAGMA_ARMOR, ABILITY_SOLID_ROCK, ABILITY_ANGER_POINT }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Camerupt"), .cryId = CRY_CAMERUPT, + .natDexNum = NATIONAL_DEX_CAMERUPT, + .categoryName = _("Eruption"), .height = 19, .weight = 2200, .description = COMPOUND_STRING( @@ -4462,32 +5114,55 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 7, .trainerScale = 345, .trainerOffset = 6, - FRONT_PIC(Camerupt, 64, 56), - FRONT_PIC_FEMALE(Camerupt, 64, 56), + .frontPic = gMonFrontPic_Camerupt, + .frontPicFemale = gMonFrontPic_CameruptF, + .frontPicSize = MON_COORDS_SIZE(64, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Camerupt, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Camerupt, 64, 40), - BACK_PIC_FEMALE(Camerupt, 64, 40), + .backPic = gMonBackPic_Camerupt, + .backPicFemale = gMonBackPic_CameruptF, + .backPicSize = MON_COORDS_SIZE(64, 40), + .backPicSizeFemale = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Camerupt), - ICON(Camerupt, 0), + .palette = gMonPalette_Camerupt, + .shinyPalette = gMonShinyPalette_Camerupt, + .iconSprite = gMonIcon_Camerupt, + .iconPalIndex = 0, + FOOTPRINT(Camerupt) + .levelUpLearnset = sCameruptLevelUpLearnset, + .teachableLearnset = sCameruptTeachableLearnset, + .formSpeciesIdTable = sCameruptFormSpeciesIdTable, + .formChangeTable = sCameruptFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_CAMERUPT_MEGA] = { - CAMERUPT_MISC_INFO, .baseHP = 70, .baseAttack = 120, .baseDefense = 100, .baseSpeed = 20, .baseSpAttack = 145, .baseSpDefense = 105, + .types = MON_TYPES(TYPE_FIRE, TYPE_GROUND), + .catchRate = 150, .expYield = 196, + .evYield_Attack = 1, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_SHEER_FORCE, ABILITY_SHEER_FORCE, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Camerupt"), .cryId = CRY_CAMERUPT_MEGA, + .natDexNum = NATIONAL_DEX_CAMERUPT, + .categoryName = _("Eruption"), .height = 25, .weight = 3205, .description = COMPOUND_STRING( @@ -4499,16 +5174,25 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 7, .trainerScale = 345, .trainerOffset = 6, - FRONT_PIC(CameruptMega, 64, 64), + .frontPic = gMonFrontPic_CameruptMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_CameruptMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(CameruptMega, 64, 64), + .backPic = gMonBackPic_CameruptMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 9, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(CameruptMega), - ICON(CameruptMega, 0), + .palette = gMonPalette_CameruptMega, + .shinyPalette = gMonShinyPalette_CameruptMega, + .iconSprite = gMonIcon_CameruptMega, + .iconPalIndex = 0, + FOOTPRINT(Camerupt) .isMegaEvolution = TRUE, + .levelUpLearnset = sCameruptLevelUpLearnset, + .teachableLearnset = sCameruptTeachableLearnset, + .formSpeciesIdTable = sCameruptFormSpeciesIdTable, + .formChangeTable = sCameruptFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_NUMEL @@ -4549,17 +5233,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 9, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Torkoal, 64, 64), + .frontPic = gMonFrontPic_Torkoal, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Torkoal, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Torkoal, 64, 48), + .backPic = gMonBackPic_Torkoal, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Torkoal), - ICON(Torkoal, 2), + .palette = gMonPalette_Torkoal, + .shinyPalette = gMonShinyPalette_Torkoal, + .iconSprite = gMonIcon_Torkoal, + .iconPalIndex = 2, FOOTPRINT(Torkoal) - LEARNSETS(Torkoal), + .levelUpLearnset = sTorkoalLevelUpLearnset, + .teachableLearnset = sTorkoalTeachableLearnset, }, #endif //P_FAMILY_TORKOAL @@ -4598,17 +5287,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Spoink, 32, 48), + .frontPic = gMonFrontPic_Spoink, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Spoink, .frontAnimId = ANIM_H_JUMPS_V_STRETCH_TWICE, - BACK_PIC(Spoink, 40, 64), + .backPic = gMonBackPic_Spoink, + .backPicSize = MON_COORDS_SIZE(40, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Spoink), - ICON(Spoink, 0), + .palette = gMonPalette_Spoink, + .shinyPalette = gMonShinyPalette_Spoink, + .iconSprite = gMonIcon_Spoink, + .iconPalIndex = 0, FOOTPRINT(Spoink) - LEARNSETS(Spoink), + .levelUpLearnset = sSpoinkLevelUpLearnset, + .teachableLearnset = sSpoinkTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_GRUMPIG}), }, @@ -4646,18 +5340,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Grumpig, 56, 64), + .frontPic = gMonFrontPic_Grumpig, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Grumpig, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, .frontAnimDelay = 15, - BACK_PIC(Grumpig, 64, 64), + .backPic = gMonBackPic_Grumpig, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Grumpig), - ICON(Grumpig, 2), + .palette = gMonPalette_Grumpig, + .shinyPalette = gMonShinyPalette_Grumpig, + .iconSprite = gMonIcon_Grumpig, + .iconPalIndex = 2, FOOTPRINT(Grumpig) - LEARNSETS(Grumpig), + .levelUpLearnset = sGrumpigLevelUpLearnset, + .teachableLearnset = sGrumpigTeachableLearnset, }, #endif //P_FAMILY_SPOINK @@ -4697,17 +5396,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Spinda, 48, 64), + .frontPic = gMonFrontPic_Spinda, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Spinda, .frontAnimId = ANIM_CIRCLE_INTO_BG, - BACK_PIC(Spinda, 56, 56), + .backPic = gMonBackPic_Spinda, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - PALETTES(Spinda), - ICON(Spinda, 1), + .palette = gMonPalette_Spinda, + .shinyPalette = gMonShinyPalette_Spinda, + .iconSprite = gMonIcon_Spinda, + .iconPalIndex = 1, FOOTPRINT(Spinda) - LEARNSETS(Spinda), + .levelUpLearnset = sSpindaLevelUpLearnset, + .teachableLearnset = sSpindaTeachableLearnset, }, #endif //P_FAMILY_SPINDA @@ -4729,11 +5433,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .eggCycles = 20, .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG, EGG_GROUP_DRAGON), - #else - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), - #endif + #if P_UPDATED_EGG_GROUPS >= GEN_8 + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG, EGG_GROUP_DRAGON), + #else + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + #endif .abilities = { ABILITY_HYPER_CUTTER, ABILITY_ARENA_TRAP, ABILITY_SHEER_FORCE }, .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Trapinch"), @@ -4751,17 +5455,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Trapinch, 40, 40), + .frontPic = gMonFrontPic_Trapinch, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Trapinch, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Trapinch, 48, 48), + .backPic = gMonBackPic_Trapinch, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Trapinch), - ICON(Trapinch, 0), + .palette = gMonPalette_Trapinch, + .shinyPalette = gMonShinyPalette_Trapinch, + .iconSprite = gMonIcon_Trapinch, + .iconPalIndex = 0, FOOTPRINT(Trapinch) - LEARNSETS(Trapinch), + .levelUpLearnset = sTrapinchLevelUpLearnset, + .teachableLearnset = sTrapinchTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_VIBRAVA}), }, @@ -4782,11 +5491,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .eggCycles = 20, .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG, EGG_GROUP_DRAGON), - #else - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), - #endif + #if P_UPDATED_EGG_GROUPS >= GEN_8 + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG, EGG_GROUP_DRAGON), + #else + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + #endif .abilities = { ABILITY_LEVITATE, ABILITY_LEVITATE, ABILITY_LEVITATE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Vibrava"), @@ -4804,17 +5513,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 11, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Vibrava, 64, 48), + .frontPic = gMonFrontPic_Vibrava, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Vibrava, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Vibrava, 64, 40), + .backPic = gMonBackPic_Vibrava, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Vibrava), - ICON(Vibrava, 1), + .palette = gMonPalette_Vibrava, + .shinyPalette = gMonShinyPalette_Vibrava, + .iconSprite = gMonIcon_Vibrava, + .iconPalIndex = 1, FOOTPRINT(Vibrava) - LEARNSETS(Vibrava), + .levelUpLearnset = sVibravaLevelUpLearnset, + .teachableLearnset = sVibravaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_FLYGON}), }, @@ -4841,11 +5555,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .eggCycles = 20, .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG, EGG_GROUP_DRAGON), - #else - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), - #endif + #if P_UPDATED_EGG_GROUPS >= GEN_8 + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG, EGG_GROUP_DRAGON), + #else + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + #endif .abilities = { ABILITY_LEVITATE, ABILITY_LEVITATE, ABILITY_LEVITATE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Flygon"), @@ -4863,18 +5577,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 268, .trainerOffset = 1, - FRONT_PIC(Flygon, 64, 64), + .frontPic = gMonFrontPic_Flygon, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Flygon, .frontAnimId = ANIM_ZIGZAG_SLOW, .enemyMonElevation = 7, - BACK_PIC(Flygon, 64, 64), + .backPic = gMonBackPic_Flygon, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Flygon), - ICON(Flygon, 1), + .palette = gMonPalette_Flygon, + .shinyPalette = gMonShinyPalette_Flygon, + .iconSprite = gMonIcon_Flygon, + .iconPalIndex = 1, FOOTPRINT(Flygon) - LEARNSETS(Flygon), + .levelUpLearnset = sFlygonLevelUpLearnset, + .teachableLearnset = sFlygonTeachableLearnset, }, #endif //P_FAMILY_TRAPINCH @@ -4914,17 +5633,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cacnea, 56, 40), + .frontPic = gMonFrontPic_Cacnea, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Cacnea, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - BACK_PIC(Cacnea, 64, 40), + .backPic = gMonBackPic_Cacnea, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Cacnea), - ICON(Cacnea, 1), + .palette = gMonPalette_Cacnea, + .shinyPalette = gMonShinyPalette_Cacnea, + .iconSprite = gMonIcon_Cacnea, + .iconPalIndex = 1, FOOTPRINT(Cacnea) - LEARNSETS(Cacnea), + .levelUpLearnset = sCacneaLevelUpLearnset, + .teachableLearnset = sCacneaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_CACTURNE}), }, @@ -4964,18 +5688,24 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 5, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cacturne, 64, 64), - FRONT_PIC_FEMALE(Cacturne, 64, 64), + .frontPic = gMonFrontPic_Cacturne, + .frontPicFemale = gMonFrontPic_CacturneF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Cacturne, .frontAnimId = ANIM_V_SLIDE, - BACK_PIC(Cacturne, 64, 64), + .backPic = gMonBackPic_Cacturne, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Cacturne), - ICON(Cacturne, 1), + .palette = gMonPalette_Cacturne, + .shinyPalette = gMonShinyPalette_Cacturne, + .iconSprite = gMonIcon_Cacturne, + .iconPalIndex = 1, FOOTPRINT(Cacturne) - LEARNSETS(Cacturne), + .levelUpLearnset = sCacturneLevelUpLearnset, + .teachableLearnset = sCacturneTeachableLearnset, }, #endif //P_FAMILY_CACNEA @@ -5014,40 +5744,27 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Swablu, 48, 40), + .frontPic = gMonFrontPic_Swablu, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Swablu, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Swablu, 64, 48), + .backPic = gMonBackPic_Swablu, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Swablu), - ICON(Swablu, 0), + .palette = gMonPalette_Swablu, + .shinyPalette = gMonShinyPalette_Swablu, + .iconSprite = gMonIcon_Swablu, + .iconPalIndex = 0, FOOTPRINT(Swablu) - LEARNSETS(Swablu), + .levelUpLearnset = sSwabluLevelUpLearnset, + .teachableLearnset = sSwabluTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_ALTARIA}), }, -#define ALTARIA_MISC_INFO \ - .catchRate = 45, \ - .evYield_SpDefense = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_ERRATIC, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING, EGG_GROUP_DRAGON),\ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Altaria"), \ - .natDexNum = NATIONAL_DEX_ALTARIA, \ - .categoryName = _("Humming"), \ - FOOTPRINT(Altaria) \ - LEARNSETS(Altaria), \ - .formSpeciesIdTable = sAltariaFormSpeciesIdTable, \ - .formChangeTable = sAltariaFormChangeTable - [SPECIES_ALTARIA] = { - ALTARIA_MISC_INFO, .baseHP = 75, .baseAttack = 70, .baseDefense = 90, @@ -5055,9 +5772,20 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .baseSpAttack = 70, .baseSpDefense = 105, .types = MON_TYPES(TYPE_DRAGON, TYPE_FLYING), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 172 : 188, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING, EGG_GROUP_DRAGON), .abilities = { ABILITY_NATURAL_CURE, ABILITY_NONE, ABILITY_CLOUD_NINE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Altaria"), .cryId = CRY_ALTARIA, + .natDexNum = NATIONAL_DEX_ALTARIA, + .categoryName = _("Humming"), .height = 11, .weight = 206, .description = COMPOUND_STRING( @@ -5069,21 +5797,29 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Altaria, 64, 64), + .frontPic = gMonFrontPic_Altaria, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Altaria, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Altaria, 64, 48), + .backPic = gMonBackPic_Altaria, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Altaria), - ICON(Altaria, 0), + .palette = gMonPalette_Altaria, + .shinyPalette = gMonShinyPalette_Altaria, + .iconSprite = gMonIcon_Altaria, + .iconPalIndex = 0, + FOOTPRINT(Altaria) + .levelUpLearnset = sAltariaLevelUpLearnset, + .teachableLearnset = sAltariaTeachableLearnset, + .formSpeciesIdTable = sAltariaFormSpeciesIdTable, + .formChangeTable = sAltariaFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_ALTARIA_MEGA] = { - ALTARIA_MISC_INFO, .baseHP = 75, .baseAttack = 110, .baseDefense = 110, @@ -5091,9 +5827,20 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .baseSpAttack = 110, .baseSpDefense = 105, .types = MON_TYPES(TYPE_DRAGON, TYPE_FAIRY), + .catchRate = 45, .expYield = 207, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING, EGG_GROUP_DRAGON), .abilities = { ABILITY_PIXILATE, ABILITY_PIXILATE, ABILITY_PIXILATE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Altaria"), .cryId = CRY_ALTARIA_MEGA, + .natDexNum = NATIONAL_DEX_ALTARIA, + .categoryName = _("Humming"), .height = 15, .weight = 206, .description = COMPOUND_STRING( @@ -5105,17 +5852,26 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(AltariaMega, 64, 64), + .frontPic = gMonFrontPic_AltariaMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_AltariaMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 6, - BACK_PIC(AltariaMega, 64, 48), + .backPic = gMonBackPic_AltariaMega, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(AltariaMega), - ICON(AltariaMega, 0), + .palette = gMonPalette_AltariaMega, + .shinyPalette = gMonShinyPalette_AltariaMega, + .iconSprite = gMonIcon_AltariaMega, + .iconPalIndex = 0, + FOOTPRINT(Altaria) .isMegaEvolution = TRUE, + .levelUpLearnset = sAltariaLevelUpLearnset, + .teachableLearnset = sAltariaTeachableLearnset, + .formSpeciesIdTable = sAltariaFormSpeciesIdTable, + .formChangeTable = sAltariaFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_SWABLU @@ -5157,17 +5913,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Zangoose, 56, 56), + .frontPic = gMonFrontPic_Zangoose, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Zangoose, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Zangoose, 64, 56), + .backPic = gMonBackPic_Zangoose, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Zangoose), - ICON(Zangoose, 0), + .palette = gMonPalette_Zangoose, + .shinyPalette = gMonShinyPalette_Zangoose, + .iconSprite = gMonIcon_Zangoose, + .iconPalIndex = 0, FOOTPRINT(Zangoose) - LEARNSETS(Zangoose), + .levelUpLearnset = sZangooseLevelUpLearnset, + .teachableLearnset = sZangooseTeachableLearnset, }, #endif //P_FAMILY_ZANGOOSE @@ -5209,17 +5970,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Seviper, 64, 56), + .frontPic = gMonFrontPic_Seviper, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Seviper, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Seviper, 64, 64), + .backPic = gMonBackPic_Seviper, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Seviper), - ICON(Seviper, 2), + .palette = gMonPalette_Seviper, + .shinyPalette = gMonShinyPalette_Seviper, + .iconSprite = gMonIcon_Seviper, + .iconPalIndex = 2, FOOTPRINT(Seviper) - LEARNSETS(Seviper), + .levelUpLearnset = sSeviperLevelUpLearnset, + .teachableLearnset = sSeviperTeachableLearnset, }, #endif //P_FAMILY_SEVIPER @@ -5266,18 +6032,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Lunatone, 48, 48), + .frontPic = gMonFrontPic_Lunatone, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Lunatone, .frontAnimId = ANIM_SWING_CONVEX_FAST, .enemyMonElevation = 13, - BACK_PIC(Lunatone, 48, 48), + .backPic = gMonBackPic_Lunatone, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Lunatone), - ICON(Lunatone, 1), + .palette = gMonPalette_Lunatone, + .shinyPalette = gMonShinyPalette_Lunatone, + .iconSprite = gMonIcon_Lunatone, + .iconPalIndex = 1, FOOTPRINT(Lunatone) - LEARNSETS(Lunatone), + .levelUpLearnset = sLunatoneLevelUpLearnset, + .teachableLearnset = sLunatoneTeachableLearnset, }, #endif //P_FAMILY_LUNATONE @@ -5324,18 +6095,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Solrock, 64, 64), + .frontPic = gMonFrontPic_Solrock, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Solrock, .frontAnimId = ANIM_ROTATE_TO_SIDES_TWICE, .enemyMonElevation = 4, - BACK_PIC(Solrock, 64, 64), + .backPic = gMonBackPic_Solrock, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Solrock), - ICON(Solrock, 0), + .palette = gMonPalette_Solrock, + .shinyPalette = gMonShinyPalette_Solrock, + .iconSprite = gMonIcon_Solrock, + .iconPalIndex = 0, FOOTPRINT(Solrock) - LEARNSETS(Solrock), + .levelUpLearnset = sSolrockLevelUpLearnset, + .teachableLearnset = sSolrockTeachableLearnset, }, #endif //P_FAMILY_SOLROCK @@ -5374,18 +6150,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Barboach, 48, 40), + .frontPic = gMonFrontPic_Barboach, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Barboach, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, .enemyMonElevation = 7, - BACK_PIC(Barboach, 56, 48), + .backPic = gMonBackPic_Barboach, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Barboach), - ICON(Barboach, 0), + .palette = gMonPalette_Barboach, + .shinyPalette = gMonShinyPalette_Barboach, + .iconSprite = gMonIcon_Barboach, + .iconPalIndex = 0, FOOTPRINT(Barboach) - LEARNSETS(Barboach), + .levelUpLearnset = sBarboachLevelUpLearnset, + .teachableLearnset = sBarboachTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_WHISCASH}), }, @@ -5423,17 +6204,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Whiscash, 64, 48), + .frontPic = gMonFrontPic_Whiscash, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Whiscash, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - BACK_PIC(Whiscash, 64, 48), + .backPic = gMonBackPic_Whiscash, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Whiscash), - ICON(Whiscash, 0), + .palette = gMonPalette_Whiscash, + .shinyPalette = gMonShinyPalette_Whiscash, + .iconSprite = gMonIcon_Whiscash, + .iconPalIndex = 0, FOOTPRINT(Whiscash) - LEARNSETS(Whiscash), + .levelUpLearnset = sWhiscashLevelUpLearnset, + .teachableLearnset = sWhiscashTeachableLearnset, }, #endif //P_FAMILY_BARBOACH @@ -5472,17 +6258,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Corphish, 56, 48), + .frontPic = gMonFrontPic_Corphish, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Corphish, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Corphish, 64, 48), + .backPic = gMonBackPic_Corphish, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Corphish), - ICON(Corphish, 0), + .palette = gMonPalette_Corphish, + .shinyPalette = gMonShinyPalette_Corphish, + .iconSprite = gMonIcon_Corphish, + .iconPalIndex = 0, FOOTPRINT(Corphish) - LEARNSETS(Corphish), + .levelUpLearnset = sCorphishLevelUpLearnset, + .teachableLearnset = sCorphishTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_CRAWDAUNT}), }, @@ -5520,17 +6311,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 9, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Crawdaunt, 64, 64), + .frontPic = gMonFrontPic_Crawdaunt, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Crawdaunt, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Crawdaunt, 64, 56), + .backPic = gMonBackPic_Crawdaunt, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Crawdaunt), - ICON(Crawdaunt, 0), + .palette = gMonPalette_Crawdaunt, + .shinyPalette = gMonShinyPalette_Crawdaunt, + .iconSprite = gMonIcon_Crawdaunt, + .iconPalIndex = 0, FOOTPRINT(Crawdaunt) - LEARNSETS(Crawdaunt), + .levelUpLearnset = sCrawdauntLevelUpLearnset, + .teachableLearnset = sCrawdauntTeachableLearnset, }, #endif //P_FAMILY_CORPHISH @@ -5570,18 +6366,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 21, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Baltoy, 40, 40), + .frontPic = gMonFrontPic_Baltoy, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Baltoy, .frontAnimId = ANIM_H_SLIDE_WOBBLE, .enemyMonElevation = 8, - BACK_PIC(Baltoy, 64, 48), + .backPic = gMonBackPic_Baltoy, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Baltoy), - ICON(Baltoy, 2), + .palette = gMonPalette_Baltoy, + .shinyPalette = gMonShinyPalette_Baltoy, + .iconSprite = gMonIcon_Baltoy, + .iconPalIndex = 2, FOOTPRINT(Baltoy) - LEARNSETS(Baltoy), + .levelUpLearnset = sBaltoyLevelUpLearnset, + .teachableLearnset = sBaltoyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_CLAYDOL}), }, @@ -5620,18 +6421,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 3, .trainerScale = 280, .trainerOffset = 1, - FRONT_PIC(Claydol, 56, 64), + .frontPic = gMonFrontPic_Claydol, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Claydol, .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, .enemyMonElevation = 10, - BACK_PIC(Claydol, 64, 56), + .backPic = gMonBackPic_Claydol, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Claydol), - ICON(Claydol, 0), + .palette = gMonPalette_Claydol, + .shinyPalette = gMonShinyPalette_Claydol, + .iconSprite = gMonIcon_Claydol, + .iconPalIndex = 0, FOOTPRINT(Claydol) - LEARNSETS(Claydol), + .levelUpLearnset = sClaydolLevelUpLearnset, + .teachableLearnset = sClaydolTeachableLearnset, }, #endif //P_FAMILY_BALTOY @@ -5677,17 +6483,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Lileep, 48, 56), + .frontPic = gMonFrontPic_Lileep, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Lileep, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Lileep, 48, 48), + .backPic = gMonBackPic_Lileep, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_H_STRETCH, - PALETTES(Lileep), - ICON(Lileep, 2), + .palette = gMonPalette_Lileep, + .shinyPalette = gMonShinyPalette_Lileep, + .iconSprite = gMonIcon_Lileep, + .iconPalIndex = 2, FOOTPRINT(Lileep) - LEARNSETS(Lileep), + .levelUpLearnset = sLileepLevelUpLearnset, + .teachableLearnset = sLileepTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_CRADILY}), }, @@ -5732,17 +6543,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cradily, 56, 64), + .frontPic = gMonFrontPic_Cradily, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Cradily, .frontAnimId = ANIM_V_SHAKE_TWICE, - BACK_PIC(Cradily, 56, 64), + .backPic = gMonBackPic_Cradily, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Cradily), - ICON(Cradily, 1), + .palette = gMonPalette_Cradily, + .shinyPalette = gMonShinyPalette_Cradily, + .iconSprite = gMonIcon_Cradily, + .iconPalIndex = 1, FOOTPRINT(Cradily) - LEARNSETS(Cradily), + .levelUpLearnset = sCradilyLevelUpLearnset, + .teachableLearnset = sCradilyTeachableLearnset, }, #endif //P_FAMILY_LILEEP @@ -5787,17 +6603,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Anorith, 48, 56), + .frontPic = gMonFrontPic_Anorith, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Anorith, .frontAnimId = ANIM_TWIST, - BACK_PIC(Anorith, 56, 32), + .backPic = gMonBackPic_Anorith, + .backPicSize = MON_COORDS_SIZE(56, 32), .backPicYOffset = 19, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Anorith), - ICON(Anorith, 0), + .palette = gMonPalette_Anorith, + .shinyPalette = gMonShinyPalette_Anorith, + .iconSprite = gMonIcon_Anorith, + .iconPalIndex = 0, FOOTPRINT(Anorith) - LEARNSETS(Anorith), + .levelUpLearnset = sAnorithLevelUpLearnset, + .teachableLearnset = sAnorithTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_ARMALDO}), }, @@ -5841,17 +6662,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 3, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Armaldo, 64, 64), + .frontPic = gMonFrontPic_Armaldo, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Armaldo, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Armaldo, 64, 64), + .backPic = gMonBackPic_Armaldo, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Armaldo), - ICON(Armaldo, 2), + .palette = gMonPalette_Armaldo, + .shinyPalette = gMonShinyPalette_Armaldo, + .iconSprite = gMonIcon_Armaldo, + .iconPalIndex = 2, FOOTPRINT(Armaldo) - LEARNSETS(Armaldo), + .levelUpLearnset = sArmaldoLevelUpLearnset, + .teachableLearnset = sArmaldoTeachableLearnset, }, #endif //P_FAMILY_ANORITH @@ -5890,17 +6716,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Feebas, 40, 48), + .frontPic = gMonFrontPic_Feebas, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Feebas, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - BACK_PIC(Feebas, 48, 56), + .backPic = gMonBackPic_Feebas, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_H_SPRING, - PALETTES(Feebas), - ICON(Feebas, 2), + .palette = gMonPalette_Feebas, + .shinyPalette = gMonShinyPalette_Feebas, + .iconSprite = gMonIcon_Feebas, + .iconPalIndex = 2, FOOTPRINT(Feebas) - LEARNSETS(Feebas), + .levelUpLearnset = sFeebasLevelUpLearnset, + .teachableLearnset = sFeebasTeachableLearnset, .evolutions = EVOLUTION({EVO_BEAUTY, 170, SPECIES_MILOTIC}, {EVO_TRADE_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC}, {EVO_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC}), @@ -5940,143 +6771,257 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 360, .trainerOffset = 7, - FRONT_PIC(Milotic, 64, 64), - FRONT_PIC_FEMALE(Milotic, 64, 64), + .frontPic = gMonFrontPic_Milotic, + .frontPicFemale = gMonFrontPic_MiloticF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Milotic, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, .frontAnimDelay = 45, - BACK_PIC(Milotic, 64, 64), - BACK_PIC_FEMALE(Milotic, 64, 64), + .backPic = gMonBackPic_Milotic, + .backPicFemale = gMonBackPic_MiloticF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(Milotic), - ICON(Milotic, 2), + .palette = gMonPalette_Milotic, + .shinyPalette = gMonShinyPalette_Milotic, + .iconSprite = gMonIcon_Milotic, + .iconPalIndex = 2, FOOTPRINT(Milotic) - LEARNSETS(Milotic), + .levelUpLearnset = sMiloticLevelUpLearnset, + .teachableLearnset = sMiloticTeachableLearnset, }, #endif //P_FAMILY_FEEBAS #if P_FAMILY_CASTFORM -#define CASTFORM_MISC_INFO \ - .baseHP = 70, \ - .baseAttack = 70, \ - .baseDefense = 70, \ - .baseSpeed = 70, \ - .baseSpAttack = 70, \ - .baseSpDefense = 70, \ - .catchRate = 45, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 147 : 145, \ - .evYield_HP = 1, \ - .itemCommon = ITEM_MYSTIC_WATER, \ - .itemRare = ITEM_MYSTIC_WATER, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS),\ - .abilities = { ABILITY_FORECAST, ABILITY_NONE }, \ - .speciesName = _("Castform"), \ - .cryId = CRY_CASTFORM, \ - .natDexNum = NATIONAL_DEX_CASTFORM, \ - .categoryName = _("Weather"), \ - .height = 3, \ - .weight = 8, \ - .pokemonScale = 435, \ - .pokemonOffset = -5, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Castform) \ - LEARNSETS(Castform), \ - .formSpeciesIdTable = sCastformFormSpeciesIdTable, \ - .formChangeTable = sCastformFormChangeTable - [SPECIES_CASTFORM_NORMAL] = { - CASTFORM_MISC_INFO, + .baseHP = 70, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 70, .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 147 : 145, + .evYield_HP = 1, + .itemCommon = ITEM_MYSTIC_WATER, + .itemRare = ITEM_MYSTIC_WATER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_FORECAST, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Castform"), + .cryId = CRY_CASTFORM, + .natDexNum = NATIONAL_DEX_CASTFORM, + .categoryName = _("Weather"), + .height = 3, + .weight = 8, .description = COMPOUND_STRING( "It alters its form depending on the\n" "weather. Changes in the climate such as\n" "the temperature and humidity appear to\n" "affect its cellular structure."), - FRONT_PIC(CastformNormal, 24, 32), + .pokemonScale = 435, + .pokemonOffset = -5, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_CastformNormal, + .frontPicSize = MON_COORDS_SIZE(24, 32), .frontPicYOffset = 17, .frontAnimFrames = sAnims_CastformNormal, .frontAnimId = ANIM_H_SLIDE_WOBBLE, .enemyMonElevation = 16, - BACK_PIC(CastformNormal, 32, 64), + .backPic = gMonBackPic_CastformNormal, + .backPicSize = MON_COORDS_SIZE(32, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(CastformNormal), - ICON(CastformNormal, 0), + .palette = gMonPalette_CastformNormal, + .shinyPalette = gMonShinyPalette_CastformNormal, + .iconSprite = gMonIcon_CastformNormal, + .iconPalIndex = 0, + FOOTPRINT(Castform) + .levelUpLearnset = sCastformLevelUpLearnset, + .teachableLearnset = sCastformTeachableLearnset, + .formSpeciesIdTable = sCastformFormSpeciesIdTable, + .formChangeTable = sCastformFormChangeTable, }, [SPECIES_CASTFORM_SUNNY] = { - CASTFORM_MISC_INFO, + .baseHP = 70, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 70, .types = MON_TYPES(TYPE_FIRE), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 147 : 145, + .evYield_HP = 1, + .itemCommon = ITEM_MYSTIC_WATER, + .itemRare = ITEM_MYSTIC_WATER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_FORECAST, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Castform"), + .cryId = CRY_CASTFORM, + .natDexNum = NATIONAL_DEX_CASTFORM, + .categoryName = _("Weather"), + .height = 3, + .weight = 8, .description = COMPOUND_STRING( "Castform takes this form on bright days.\n" "In an experiment where is was placed in\n" "front of a heater, it didn't change to this\n" "form. Its body is warm and toasty."), - FRONT_PIC(CastformSunny, 40, 48), + .pokemonScale = 435, + .pokemonOffset = -5, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_CastformSunny, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_CastformSunny, .frontAnimId = ANIM_GROW_VIBRATE, .enemyMonElevation = 5, - BACK_PIC(CastformSunny, 56, 64), + .backPic = gMonBackPic_CastformSunny, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(CastformSunny), - ICON(CastformSunny, 0), + .palette = gMonPalette_CastformSunny, + .shinyPalette = gMonShinyPalette_CastformSunny, + .iconSprite = gMonIcon_CastformSunny, + .iconPalIndex = 0, + FOOTPRINT(Castform) + .levelUpLearnset = sCastformLevelUpLearnset, + .teachableLearnset = sCastformTeachableLearnset, + .formSpeciesIdTable = sCastformFormSpeciesIdTable, + .formChangeTable = sCastformFormChangeTable, }, [SPECIES_CASTFORM_RAINY] = { - CASTFORM_MISC_INFO, + .baseHP = 70, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 70, .types = MON_TYPES(TYPE_WATER), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 147 : 145, + .evYield_HP = 1, + .itemCommon = ITEM_MYSTIC_WATER, + .itemRare = ITEM_MYSTIC_WATER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_FORECAST, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Castform"), + .cryId = CRY_CASTFORM, + .natDexNum = NATIONAL_DEX_CASTFORM, + .categoryName = _("Weather"), + .height = 3, + .weight = 8, .description = COMPOUND_STRING( "This is Castform's form while it's raining.\n" "In an experiment where it was placed in a\n" "shower, it didn't change to this form. Its\n" "body is soft, slightly swollen with water."), - FRONT_PIC(CastformRainy, 32, 48), + .pokemonScale = 435, + .pokemonOffset = -5, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_CastformRainy, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_CastformRainy, .frontAnimId = ANIM_SWING_CONVEX_FAST, .enemyMonElevation = 5, - BACK_PIC(CastformRainy, 40, 64), + .backPic = gMonBackPic_CastformRainy, + .backPicSize = MON_COORDS_SIZE(40, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(CastformRainy), - ICON(CastformRainy, 0), + .palette = gMonPalette_CastformRainy, + .shinyPalette = gMonShinyPalette_CastformRainy, + .iconSprite = gMonIcon_CastformRainy, + .iconPalIndex = 0, + FOOTPRINT(Castform) + .levelUpLearnset = sCastformLevelUpLearnset, + .teachableLearnset = sCastformTeachableLearnset, + .formSpeciesIdTable = sCastformFormSpeciesIdTable, + .formChangeTable = sCastformFormChangeTable, }, [SPECIES_CASTFORM_SNOWY] = { - CASTFORM_MISC_INFO, + .baseHP = 70, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 70, .types = MON_TYPES(TYPE_ICE), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 147 : 145, + .evYield_HP = 1, + .itemCommon = ITEM_MYSTIC_WATER, + .itemRare = ITEM_MYSTIC_WATER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_FORECAST, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Castform"), + .cryId = CRY_CASTFORM, + .natDexNum = NATIONAL_DEX_CASTFORM, + .categoryName = _("Weather"), + .height = 3, + .weight = 8, .description = COMPOUND_STRING( "This is Castform's form in a hailstorm.\n" "In an experiment where it was placed\n" "in a freezer, it didn't change to this form.\n" "Its cold skin is as smooth as ice."), - FRONT_PIC(CastformSnowy, 40, 56), + .pokemonScale = 435, + .pokemonOffset = -5, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_CastformSnowy, + .frontPicSize = MON_COORDS_SIZE(40, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_CastformSnowy, .frontAnimId = ANIM_V_STRETCH, .enemyMonElevation = 5, - BACK_PIC(CastformSnowy, 56, 64), + .backPic = gMonBackPic_CastformSnowy, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(CastformSnowy), - ICON(CastformSnowy, 0), + .palette = gMonPalette_CastformSnowy, + .shinyPalette = gMonShinyPalette_CastformSnowy, + .iconSprite = gMonIcon_CastformSnowy, + .iconPalIndex = 0, + FOOTPRINT(Castform) + .levelUpLearnset = sCastformLevelUpLearnset, + .teachableLearnset = sCastformTeachableLearnset, + .formSpeciesIdTable = sCastformFormSpeciesIdTable, + .formChangeTable = sCastformFormChangeTable, }, #endif //P_FAMILY_CASTFORM @@ -6115,18 +7060,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Kecleon, 48, 56), + .frontPic = gMonFrontPic_Kecleon, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Kecleon, .frontAnimId = ANIM_FLICKER_INCREASING, .frontAnimDelay = 30, - BACK_PIC(Kecleon, 56, 56), + .backPic = gMonBackPic_Kecleon, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Kecleon), - ICON(Kecleon, 1), + .palette = gMonPalette_Kecleon, + .shinyPalette = gMonShinyPalette_Kecleon, + .iconSprite = gMonIcon_Kecleon, + .iconPalIndex = 1, FOOTPRINT(Kecleon) - LEARNSETS(Kecleon), + .levelUpLearnset = sKecleonLevelUpLearnset, + .teachableLearnset = sKecleonTeachableLearnset, }, #endif //P_FAMILY_KECLEON @@ -6166,52 +7116,50 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Shuppet, 40, 40), + .frontPic = gMonFrontPic_Shuppet, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Shuppet, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 14, - BACK_PIC(Shuppet, 56, 56), + .backPic = gMonBackPic_Shuppet, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Shuppet), - ICON(Shuppet, 0), + .palette = gMonPalette_Shuppet, + .shinyPalette = gMonShinyPalette_Shuppet, + .iconSprite = gMonIcon_Shuppet, + .iconPalIndex = 0, FOOTPRINT(Shuppet) - LEARNSETS(Shuppet), + .levelUpLearnset = sShuppetLevelUpLearnset, + .teachableLearnset = sShuppetTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_BANETTE}), }, -#define BANETTE_MISC_INFO \ - .types = MON_TYPES(TYPE_GHOST), \ - .catchRate = 45, \ - .evYield_Attack = 2, \ - .itemRare = ITEM_SPELL_TAG, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = 35, \ - .growthRate = GROWTH_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), \ - .bodyColor = BODY_COLOR_BLACK, \ - .speciesName = _("Banette"), \ - .natDexNum = NATIONAL_DEX_BANETTE, \ - .categoryName = _("Marionette"), \ - FOOTPRINT(Banette) \ - LEARNSETS(Banette), \ - .formSpeciesIdTable = sBanetteFormSpeciesIdTable, \ - .formChangeTable = sBanetteFormChangeTable - [SPECIES_BANETTE] = { - BANETTE_MISC_INFO, .baseHP = 64, .baseAttack = 115, .baseDefense = 65, .baseSpeed = 65, .baseSpAttack = 83, .baseSpDefense = 63, + .types = MON_TYPES(TYPE_GHOST), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 159 : 179, + .evYield_Attack = 2, + .itemRare = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), .abilities = { ABILITY_INSOMNIA, ABILITY_FRISK, ABILITY_CURSED_BODY }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Banette"), .cryId = CRY_BANETTE, + .natDexNum = NATIONAL_DEX_BANETTE, + .categoryName = _("Marionette"), .height = 11, .weight = 125, .description = COMPOUND_STRING( @@ -6223,30 +7171,51 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 9, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Banette, 56, 56), + .frontPic = gMonFrontPic_Banette, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Banette, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, - BACK_PIC(Banette, 64, 64), + .backPic = gMonBackPic_Banette, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Banette), - ICON(Banette, 0), + .palette = gMonPalette_Banette, + .shinyPalette = gMonShinyPalette_Banette, + .iconSprite = gMonIcon_Banette, + .iconPalIndex = 0, + FOOTPRINT(Banette) + .levelUpLearnset = sBanetteLevelUpLearnset, + .teachableLearnset = sBanetteTeachableLearnset, + .formSpeciesIdTable = sBanetteFormSpeciesIdTable, + .formChangeTable = sBanetteFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_BANETTE_MEGA] = { - BANETTE_MISC_INFO, .baseHP = 64, .baseAttack = 165, .baseDefense = 75, .baseSpeed = 75, .baseSpAttack = 93, .baseSpDefense = 83, + .types = MON_TYPES(TYPE_GHOST), + .catchRate = 45, .expYield = 194, + .evYield_Attack = 2, + .itemRare = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), .abilities = { ABILITY_PRANKSTER, ABILITY_PRANKSTER, ABILITY_PRANKSTER }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Banette"), .cryId = CRY_BANETTE_MEGA, + .natDexNum = NATIONAL_DEX_BANETTE, + .categoryName = _("Marionette"), .height = 12, .weight = 130, .description = COMPOUND_STRING( @@ -6257,17 +7226,26 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 9, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(BanetteMega, 64, 64), + .frontPic = gMonFrontPic_BanetteMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_BanetteMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 5, - BACK_PIC(BanetteMega, 64, 64), + .backPic = gMonBackPic_BanetteMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(BanetteMega), - ICON(BanetteMega, 0), + .palette = gMonPalette_BanetteMega, + .shinyPalette = gMonShinyPalette_BanetteMega, + .iconSprite = gMonIcon_BanetteMega, + .iconPalIndex = 0, + FOOTPRINT(Banette) .isMegaEvolution = TRUE, + .levelUpLearnset = sBanetteLevelUpLearnset, + .teachableLearnset = sBanetteTeachableLearnset, + .formSpeciesIdTable = sBanetteFormSpeciesIdTable, + .formChangeTable = sBanetteFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_SHUPPET @@ -6309,18 +7287,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Duskull, 40, 48), + .frontPic = gMonFrontPic_Duskull, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Duskull, .frontAnimId = ANIM_ZIGZAG_FAST, .enemyMonElevation = 13, - BACK_PIC(Duskull, 56, 56), + .backPic = gMonBackPic_Duskull, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Duskull), - ICON(Duskull, 0), + .palette = gMonPalette_Duskull, + .shinyPalette = gMonShinyPalette_Duskull, + .iconSprite = gMonIcon_Duskull, + .iconPalIndex = 0, FOOTPRINT(Duskull) - LEARNSETS(Duskull), + .levelUpLearnset = sDuskullLevelUpLearnset, + .teachableLearnset = sDuskullTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_DUSCLOPS}), }, @@ -6360,18 +7343,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 3, .trainerScale = 299, .trainerOffset = 1, - FRONT_PIC(Dusclops, 64, 64), + .frontPic = gMonFrontPic_Dusclops, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Dusclops, .frontAnimId = ANIM_H_VIBRATE, .frontAnimDelay = 30, - BACK_PIC(Dusclops, 64, 64), + .backPic = gMonBackPic_Dusclops, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Dusclops), - ICON(Dusclops, 0), + .palette = gMonPalette_Dusclops, + .shinyPalette = gMonShinyPalette_Dusclops, + .iconSprite = gMonIcon_Dusclops, + .iconPalIndex = 0, FOOTPRINT(Dusclops) - LEARNSETS(Dusclops), + .levelUpLearnset = sDusclopsLevelUpLearnset, + .teachableLearnset = sDusclopsTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}, {EVO_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}), }, @@ -6419,18 +7407,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 348, .trainerOffset = 6, - FRONT_PIC(Dusknoir, 64, 64), + .frontPic = gMonFrontPic_Dusknoir, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Dusknoir, .frontAnimId = ANIM_H_SLIDE, .enemyMonElevation = 6, - BACK_PIC(Dusknoir, 64, 56), + .backPic = gMonBackPic_Dusknoir, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Dusknoir), - ICON(Dusknoir, 2), + .palette = gMonPalette_Dusknoir, + .shinyPalette = gMonShinyPalette_Dusknoir, + .iconSprite = gMonIcon_Dusknoir, + .iconPalIndex = 2, FOOTPRINT(Dusknoir) - LEARNSETS(Dusknoir), + .levelUpLearnset = sDusknoirLevelUpLearnset, + .teachableLearnset = sDusknoirTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_DUSKULL @@ -6470,17 +7463,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 344, .trainerOffset = 7, - FRONT_PIC(Tropius, 64, 64), + .frontPic = gMonFrontPic_Tropius, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Tropius, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Tropius, 56, 64), + .backPic = gMonBackPic_Tropius, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Tropius), - ICON(Tropius, 1), + .palette = gMonPalette_Tropius, + .shinyPalette = gMonShinyPalette_Tropius, + .iconSprite = gMonIcon_Tropius, + .iconPalIndex = 1, FOOTPRINT(Tropius) - LEARNSETS(Tropius), + .levelUpLearnset = sTropiusLevelUpLearnset, + .teachableLearnset = sTropiusTeachableLearnset, }, #endif //P_FAMILY_TROPIUS @@ -6521,35 +7519,34 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Chingling, 40, 40), + .frontPic = gMonFrontPic_Chingling, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Chingling, .frontAnimId = ANIM_H_SLIDE_WOBBLE, - BACK_PIC(Chingling, 48, 48), + .backPic = gMonBackPic_Chingling, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 13, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Chingling), - ICON(Chingling, 1), + .palette = gMonPalette_Chingling, + .shinyPalette = gMonShinyPalette_Chingling, + .iconSprite = gMonIcon_Chingling, + .iconPalIndex = 1, FOOTPRINT(Chingling) - LEARNSETS(Chingling), + .levelUpLearnset = sChinglingLevelUpLearnset, + .teachableLearnset = sChinglingTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP_NIGHT, 0, SPECIES_CHIMECHO}), }, #endif //P_GEN_4_CROSS_EVOS [SPECIES_CHIMECHO] = { + .baseHP = P_UPDATED_STATS >= GEN_7 ? 75 : 65, .baseAttack = 50, + .baseDefense = P_UPDATED_STATS >= GEN_7 ? 80 : 70, .baseSpeed = 65, .baseSpAttack = 95, - #if P_UPDATED_STATS >= GEN_7 - .baseHP = 75, - .baseDefense = 80, - .baseSpDefense = 90, - #else - .baseHP = 65, - .baseDefense = 70, - .baseSpDefense = 80, - #endif + .baseSpDefense = P_UPDATED_STATS >= GEN_7 ? 90 : 80, .types = MON_TYPES(TYPE_PSYCHIC), .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_7 @@ -6584,105 +7581,138 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Chimecho, 48, 48), + .frontPic = gMonFrontPic_Chimecho, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Chimecho, .frontAnimId = ANIM_H_SLIDE_WOBBLE, .enemyMonElevation = 16, - BACK_PIC(Chimecho, 64, 56), + .backPic = gMonBackPic_Chimecho, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Chimecho), - ICON(Chimecho, 0), + .palette = gMonPalette_Chimecho, + .shinyPalette = gMonShinyPalette_Chimecho, + .iconSprite = gMonIcon_Chimecho, + .iconPalIndex = 0, FOOTPRINT(Chimecho) - LEARNSETS(Chimecho), + .levelUpLearnset = sChimechoLevelUpLearnset, + .teachableLearnset = sChimechoTeachableLearnset, }, #endif //P_FAMILY_CHIMECHO #if P_FAMILY_ABSOL -#define ABSOL_MISC_INFO \ - .types = MON_TYPES(TYPE_DARK), \ - .catchRate = 30, \ - .evYield_Attack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = 35, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .bodyColor = BODY_COLOR_WHITE, \ - .noFlip = TRUE, \ - .speciesName = _("Absol"), \ - .natDexNum = NATIONAL_DEX_ABSOL, \ - .categoryName = _("Disaster"), \ - .height = 12, \ - .pokemonScale = 301, \ - .pokemonOffset = 3, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Absol) \ - LEARNSETS(Absol), \ - .formSpeciesIdTable = sAbsolFormSpeciesIdTable, \ - .formChangeTable = sAbsolFormChangeTable - [SPECIES_ABSOL] = { - ABSOL_MISC_INFO, .baseHP = 65, .baseAttack = 130, .baseDefense = 60, .baseSpeed = 75, .baseSpAttack = 75, .baseSpDefense = 60, + .types = MON_TYPES(TYPE_DARK), + .catchRate = 30, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 163 : 174, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_PRESSURE, ABILITY_SUPER_LUCK, ABILITY_JUSTIFIED }, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = TRUE, + .speciesName = _("Absol"), .cryId = CRY_ABSOL, + .natDexNum = NATIONAL_DEX_ABSOL, + .categoryName = _("Disaster"), + .height = 12, .weight = 470, .description = COMPOUND_STRING( "It sharply senses even subtle changes in\n" "the sky and the land to predict natural\n" "disasters. It is a long-lived Pokémon that\n" "has a life-span of 100 years."), - FRONT_PIC(Absol, 56, 64), + .pokemonScale = 301, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Absol, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Absol, .frontAnimId = ANIM_CIRCULAR_VIBRATE, .frontAnimDelay = 45, - BACK_PIC(Absol, 64, 64), + .backPic = gMonBackPic_Absol, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Absol), - ICON(Absol, 0), + .palette = gMonPalette_Absol, + .shinyPalette = gMonShinyPalette_Absol, + .iconSprite = gMonIcon_Absol, + .iconPalIndex = 0, + FOOTPRINT(Absol) + .levelUpLearnset = sAbsolLevelUpLearnset, + .teachableLearnset = sAbsolTeachableLearnset, + .formSpeciesIdTable = sAbsolFormSpeciesIdTable, + .formChangeTable = sAbsolFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_ABSOL_MEGA] = { - ABSOL_MISC_INFO, .baseHP = 65, .baseAttack = 150, .baseDefense = 60, .baseSpeed = 115, .baseSpAttack = 115, .baseSpDefense = 60, + .types = MON_TYPES(TYPE_DARK), + .catchRate = 30, .expYield = 198, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE }, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = TRUE, + .speciesName = _("Absol"), .cryId = CRY_ABSOL_MEGA, + .natDexNum = NATIONAL_DEX_ABSOL, + .categoryName = _("Disaster"), + .height = 12, .weight = 490, .description = COMPOUND_STRING( "As the energy of Mega Evolution fills it,\n" "its fur bristles. What you see on its back\n" "are not true wings, and this Pokémon isn't\n" "able to fly."), - FRONT_PIC(AbsolMega, 64, 64), + .pokemonScale = 301, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_AbsolMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_AbsolMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(AbsolMega, 64, 64), + .backPic = gMonBackPic_AbsolMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(AbsolMega), - ICON(AbsolMega, 0), + .palette = gMonPalette_AbsolMega, + .shinyPalette = gMonShinyPalette_AbsolMega, + .iconSprite = gMonIcon_AbsolMega, + .iconPalIndex = 0, + FOOTPRINT(Absol) .isMegaEvolution = TRUE, + .levelUpLearnset = sAbsolLevelUpLearnset, + .teachableLearnset = sAbsolTeachableLearnset, + .formSpeciesIdTable = sAbsolFormSpeciesIdTable, + .formChangeTable = sAbsolFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_ABSOL @@ -6723,52 +7753,50 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Snorunt, 32, 40), + .frontPic = gMonFrontPic_Snorunt, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Snorunt, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, .frontAnimDelay = 20, - BACK_PIC(Snorunt, 56, 48), + .backPic = gMonBackPic_Snorunt, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Snorunt), - ICON(Snorunt, 2), + .palette = gMonPalette_Snorunt, + .shinyPalette = gMonShinyPalette_Snorunt, + .iconSprite = gMonIcon_Snorunt, + .iconPalIndex = 2, FOOTPRINT(Snorunt) - LEARNSETS(Snorunt), + .levelUpLearnset = sSnoruntLevelUpLearnset, + .teachableLearnset = sSnoruntTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_GLALIE}, {EVO_ITEM_FEMALE, ITEM_DAWN_STONE, SPECIES_FROSLASS}), }, -#define GLALIE_MISC_INFO \ - .types = MON_TYPES(TYPE_ICE), \ - .catchRate = 75, \ - .evYield_HP = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_MINERAL),\ - .bodyColor = BODY_COLOR_GRAY, \ - .speciesName = _("Glalie"), \ - .natDexNum = NATIONAL_DEX_GLALIE, \ - .categoryName = _("Face"), \ - FOOTPRINT(Glalie) \ - LEARNSETS(Glalie), \ - .formSpeciesIdTable = sGlalieFormSpeciesIdTable, \ - .formChangeTable = sGlalieFormChangeTable - [SPECIES_GLALIE] = { - GLALIE_MISC_INFO, .baseHP = 80, .baseAttack = 80, .baseDefense = 80, .baseSpeed = 80, .baseSpAttack = 80, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_ICE), + .catchRate = 75, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 168 : 187, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_MINERAL), .abilities = { ABILITY_INNER_FOCUS, ABILITY_ICE_BODY, ABILITY_MOODY }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Glalie"), .cryId = CRY_GLALIE, + .natDexNum = NATIONAL_DEX_GLALIE, + .categoryName = _("Face"), .height = 15, .weight = 2565, .description = COMPOUND_STRING( @@ -6780,31 +7808,51 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 3, .trainerScale = 344, .trainerOffset = 0, - FRONT_PIC(Glalie, 56, 56), + .frontPic = gMonFrontPic_Glalie, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Glalie, .frontAnimId = ANIM_ZIGZAG_FAST, .enemyMonElevation = 12, - BACK_PIC(Glalie, 64, 48), + .backPic = gMonBackPic_Glalie, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Glalie), - ICON(Glalie, 0), + .palette = gMonPalette_Glalie, + .shinyPalette = gMonShinyPalette_Glalie, + .iconSprite = gMonIcon_Glalie, + .iconPalIndex = 0, + FOOTPRINT(Glalie) + .levelUpLearnset = sGlalieLevelUpLearnset, + .teachableLearnset = sGlalieTeachableLearnset, + .formSpeciesIdTable = sGlalieFormSpeciesIdTable, + .formChangeTable = sGlalieFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_GLALIE_MEGA] = { - GLALIE_MISC_INFO, .baseHP = 80, .baseAttack = 120, .baseDefense = 80, .baseSpeed = 100, .baseSpAttack = 120, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_ICE), + .catchRate = 75, .expYield = 203, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_MINERAL), .abilities = { ABILITY_REFRIGERATE, ABILITY_REFRIGERATE, ABILITY_REFRIGERATE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Glalie"), .cryId = CRY_GLALIE_MEGA, + .natDexNum = NATIONAL_DEX_GLALIE, + .categoryName = _("Face"), .height = 21, .weight = 3502, .description = COMPOUND_STRING( @@ -6815,17 +7863,26 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 3, .trainerScale = 344, .trainerOffset = 0, - FRONT_PIC(GlalieMega, 56, 64), + .frontPic = gMonFrontPic_GlalieMega, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_GlalieMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 8, - BACK_PIC(GlalieMega, 64, 48), + .backPic = gMonBackPic_GlalieMega, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(GlalieMega), - ICON(GlalieMega, 0), + .palette = gMonPalette_GlalieMega, + .shinyPalette = gMonShinyPalette_GlalieMega, + .iconSprite = gMonIcon_GlalieMega, + .iconPalIndex = 0, + FOOTPRINT(Glalie) .isMegaEvolution = TRUE, + .levelUpLearnset = sGlalieLevelUpLearnset, + .teachableLearnset = sGlalieTeachableLearnset, + .formSpeciesIdTable = sGlalieFormSpeciesIdTable, + .formChangeTable = sGlalieFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS @@ -6864,18 +7921,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Froslass, 48, 48), + .frontPic = gMonFrontPic_Froslass, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Froslass, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 7, - BACK_PIC(Froslass, 64, 64), + .backPic = gMonBackPic_Froslass, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Froslass), - ICON(Froslass, 0), + .palette = gMonPalette_Froslass, + .shinyPalette = gMonShinyPalette_Froslass, + .iconSprite = gMonIcon_Froslass, + .iconPalIndex = 0, FOOTPRINT(Froslass) - LEARNSETS(Froslass), + .levelUpLearnset = sFroslassLevelUpLearnset, + .teachableLearnset = sFroslassTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_SNORUNT @@ -6915,18 +7977,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Spheal, 40, 48), + .frontPic = gMonFrontPic_Spheal, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Spheal, .frontAnimId = ANIM_SPIN_LONG, .frontAnimDelay = 15, - BACK_PIC(Spheal, 48, 40), + .backPic = gMonBackPic_Spheal, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 15, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Spheal), - ICON(Spheal, 2), + .palette = gMonPalette_Spheal, + .shinyPalette = gMonShinyPalette_Spheal, + .iconSprite = gMonIcon_Spheal, + .iconPalIndex = 2, FOOTPRINT(Spheal) - LEARNSETS(Spheal), + .levelUpLearnset = sSphealLevelUpLearnset, + .teachableLearnset = sSphealTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_SEALEO}), }, @@ -6964,17 +8031,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Sealeo, 56, 48), + .frontPic = gMonFrontPic_Sealeo, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Sealeo, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Sealeo, 64, 48), + .backPic = gMonBackPic_Sealeo, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Sealeo), - ICON(Sealeo, 2), + .palette = gMonPalette_Sealeo, + .shinyPalette = gMonShinyPalette_Sealeo, + .iconSprite = gMonIcon_Sealeo, + .iconPalIndex = 2, FOOTPRINT(Sealeo) - LEARNSETS(Sealeo), + .levelUpLearnset = sSealeoLevelUpLearnset, + .teachableLearnset = sSealeoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 44, SPECIES_WALREIN}), }, @@ -7018,17 +8090,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Walrein, 64, 64), + .frontPic = gMonFrontPic_Walrein, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Walrein, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Walrein, 64, 64), + .backPic = gMonBackPic_Walrein, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Walrein), - ICON(Walrein, 0), + .palette = gMonPalette_Walrein, + .shinyPalette = gMonShinyPalette_Walrein, + .iconSprite = gMonIcon_Walrein, + .iconPalIndex = 0, FOOTPRINT(Walrein) - LEARNSETS(Walrein), + .levelUpLearnset = sWalreinLevelUpLearnset, + .teachableLearnset = sWalreinTeachableLearnset, }, #endif //P_FAMILY_SPHEAL @@ -7069,17 +8146,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 22, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Clamperl, 40, 48), + .frontPic = gMonFrontPic_Clamperl, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Clamperl, .frontAnimId = ANIM_TWIST, - BACK_PIC(Clamperl, 56, 40), + .backPic = gMonBackPic_Clamperl, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Clamperl), - ICON(Clamperl, 0), + .palette = gMonPalette_Clamperl, + .shinyPalette = gMonShinyPalette_Clamperl, + .iconSprite = gMonIcon_Clamperl, + .iconPalIndex = 0, FOOTPRINT(Clamperl) - LEARNSETS(Clamperl), + .levelUpLearnset = sClamperlLevelUpLearnset, + .teachableLearnset = sClamperlTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}, {EVO_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, @@ -7122,17 +8204,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Huntail, 64, 64), + .frontPic = gMonFrontPic_Huntail, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Huntail, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Huntail, 64, 56), + .backPic = gMonBackPic_Huntail, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Huntail), - ICON(Huntail, 0), + .palette = gMonPalette_Huntail, + .shinyPalette = gMonShinyPalette_Huntail, + .iconSprite = gMonIcon_Huntail, + .iconPalIndex = 0, FOOTPRINT(Huntail) - LEARNSETS(Huntail), + .levelUpLearnset = sHuntailLevelUpLearnset, + .teachableLearnset = sHuntailTeachableLearnset, }, [SPECIES_GOREBYSS] = @@ -7170,17 +8257,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 5, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Gorebyss, 64, 56), + .frontPic = gMonFrontPic_Gorebyss, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Gorebyss, .frontAnimId = ANIM_V_SLIDE_WOBBLE, - BACK_PIC(Gorebyss, 64, 56), + .backPic = gMonBackPic_Gorebyss, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Gorebyss), - ICON(Gorebyss, 0), + .palette = gMonPalette_Gorebyss, + .shinyPalette = gMonShinyPalette_Gorebyss, + .iconSprite = gMonIcon_Gorebyss, + .iconPalIndex = 0, FOOTPRINT(Gorebyss) - LEARNSETS(Gorebyss), + .levelUpLearnset = sGorebyssLevelUpLearnset, + .teachableLearnset = sGorebyssTeachableLearnset, }, #endif //P_FAMILY_CLAMPERL @@ -7221,19 +8313,26 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Relicanth, 56, 56), - FRONT_PIC_FEMALE(Relicanth, 56, 56), + .frontPic = gMonFrontPic_Relicanth, + .frontPicFemale = gMonFrontPic_RelicanthF, + .frontPicSize = MON_COORDS_SIZE(56, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Relicanth, .frontAnimId = ANIM_TIP_MOVE_FORWARD, - BACK_PIC(Relicanth, 64, 40), - BACK_PIC_FEMALE(Relicanth, 64, 40), + .backPic = gMonBackPic_Relicanth, + .backPicFemale = gMonBackPic_RelicanthF, + .backPicSize = MON_COORDS_SIZE(64, 40), + .backPicSizeFemale = MON_COORDS_SIZE(64, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Relicanth), - ICON(Relicanth, 2), + .palette = gMonPalette_Relicanth, + .shinyPalette = gMonShinyPalette_Relicanth, + .iconSprite = gMonIcon_Relicanth, + .iconPalIndex = 2, FOOTPRINT(Relicanth) - LEARNSETS(Relicanth), + .levelUpLearnset = sRelicanthLevelUpLearnset, + .teachableLearnset = sRelicanthTeachableLearnset, }, #endif //P_FAMILY_RELICANTH @@ -7273,17 +8372,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 2, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Luvdisc, 32, 40), + .frontPic = gMonFrontPic_Luvdisc, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Luvdisc, .frontAnimId = ANIM_H_SLIDE_WOBBLE, - BACK_PIC(Luvdisc, 40, 48), + .backPic = gMonBackPic_Luvdisc, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_H_SPRING_REPEATED, - PALETTES(Luvdisc), - ICON(Luvdisc, 0), + .palette = gMonPalette_Luvdisc, + .shinyPalette = gMonShinyPalette_Luvdisc, + .iconSprite = gMonIcon_Luvdisc, + .iconPalIndex = 0, FOOTPRINT(Luvdisc) - LEARNSETS(Luvdisc), + .levelUpLearnset = sLuvdiscLevelUpLearnset, + .teachableLearnset = sLuvdiscTeachableLearnset, }, #endif //P_FAMILY_LUVDISC @@ -7323,17 +8427,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 18, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Bagon, 32, 48), + .frontPic = gMonFrontPic_Bagon, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Bagon, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Bagon, 48, 56), + .backPic = gMonBackPic_Bagon, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Bagon), - ICON(Bagon, 0), + .palette = gMonPalette_Bagon, + .shinyPalette = gMonShinyPalette_Bagon, + .iconSprite = gMonIcon_Bagon, + .iconPalIndex = 0, FOOTPRINT(Bagon) - LEARNSETS(Bagon), + .levelUpLearnset = sBagonLevelUpLearnset, + .teachableLearnset = sBagonTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_SHELGON}), }, @@ -7372,48 +8481,35 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Shelgon, 48, 48), + .frontPic = gMonFrontPic_Shelgon, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Shelgon, .frontAnimId = ANIM_V_SLIDE, - BACK_PIC(Shelgon, 64, 40), + .backPic = gMonBackPic_Shelgon, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Shelgon), - ICON(Shelgon, 2), + .palette = gMonPalette_Shelgon, + .shinyPalette = gMonShinyPalette_Shelgon, + .iconSprite = gMonIcon_Shelgon, + .iconPalIndex = 2, FOOTPRINT(Shelgon) - LEARNSETS(Shelgon), + .levelUpLearnset = sShelgonLevelUpLearnset, + .teachableLearnset = sShelgonTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_SALAMENCE}), }, -#define SALAMENCE_MISC_INFO \ - .types = MON_TYPES(TYPE_DRAGON, TYPE_FLYING), \ - .catchRate = 45, \ - .evYield_Attack = 3, \ - .itemRare = ITEM_DRAGON_FANG, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 40, \ - .friendship = 35, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_DRAGON), \ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Salamence"), \ - .natDexNum = NATIONAL_DEX_SALAMENCE, \ - .categoryName = _("Dragon"), \ - FOOTPRINT(Salamence) \ - LEARNSETS(Salamence), \ - .formSpeciesIdTable = sSalamenceFormSpeciesIdTable, \ - .formChangeTable = sSalamenceFormChangeTable - [SPECIES_SALAMENCE] = { - SALAMENCE_MISC_INFO, .baseHP = 95, .baseAttack = 135, .baseDefense = 80, .baseSpeed = 100, .baseSpAttack = 110, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_DRAGON, TYPE_FLYING), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 300, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -7421,8 +8517,19 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 218, #endif + .evYield_Attack = 3, + .itemRare = ITEM_DRAGON_FANG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_DRAGON), .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_MOXIE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Salamence"), .cryId = CRY_SALAMENCE, + .natDexNum = NATIONAL_DEX_SALAMENCE, + .categoryName = _("Dragon"), .height = 15, .weight = 1026, .description = COMPOUND_STRING( @@ -7434,31 +8541,52 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Salamence, 64, 64), + .frontPic = gMonFrontPic_Salamence, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Salamence, .frontAnimId = ANIM_H_SHAKE, .frontAnimDelay = 70, - BACK_PIC(Salamence, 56, 64), + .backPic = gMonBackPic_Salamence, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Salamence), - ICON(Salamence, 0), + .palette = gMonPalette_Salamence, + .shinyPalette = gMonShinyPalette_Salamence, + .iconSprite = gMonIcon_Salamence, + .iconPalIndex = 0, + FOOTPRINT(Salamence) + .levelUpLearnset = sSalamenceLevelUpLearnset, + .teachableLearnset = sSalamenceTeachableLearnset, + .formSpeciesIdTable = sSalamenceFormSpeciesIdTable, + .formChangeTable = sSalamenceFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_SALAMENCE_MEGA] = { - SALAMENCE_MISC_INFO, .baseHP = 95, .baseAttack = 145, .baseDefense = 130, .baseSpeed = 120, .baseSpAttack = 120, .baseSpDefense = 90, + .types = MON_TYPES(TYPE_DRAGON, TYPE_FLYING), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 350 : 315, + .evYield_Attack = 3, + .itemRare = ITEM_DRAGON_FANG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_DRAGON), .abilities = { ABILITY_AERILATE, ABILITY_AERILATE, ABILITY_AERILATE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Salamence"), .cryId = CRY_SALAMENCE_MEGA, + .natDexNum = NATIONAL_DEX_SALAMENCE, + .categoryName = _("Dragon"), .height = 18, .weight = 1126, .description = COMPOUND_STRING( @@ -7470,16 +8598,25 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(SalamenceMega, 64, 64), + .frontPic = gMonFrontPic_SalamenceMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_SalamenceMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SalamenceMega, 56, 64), + .backPic = gMonBackPic_SalamenceMega, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(SalamenceMega), - ICON(SalamenceMega, 0), + .palette = gMonPalette_SalamenceMega, + .shinyPalette = gMonShinyPalette_SalamenceMega, + .iconSprite = gMonIcon_SalamenceMega, + .iconPalIndex = 0, + FOOTPRINT(Salamence) .isMegaEvolution = TRUE, + .levelUpLearnset = sSalamenceLevelUpLearnset, + .teachableLearnset = sSalamenceTeachableLearnset, + .formSpeciesIdTable = sSalamenceFormSpeciesIdTable, + .formChangeTable = sSalamenceFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_BAGON @@ -7520,19 +8657,24 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -1, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Beldum, 48, 40), + .frontPic = gMonFrontPic_Beldum, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Beldum, .frontAnimId = ANIM_H_SHAKE, .enemyMonElevation = 8, - BACK_PIC(Beldum, 64, 48), + .backPic = gMonBackPic_Beldum, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Beldum), - ICON(Beldum, 0), + .palette = gMonPalette_Beldum, + .shinyPalette = gMonShinyPalette_Beldum, + .iconSprite = gMonIcon_Beldum, + .iconPalIndex = 0, FOOTPRINT(Beldum) - LEARNSETS(Beldum), .tmIlliterate = TRUE, + .levelUpLearnset = sBeldumLevelUpLearnset, + .teachableLearnset = sBeldumTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_METANG}), }, @@ -7571,48 +8713,35 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 6, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Metang, 64, 48), + .frontPic = gMonFrontPic_Metang, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Metang, .frontAnimId = ANIM_V_SLIDE, - BACK_PIC(Metang, 64, 40), + .backPic = gMonBackPic_Metang, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Metang), - ICON(Metang, 0), + .palette = gMonPalette_Metang, + .shinyPalette = gMonShinyPalette_Metang, + .iconSprite = gMonIcon_Metang, + .iconPalIndex = 0, FOOTPRINT(Metang) - LEARNSETS(Metang), + .levelUpLearnset = sMetangLevelUpLearnset, + .teachableLearnset = sMetangTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_METAGROSS}), }, -#define METAGROSS_MISC_INFO \ - .types = MON_TYPES(TYPE_STEEL, TYPE_PSYCHIC), \ - .catchRate = 3, \ - .evYield_Defense = 3, \ - .itemRare = ITEM_METAL_COAT, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 40, \ - .friendship = 35, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), \ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Metagross"), \ - .natDexNum = NATIONAL_DEX_METAGROSS, \ - .categoryName = _("Iron Leg"), \ - FOOTPRINT(Metagross) \ - LEARNSETS(Metagross), \ - .formSpeciesIdTable = sMetagrossFormSpeciesIdTable, \ - .formChangeTable = sMetagrossFormChangeTable - [SPECIES_METAGROSS] = { - METAGROSS_MISC_INFO, .baseHP = 80, .baseAttack = 135, .baseDefense = 130, .baseSpeed = 70, .baseSpAttack = 95, .baseSpDefense = 90, + .types = MON_TYPES(TYPE_STEEL, TYPE_PSYCHIC), + .catchRate = 3, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 300, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -7620,8 +8749,19 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 210, #endif + .evYield_Defense = 3, + .itemRare = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_LIGHT_METAL }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Metagross"), .cryId = CRY_METAGROSS, + .natDexNum = NATIONAL_DEX_METAGROSS, + .categoryName = _("Iron Leg"), .height = 16, .weight = 5500, .description = COMPOUND_STRING( @@ -7633,30 +8773,51 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 4, .trainerScale = 447, .trainerOffset = 9, - FRONT_PIC(Metagross, 64, 48), + .frontPic = gMonFrontPic_Metagross, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Metagross, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Metagross, 64, 56), + .backPic = gMonBackPic_Metagross, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Metagross), - ICON(Metagross, 0), + .palette = gMonPalette_Metagross, + .shinyPalette = gMonShinyPalette_Metagross, + .iconSprite = gMonIcon_Metagross, + .iconPalIndex = 0, + FOOTPRINT(Metagross) + .levelUpLearnset = sMetagrossLevelUpLearnset, + .teachableLearnset = sMetagrossTeachableLearnset, + .formSpeciesIdTable = sMetagrossFormSpeciesIdTable, + .formChangeTable = sMetagrossFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_METAGROSS_MEGA] = { - METAGROSS_MISC_INFO, .baseHP = 80, .baseAttack = 145, .baseDefense = 150, .baseSpeed = 110, .baseSpAttack = 105, .baseSpDefense = 110, + .types = MON_TYPES(TYPE_STEEL, TYPE_PSYCHIC), + .catchRate = 3, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 350 : 315, + .evYield_Defense = 3, + .itemRare = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), .abilities = { ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Metagross"), .cryId = CRY_METAGROSS_MEGA, + .natDexNum = NATIONAL_DEX_METAGROSS, + .categoryName = _("Iron Leg"), .height = 25, .weight = 9429, .description = COMPOUND_STRING( @@ -7667,17 +8828,26 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 4, .trainerScale = 447, .trainerOffset = 9, - FRONT_PIC(MetagrossMega, 64, 64), + .frontPic = gMonFrontPic_MetagrossMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_MetagrossMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 4, - BACK_PIC(MetagrossMega, 64, 56), + .backPic = gMonBackPic_MetagrossMega, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(MetagrossMega), - ICON(MetagrossMega, 0), + .palette = gMonPalette_MetagrossMega, + .shinyPalette = gMonShinyPalette_MetagrossMega, + .iconSprite = gMonIcon_MetagrossMega, + .iconPalIndex = 0, + FOOTPRINT(Metagross) .isMegaEvolution = TRUE, + .levelUpLearnset = sMetagrossLevelUpLearnset, + .teachableLearnset = sMetagrossTeachableLearnset, + .formSpeciesIdTable = sMetagrossFormSpeciesIdTable, + .formChangeTable = sMetagrossFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_BELDUM @@ -7709,7 +8879,6 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_STURDY }, .bodyColor = BODY_COLOR_BROWN, .noFlip = TRUE, - .isLegendary = TRUE, .speciesName = _("Regirock"), .cryId = CRY_REGIROCK, .natDexNum = NATIONAL_DEX_REGIROCK, @@ -7725,17 +8894,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 2, .trainerScale = 309, .trainerOffset = 1, - FRONT_PIC(Regirock, 64, 64), + .frontPic = gMonFrontPic_Regirock, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Regirock, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, - BACK_PIC(Regirock, 64, 56), + .backPic = gMonBackPic_Regirock, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 10, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Regirock), - ICON(Regirock, 2), + .palette = gMonPalette_Regirock, + .shinyPalette = gMonShinyPalette_Regirock, + .iconSprite = gMonIcon_Regirock, + .iconPalIndex = 2, FOOTPRINT(Regirock) - LEARNSETS(Regirock), + .isLegendary = TRUE, + .levelUpLearnset = sRegirockLevelUpLearnset, + .teachableLearnset = sRegirockTeachableLearnset, }, #endif //P_FAMILY_REGIROCK @@ -7765,7 +8940,6 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_ICE_BODY }, .bodyColor = BODY_COLOR_BLUE, - .isLegendary = TRUE, .speciesName = _("Regice"), .cryId = CRY_REGICE, .natDexNum = NATIONAL_DEX_REGICE, @@ -7781,17 +8955,23 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 301, .trainerOffset = 2, - FRONT_PIC(Regice, 64, 64), + .frontPic = gMonFrontPic_Regice, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Regice, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(Regice, 64, 48), + .backPic = gMonBackPic_Regice, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Regice), - ICON(Regice, 0), + .palette = gMonPalette_Regice, + .shinyPalette = gMonShinyPalette_Regice, + .iconSprite = gMonIcon_Regice, + .iconPalIndex = 0, FOOTPRINT(Regice) - LEARNSETS(Regice), + .isLegendary = TRUE, + .levelUpLearnset = sRegiceLevelUpLearnset, + .teachableLearnset = sRegiceTeachableLearnset, }, #endif //P_FAMILY_REGICE @@ -7822,7 +9002,6 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_LIGHT_METAL }, .bodyColor = BODY_COLOR_GRAY, - .isLegendary = TRUE, .speciesName = _("Registeel"), .cryId = CRY_REGISTEEL, .natDexNum = NATIONAL_DEX_REGISTEEL, @@ -7838,48 +9017,37 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 359, .trainerOffset = 6, - FRONT_PIC(Registeel, 64, 56), + .frontPic = gMonFrontPic_Registeel, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Registeel, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Registeel, 64, 48), + .backPic = gMonBackPic_Registeel, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Registeel), - ICON(Registeel, 2), + .palette = gMonPalette_Registeel, + .shinyPalette = gMonShinyPalette_Registeel, + .iconSprite = gMonIcon_Registeel, + .iconPalIndex = 2, FOOTPRINT(Registeel) - LEARNSETS(Registeel), + .isLegendary = TRUE, + .levelUpLearnset = sRegisteelLevelUpLearnset, + .teachableLearnset = sRegisteelTeachableLearnset, }, #endif //P_FAMILY_REGISTEEL #if P_FAMILY_LATIAS -#define LATIAS_MISC_INFO \ - .types = MON_TYPES(TYPE_DRAGON, TYPE_PSYCHIC), \ - .catchRate = 3, \ - .evYield_SpDefense = 3, \ - .genderRatio = MON_FEMALE, \ - .eggCycles = 120, \ - .friendship = 90, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .speciesName = _("Latias"), \ - .natDexNum = NATIONAL_DEX_LATIAS, \ - .categoryName = _("Eon"), \ - FOOTPRINT(Latias) \ - LEARNSETS(Latias), \ - .formSpeciesIdTable = sLatiasFormSpeciesIdTable, \ - .formChangeTable = sLatiasFormChangeTable, \ - .isLegendary = TRUE - [SPECIES_LATIAS] = { - LATIAS_MISC_INFO, .baseHP = 80, .baseAttack = 80, .baseDefense = 90, .baseSpeed = 110, .baseSpAttack = 110, .baseSpDefense = 130, + .types = MON_TYPES(TYPE_DRAGON, TYPE_PSYCHIC), + .catchRate = 3, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 300, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -7887,9 +9055,18 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 211, #endif + .evYield_SpDefense = 3, + .genderRatio = MON_FEMALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Latias"), .cryId = CRY_LATIAS, + .natDexNum = NATIONAL_DEX_LATIAS, + .categoryName = _("Eon"), .height = 14, .weight = 400, .description = COMPOUND_STRING( @@ -7901,32 +9078,52 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Latias, 64, 48), + .frontPic = gMonFrontPic_Latias, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Latias, .frontAnimId = ANIM_ZIGZAG_SLOW, .enemyMonElevation = 12, - BACK_PIC(Latias, 56, 64), + .backPic = gMonBackPic_Latias, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Latias), - ICON(Latias, 0), + .palette = gMonPalette_Latias, + .shinyPalette = gMonShinyPalette_Latias, + .iconSprite = gMonIcon_Latias, + .iconPalIndex = 0, + FOOTPRINT(Latias) + .isLegendary = TRUE, + .levelUpLearnset = sLatiasLevelUpLearnset, + .teachableLearnset = sLatiasTeachableLearnset, + .formSpeciesIdTable = sLatiasFormSpeciesIdTable, + .formChangeTable = sLatiasFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_LATIAS_MEGA] = { - LATIAS_MISC_INFO, .baseHP = 80, .baseAttack = 100, .baseDefense = 120, .baseSpeed = 110, .baseSpAttack = 140, .baseSpDefense = 150, + .types = MON_TYPES(TYPE_DRAGON, TYPE_PSYCHIC), + .catchRate = 3, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 350 : 315, + .evYield_SpDefense = 3, + .genderRatio = MON_FEMALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_LEVITATE, ABILITY_LEVITATE, ABILITY_LEVITATE }, .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Latias"), .cryId = CRY_LATIAS_MEGA, + .natDexNum = NATIONAL_DEX_LATIAS, + .categoryName = _("Eon"), .height = 18, .weight = 520, .description = COMPOUND_STRING( @@ -7938,49 +9135,42 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(LatiasMega, 64, 64), + .frontPic = gMonFrontPic_LatiasMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_LatiasMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 8, - BACK_PIC(LatiasMega, 64, 64), + .backPic = gMonBackPic_LatiasMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(LatiasMega), - ICON(LatiasMega, 2), + .palette = gMonPalette_LatiasMega, + .shinyPalette = gMonShinyPalette_LatiasMega, + .iconSprite = gMonIcon_LatiasMega, + .iconPalIndex = 2, + FOOTPRINT(Latias) + .isLegendary = TRUE, .isMegaEvolution = TRUE, + .levelUpLearnset = sLatiasLevelUpLearnset, + .teachableLearnset = sLatiasTeachableLearnset, + .formSpeciesIdTable = sLatiasFormSpeciesIdTable, + .formChangeTable = sLatiasFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_LATIAS #if P_FAMILY_LATIOS -#define LATIOS_MISC_INFO \ - .types = MON_TYPES(TYPE_DRAGON, TYPE_PSYCHIC), \ - .catchRate = 3, \ - .evYield_SpAttack = 3, \ - .genderRatio = MON_MALE, \ - .eggCycles = 120, \ - .friendship = 90, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .isLegendary = TRUE, \ - .speciesName = _("Latios"), \ - .natDexNum = NATIONAL_DEX_LATIOS, \ - .categoryName = _("Eon"), \ - FOOTPRINT(Latios) \ - LEARNSETS(Latios), \ - .formSpeciesIdTable = sLatiosFormSpeciesIdTable, \ - .formChangeTable = sLatiosFormChangeTable - [SPECIES_LATIOS] = { - LATIOS_MISC_INFO, .baseHP = 80, .baseAttack = 90, .baseDefense = 80, .baseSpeed = 110, .baseSpAttack = 130, .baseSpDefense = 110, + .types = MON_TYPES(TYPE_DRAGON, TYPE_PSYCHIC), + .catchRate = 3, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 300, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -7988,9 +9178,18 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 211, #endif + .evYield_SpAttack = 3, + .genderRatio = MON_MALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Latios"), .cryId = CRY_LATIOS, + .natDexNum = NATIONAL_DEX_LATIOS, + .categoryName = _("Eon"), .height = 20, .weight = 600, .description = COMPOUND_STRING( @@ -8002,32 +9201,52 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 294, .trainerOffset = 3, - FRONT_PIC(Latios, 64, 64), + .frontPic = gMonFrontPic_Latios, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Latios, .frontAnimId = ANIM_CIRCLE_C_CLOCKWISE_SLOW, .enemyMonElevation = 6, - BACK_PIC(Latios, 56, 64), + .backPic = gMonBackPic_Latios, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Latios), - ICON(Latios, 0), + .palette = gMonPalette_Latios, + .shinyPalette = gMonShinyPalette_Latios, + .iconSprite = gMonIcon_Latios, + .iconPalIndex = 0, + FOOTPRINT(Latios) + .isLegendary = TRUE, + .levelUpLearnset = sLatiosLevelUpLearnset, + .teachableLearnset = sLatiosTeachableLearnset, + .formSpeciesIdTable = sLatiosFormSpeciesIdTable, + .formChangeTable = sLatiosFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_LATIOS_MEGA] = { - LATIOS_MISC_INFO, .baseHP = 80, .baseAttack = 130, .baseDefense = 100, .baseSpeed = 110, .baseSpAttack = 160, .baseSpDefense = 120, + .types = MON_TYPES(TYPE_DRAGON, TYPE_PSYCHIC), + .catchRate = 3, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 350 : 315, + .evYield_SpAttack = 3, + .genderRatio = MON_MALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_LEVITATE, ABILITY_LEVITATE, ABILITY_LEVITATE }, .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Latios"), .cryId = CRY_LATIOS_MEGA, + .natDexNum = NATIONAL_DEX_LATIOS, + .categoryName = _("Eon"), .height = 23, .weight = 700, .description = COMPOUND_STRING( @@ -8039,50 +9258,42 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 294, .trainerOffset = 3, - FRONT_PIC(LatiosMega, 64, 64), + .frontPic = gMonFrontPic_LatiosMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_LatiosMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 8, - BACK_PIC(LatiosMega, 64, 64), + .backPic = gMonBackPic_LatiosMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(LatiosMega), - ICON(LatiosMega, 2), + .palette = gMonPalette_LatiosMega, + .shinyPalette = gMonShinyPalette_LatiosMega, + .iconSprite = gMonIcon_LatiosMega, + .iconPalIndex = 2, + FOOTPRINT(Latios) + .isLegendary = TRUE, .isMegaEvolution = TRUE, + .levelUpLearnset = sLatiosLevelUpLearnset, + .teachableLearnset = sLatiosTeachableLearnset, + .formSpeciesIdTable = sLatiosFormSpeciesIdTable, + .formChangeTable = sLatiosFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_LATIOS #if P_FAMILY_KYOGRE -#define KYOGRE_MISC_INFO \ - .types = MON_TYPES(TYPE_WATER), \ - .catchRate = 3, \ - .evYield_SpAttack = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .bodyColor = BODY_COLOR_BLUE, \ - .isLegendary = TRUE, \ - .speciesName = _("Kyogre"), \ - .natDexNum = NATIONAL_DEX_KYOGRE, \ - .categoryName = _("Sea Basin"), \ - FOOTPRINT(Kyogre) \ - LEARNSETS(Kyogre), \ - .formSpeciesIdTable = sKyogreFormSpeciesIdTable, \ - .formChangeTable = sKyogreFormChangeTable - [SPECIES_KYOGRE] = { - KYOGRE_MISC_INFO, .baseHP = 100, .baseAttack = 100, .baseDefense = 90, .baseSpeed = 90, .baseSpAttack = 150, .baseSpDefense = 140, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 3, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 335, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -8090,8 +9301,18 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 218, #endif + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_DRIZZLE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Kyogre"), .cryId = CRY_KYOGRE, + .natDexNum = NATIONAL_DEX_KYOGRE, + .categoryName = _("Sea Basin"), .height = 45, .weight = 3520, .description = COMPOUND_STRING( @@ -8103,30 +9324,51 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 614, .trainerOffset = 13, - FRONT_PIC(Kyogre, 64, 64), + .frontPic = gMonFrontPic_Kyogre, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Kyogre, .frontAnimId = ANIM_SWING_CONCAVE_FAST_SHORT, .frontAnimDelay = 60, - BACK_PIC(Kyogre, 64, 32), + .backPic = gMonBackPic_Kyogre, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 18, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(Kyogre), - ICON(Kyogre, 2), + .palette = gMonPalette_Kyogre, + .shinyPalette = gMonShinyPalette_Kyogre, + .iconSprite = gMonIcon_Kyogre, + .iconPalIndex = 2, + FOOTPRINT(Kyogre) + .isLegendary = TRUE, + .levelUpLearnset = sKyogreLevelUpLearnset, + .teachableLearnset = sKyogreTeachableLearnset, + .formSpeciesIdTable = sKyogreFormSpeciesIdTable, + .formChangeTable = sKyogreFormChangeTable, }, #if P_PRIMAL_REVERSIONS [SPECIES_KYOGRE_PRIMAL] = { - KYOGRE_MISC_INFO, .baseHP = 100, .baseAttack = 150, .baseDefense = 90, .baseSpeed = 90, .baseSpAttack = 180, .baseSpDefense = 160, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 3, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 385 : 347, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PRIMORDIAL_SEA, ABILITY_PRIMORDIAL_SEA }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Kyogre"), .cryId = CRY_KYOGRE_PRIMAL, + .natDexNum = NATIONAL_DEX_KYOGRE, + .categoryName = _("Sea Basin"), .height = 98, .weight = 4300, .description = COMPOUND_STRING( @@ -8138,49 +9380,41 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 515, .trainerOffset = 14, - FRONT_PIC(KyogrePrimal, 64, 64), + .frontPic = gMonFrontPic_KyogrePrimal, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_KyogrePrimal, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(KyogrePrimal, 64, 32), + .backPic = gMonBackPic_KyogrePrimal, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 18, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(KyogrePrimal), - ICON(KyogrePrimal, 0), + .palette = gMonPalette_KyogrePrimal, + .shinyPalette = gMonShinyPalette_KyogrePrimal, + .iconSprite = gMonIcon_KyogrePrimal, + .iconPalIndex = 0, + FOOTPRINT(Kyogre) + .isLegendary = TRUE, .isPrimalReversion = TRUE, + .levelUpLearnset = sKyogreLevelUpLearnset, + .teachableLearnset = sKyogreTeachableLearnset, + .formSpeciesIdTable = sKyogreFormSpeciesIdTable, + .formChangeTable = sKyogreFormChangeTable, }, #endif //P_PRIMAL_REVERSIONS #endif //P_FAMILY_KYOGRE #if P_FAMILY_GROUDON -#define GROUDON_MISC_INFO \ - .catchRate = 3, \ - .evYield_Attack = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .bodyColor = BODY_COLOR_RED, \ - .isLegendary = TRUE, \ - .speciesName = _("Groudon"), \ - .cryId = CRY_GROUDON, \ - .natDexNum = NATIONAL_DEX_GROUDON, \ - .categoryName = _("Continent"), \ - FOOTPRINT(Groudon) \ - LEARNSETS(Groudon), \ - .formSpeciesIdTable = sGroudonFormSpeciesIdTable, \ - .formChangeTable = sGroudonFormChangeTable - [SPECIES_GROUDON] = { - GROUDON_MISC_INFO, .baseHP = 100, .baseAttack = 150, .baseDefense = 140, .baseSpeed = 90, .baseSpAttack = 100, .baseSpDefense = 90, + .types = MON_TYPES(TYPE_GROUND), + .catchRate = 3, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 335, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -8188,8 +9422,18 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 218, #endif - .types = MON_TYPES(TYPE_GROUND), + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_DROUGHT, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Groudon"), + .cryId = CRY_GROUDON, + .natDexNum = NATIONAL_DEX_GROUDON, + .categoryName = _("Continent"), .height = 35, .weight = 9500, .description = COMPOUND_STRING( @@ -8201,30 +9445,51 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 515, .trainerOffset = 14, - FRONT_PIC(Groudon, 64, 64), + .frontPic = gMonFrontPic_Groudon, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Groudon, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Groudon, 64, 48), + .backPic = gMonBackPic_Groudon, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Groudon), - ICON(Groudon, 0), + .palette = gMonPalette_Groudon, + .shinyPalette = gMonShinyPalette_Groudon, + .iconSprite = gMonIcon_Groudon, + .iconPalIndex = 0, + FOOTPRINT(Groudon) + .isLegendary = TRUE, + .levelUpLearnset = sGroudonLevelUpLearnset, + .teachableLearnset = sGroudonTeachableLearnset, + .formSpeciesIdTable = sGroudonFormSpeciesIdTable, + .formChangeTable = sGroudonFormChangeTable, }, #if P_PRIMAL_REVERSIONS [SPECIES_GROUDON_PRIMAL] = { - GROUDON_MISC_INFO, .baseHP = 100, .baseAttack = 180, .baseDefense = 160, .baseSpeed = 90, .baseSpAttack = 150, .baseSpDefense = 90, - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 385 : 347, .types = MON_TYPES(TYPE_GROUND, TYPE_FIRE), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 385 : 347, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_DESOLATE_LAND, ABILITY_DESOLATE_LAND }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Groudon"), + .cryId = CRY_GROUDON, + .natDexNum = NATIONAL_DEX_GROUDON, + .categoryName = _("Continent"), .height = 50, .weight = 9997, .description = COMPOUND_STRING( @@ -8236,7 +9501,8 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 515, .trainerOffset = 14, - FRONT_PIC(GroudonPrimal, 64, 64), + .frontPic = gMonFrontPic_GroudonPrimal, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_GroudonPrimal, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, @@ -8244,44 +9510,32 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(GroudonPrimal), - ICON(GroudonPrimal, 0), + .palette = gMonPalette_GroudonPrimal, + .shinyPalette = gMonShinyPalette_GroudonPrimal, + .iconSprite = gMonIcon_GroudonPrimal, + .iconPalIndex = 0, + FOOTPRINT(Groudon) + .isLegendary = TRUE, .isPrimalReversion = TRUE, + .levelUpLearnset = sGroudonLevelUpLearnset, + .teachableLearnset = sGroudonTeachableLearnset, + .formSpeciesIdTable = sGroudonFormSpeciesIdTable, + .formChangeTable = sGroudonFormChangeTable, }, #endif //P_PRIMAL_REVERSIONS #endif //P_FAMILY_GROUDON #if P_FAMILY_RAYQUAZA -#define RAYQUAZA_MISC_INFO \ - .types = MON_TYPES(TYPE_DRAGON, TYPE_FLYING), \ - .catchRate = 45, \ - .evYield_Attack = 2, \ - .evYield_SpAttack = 1, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .bodyColor = BODY_COLOR_GREEN, \ - .speciesName = _("Rayquaza"), \ - .cryId = CRY_RAYQUAZA, \ - .natDexNum = NATIONAL_DEX_RAYQUAZA, \ - .categoryName = _("Sky High"), \ - FOOTPRINT(Rayquaza) \ - LEARNSETS(Rayquaza), \ - .formSpeciesIdTable = sRayquazaFormSpeciesIdTable, \ - .formChangeTable = sRayquazaFormChangeTable, \ - .isLegendary = TRUE - [SPECIES_RAYQUAZA] = { - RAYQUAZA_MISC_INFO, .baseHP = 105, .baseAttack = 150, .baseDefense = 90, .baseSpeed = 95, .baseSpAttack = 150, .baseSpDefense = 90, + .types = MON_TYPES(TYPE_DRAGON, TYPE_FLYING), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 340, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -8289,7 +9543,19 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 220, #endif + .evYield_Attack = 2, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_AIR_LOCK, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Rayquaza"), + .cryId = CRY_RAYQUAZA, + .natDexNum = NATIONAL_DEX_RAYQUAZA, + .categoryName = _("Sky High"), .height = 70, .weight = 2065, .description = COMPOUND_STRING( @@ -8301,31 +9567,54 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 448, .trainerOffset = 12, - FRONT_PIC(Rayquaza, 64, 64), + .frontPic = gMonFrontPic_Rayquaza, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Rayquaza, .frontAnimId = ANIM_H_SHAKE, .frontAnimDelay = 60, .enemyMonElevation = 6, - BACK_PIC(Rayquaza, 64, 64), + .backPic = gMonBackPic_Rayquaza, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(Rayquaza), - ICON(Rayquaza, 1), + .palette = gMonPalette_Rayquaza, + .shinyPalette = gMonShinyPalette_Rayquaza, + .iconSprite = gMonIcon_Rayquaza, + .iconPalIndex = 1, + FOOTPRINT(Rayquaza) + .isLegendary = TRUE, + .levelUpLearnset = sRayquazaLevelUpLearnset, + .teachableLearnset = sRayquazaTeachableLearnset, + .formSpeciesIdTable = sRayquazaFormSpeciesIdTable, + .formChangeTable = sRayquazaFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_RAYQUAZA_MEGA] = { - RAYQUAZA_MISC_INFO, .baseHP = 105, .baseAttack = 180, .baseDefense = 100, .baseSpeed = 115, .baseSpAttack = 180, .baseSpDefense = 100, + .types = MON_TYPES(TYPE_DRAGON, TYPE_FLYING), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 390 : 351, + .evYield_Attack = 2, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_DELTA_STREAM, ABILITY_DELTA_STREAM, ABILITY_DELTA_STREAM }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Rayquaza"), + .cryId = CRY_RAYQUAZA, + .natDexNum = NATIONAL_DEX_RAYQUAZA, + .categoryName = _("Sky High"), .height = 108, .weight = 3920, .description = COMPOUND_STRING( @@ -8337,17 +9626,27 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, .trainerScale = 448, .trainerOffset = 12, - FRONT_PIC(RayquazaMega, 64, 64), + .frontPic = gMonFrontPic_RayquazaMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_RayquazaMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 4, - BACK_PIC(RayquazaMega, 64, 64), + .backPic = gMonBackPic_RayquazaMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, - PALETTES(RayquazaMega), - ICON(RayquazaMega, 1), + .palette = gMonPalette_RayquazaMega, + .shinyPalette = gMonShinyPalette_RayquazaMega, + .iconSprite = gMonIcon_RayquazaMega, + .iconPalIndex = 1, + FOOTPRINT(Rayquaza) + .isLegendary = TRUE, .isMegaEvolution = TRUE, + .levelUpLearnset = sRayquazaLevelUpLearnset, + .teachableLearnset = sRayquazaTeachableLearnset, + .formSpeciesIdTable = sRayquazaFormSpeciesIdTable, + .formChangeTable = sRayquazaFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_RAYQUAZA @@ -8380,7 +9679,6 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, - .isMythical = TRUE, .speciesName = _("Jirachi"), .cryId = CRY_JIRACHI, .natDexNum = NATIONAL_DEX_JIRACHI, @@ -8396,18 +9694,24 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Jirachi, 56, 48), + .frontPic = gMonFrontPic_Jirachi, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Jirachi, .frontAnimId = ANIM_RISING_WOBBLE, .enemyMonElevation = 14, - BACK_PIC(Jirachi, 64, 56), + .backPic = gMonBackPic_Jirachi, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Jirachi), - ICON(Jirachi, 0), + .palette = gMonPalette_Jirachi, + .shinyPalette = gMonShinyPalette_Jirachi, + .iconSprite = gMonIcon_Jirachi, + .iconPalIndex = 0, FOOTPRINT(Jirachi) - LEARNSETS(Jirachi), + .isMythical = TRUE, + .levelUpLearnset = sJirachiLevelUpLearnset, + .teachableLearnset = sJirachiTeachableLearnset, }, #endif //P_FAMILY_JIRACHI @@ -8420,126 +9724,212 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #define DEOXYS_EXP_YIELD 215 #endif -#define DEOXYS_MISC_INFO \ - .types = MON_TYPES(TYPE_PSYCHIC), \ - .catchRate = 3, \ - .expYield = DEOXYS_EXP_YIELD, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_RED, \ - .isMythical = TRUE, \ - .speciesName = _("Deoxys"), \ - .cryId = CRY_DEOXYS, \ - .natDexNum = NATIONAL_DEX_DEOXYS, \ - .categoryName = _("DNA"), \ - .height = 17, \ - .weight = 608, \ - .description = gDeoxysNormalPokedexText, \ - .pokemonScale = 256, \ - .pokemonOffset = 0, \ - .trainerScale = 290, \ - .trainerOffset = 2, \ - FOOTPRINT(Deoxys) \ - .formSpeciesIdTable = sDeoxysFormSpeciesIdTable - [SPECIES_DEOXYS_NORMAL] = { - DEOXYS_MISC_INFO, .baseHP = 50, .baseAttack = 150, .baseDefense = 50, .baseSpeed = 150, .baseSpAttack = 150, .baseSpDefense = 50, + .types = MON_TYPES(TYPE_PSYCHIC), + .catchRate = 3, + .expYield = DEOXYS_EXP_YIELD, .evYield_Attack = 1, .evYield_Speed = 1, .evYield_SpAttack = 1, - FRONT_PIC(DeoxysNormal, 64, 64), + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Deoxys"), + .cryId = CRY_DEOXYS, + .natDexNum = NATIONAL_DEX_DEOXYS, + .categoryName = _("DNA"), + .height = 17, + .weight = 608, + .description = gDeoxysNormalPokedexText, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 2, + .frontPic = gMonFrontPic_DeoxysNormal, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_DeoxysNormal, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(DeoxysNormal, 64, 56), + .backPic = gMonBackPic_DeoxysNormal, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(DeoxysNormal), - ICON(DeoxysNormal, 0), - LEARNSETS(DeoxysNormal), + .palette = gMonPalette_DeoxysNormal, + .shinyPalette = gMonShinyPalette_DeoxysNormal, + .iconSprite = gMonIcon_DeoxysNormal, + .iconPalIndex = 0, + FOOTPRINT(Deoxys) + .isMythical = TRUE, + .levelUpLearnset = sDeoxysNormalLevelUpLearnset, + .teachableLearnset = sDeoxysNormalTeachableLearnset, + .formSpeciesIdTable = sDeoxysFormSpeciesIdTable, .formChangeTable = sDeoxysNormalFormChangeTable, }, [SPECIES_DEOXYS_ATTACK] = { - DEOXYS_MISC_INFO, .baseHP = 50, .baseAttack = 180, .baseDefense = 20, .baseSpeed = 150, .baseSpAttack = 180, .baseSpDefense = 20, + .types = MON_TYPES(TYPE_PSYCHIC), + .catchRate = 3, + .expYield = DEOXYS_EXP_YIELD, .evYield_Attack = 2, .evYield_SpAttack = 1, - FRONT_PIC(DeoxysAttack, 64, 64), + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Deoxys"), + .cryId = CRY_DEOXYS, + .natDexNum = NATIONAL_DEX_DEOXYS, + .categoryName = _("DNA"), + .height = 17, + .weight = 608, + .description = gDeoxysNormalPokedexText, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 2, + .frontPic = gMonFrontPic_DeoxysAttack, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_DeoxysAttack, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(DeoxysAttack, 64, 64), + .backPic = gMonBackPic_DeoxysAttack, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(DeoxysAttack), - ICON(DeoxysAttack, 0), - LEARNSETS(DeoxysAttack), + .palette = gMonPalette_DeoxysAttack, + .shinyPalette = gMonShinyPalette_DeoxysAttack, + .iconSprite = gMonIcon_DeoxysAttack, + .iconPalIndex = 0, + FOOTPRINT(Deoxys) + .isMythical = TRUE, + .levelUpLearnset = sDeoxysAttackLevelUpLearnset, + .teachableLearnset = sDeoxysAttackTeachableLearnset, + .formSpeciesIdTable = sDeoxysFormSpeciesIdTable, .formChangeTable = sDeoxysAttackFormChangeTable, }, [SPECIES_DEOXYS_DEFENSE] = { - DEOXYS_MISC_INFO, .baseHP = 50, .baseAttack = 70, .baseDefense = 160, .baseSpeed = 90, .baseSpAttack = 70, .baseSpDefense = 160, + .types = MON_TYPES(TYPE_PSYCHIC), + .catchRate = 3, + .expYield = DEOXYS_EXP_YIELD, .evYield_Defense = 2, .evYield_SpDefense = 1, - FRONT_PIC(DeoxysDefense, 56, 64), + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Deoxys"), + .cryId = CRY_DEOXYS, + .natDexNum = NATIONAL_DEX_DEOXYS, + .categoryName = _("DNA"), + .height = 17, + .weight = 608, + .description = gDeoxysNormalPokedexText, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 2, + .frontPic = gMonFrontPic_DeoxysDefense, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_DeoxysDefense, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(DeoxysDefense, 64, 56), + .backPic = gMonBackPic_DeoxysDefense, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(DeoxysDefense), - ICON(DeoxysDefense, 0), - LEARNSETS(DeoxysDefense), + .palette = gMonPalette_DeoxysDefense, + .shinyPalette = gMonShinyPalette_DeoxysDefense, + .iconSprite = gMonIcon_DeoxysDefense, + .iconPalIndex = 0, + FOOTPRINT(Deoxys) + .isMythical = TRUE, + .levelUpLearnset = sDeoxysDefenseLevelUpLearnset, + .teachableLearnset = sDeoxysDefenseTeachableLearnset, + .formSpeciesIdTable = sDeoxysFormSpeciesIdTable, .formChangeTable = sDeoxysDefenseFormChangeTable, }, [SPECIES_DEOXYS_SPEED] = { - DEOXYS_MISC_INFO, .baseHP = 50, .baseAttack = 95, .baseDefense = 90, .baseSpeed = 180, .baseSpAttack = 95, .baseSpDefense = 90, + .types = MON_TYPES(TYPE_PSYCHIC), + .catchRate = 3, + .expYield = DEOXYS_EXP_YIELD, .evYield_Speed = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, .noFlip = TRUE, - FRONT_PIC(DeoxysSpeed, 64, 64), + .speciesName = _("Deoxys"), + .cryId = CRY_DEOXYS, + .natDexNum = NATIONAL_DEX_DEOXYS, + .categoryName = _("DNA"), + .height = 17, + .weight = 608, + .description = gDeoxysNormalPokedexText, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 2, + .frontPic = gMonFrontPic_DeoxysSpeed, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_DeoxysSpeed, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(DeoxysSpeed, 64, 64), + .backPic = gMonBackPic_DeoxysSpeed, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(DeoxysSpeed), - ICON(DeoxysSpeed, 0), - LEARNSETS(DeoxysSpeed), + .palette = gMonPalette_DeoxysSpeed, + .shinyPalette = gMonShinyPalette_DeoxysSpeed, + .iconSprite = gMonIcon_DeoxysSpeed, + .iconPalIndex = 0, + FOOTPRINT(Deoxys) + .isMythical = TRUE, + .levelUpLearnset = sDeoxysSpeedLevelUpLearnset, + .teachableLearnset = sDeoxysSpeedTeachableLearnset, + .formSpeciesIdTable = sDeoxysFormSpeciesIdTable, .formChangeTable = sDeoxysSpeedFormChangeTable, }, #endif //P_FAMILY_DEOXYS diff --git a/src/data/pokemon/species_info/gen_4.h b/src/data/pokemon/species_info/gen_4.h index 17bf0c6677..ca4283c78b 100644 --- a/src/data/pokemon/species_info/gen_4.h +++ b/src/data/pokemon/species_info/gen_4.h @@ -38,17 +38,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 20, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Turtwig, 40, 48), + .frontPic = gMonFrontPic_Turtwig, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Turtwig, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Turtwig, 48, 56), + .backPic = gMonBackPic_Turtwig, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Turtwig), - ICON(Turtwig, 1), + .palette = gMonPalette_Turtwig, + .shinyPalette = gMonShinyPalette_Turtwig, + .iconSprite = gMonIcon_Turtwig, + .iconPalIndex = 1, FOOTPRINT(Turtwig) - LEARNSETS(Turtwig), + .levelUpLearnset = sTurtwigLevelUpLearnset, + .teachableLearnset = sTurtwigTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_GROTLE}), }, @@ -87,17 +92,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 9, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Grotle, 56, 56), + .frontPic = gMonFrontPic_Grotle, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Grotle, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Grotle, 64, 48), + .backPic = gMonBackPic_Grotle, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Grotle), - ICON(Grotle, 1), + .palette = gMonPalette_Grotle, + .shinyPalette = gMonShinyPalette_Grotle, + .iconSprite = gMonIcon_Grotle, + .iconPalIndex = 1, FOOTPRINT(Grotle) - LEARNSETS(Grotle), + .levelUpLearnset = sGrotleLevelUpLearnset, + .teachableLearnset = sGrotleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_TORTERRA}), }, @@ -143,17 +153,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 0, .trainerScale = 348, .trainerOffset = 6, - FRONT_PIC(Torterra, 64, 64), + .frontPic = gMonFrontPic_Torterra, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Torterra, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Torterra, 64, 56), + .backPic = gMonBackPic_Torterra, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, - PALETTES(Torterra), - ICON(Torterra, 1), + .palette = gMonPalette_Torterra, + .shinyPalette = gMonShinyPalette_Torterra, + .iconSprite = gMonIcon_Torterra, + .iconPalIndex = 1, FOOTPRINT(Torterra) - LEARNSETS(Torterra), + .levelUpLearnset = sTorterraLevelUpLearnset, + .teachableLearnset = sTorterraTeachableLearnset, }, #endif //P_FAMILY_TURTWIG @@ -193,17 +208,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Chimchar, 32, 48), + .frontPic = gMonFrontPic_Chimchar, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Chimchar, .frontAnimId = ANIM_V_JUMPS_BIG, - BACK_PIC(Chimchar, 56, 56), + .backPic = gMonBackPic_Chimchar, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Chimchar), - ICON(Chimchar, 1), + .palette = gMonPalette_Chimchar, + .shinyPalette = gMonShinyPalette_Chimchar, + .iconSprite = gMonIcon_Chimchar, + .iconPalIndex = 1, FOOTPRINT(Chimchar) - LEARNSETS(Chimchar), + .levelUpLearnset = sChimcharLevelUpLearnset, + .teachableLearnset = sChimcharTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_MONFERNO}), }, @@ -243,17 +263,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 9, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Monferno, 56, 56), + .frontPic = gMonFrontPic_Monferno, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Monferno, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(Monferno, 64, 64), + .backPic = gMonBackPic_Monferno, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Monferno), - ICON(Monferno, 0), + .palette = gMonPalette_Monferno, + .shinyPalette = gMonShinyPalette_Monferno, + .iconSprite = gMonIcon_Monferno, + .iconPalIndex = 0, FOOTPRINT(Monferno) - LEARNSETS(Monferno), + .levelUpLearnset = sMonfernoLevelUpLearnset, + .teachableLearnset = sMonfernoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_INFERNAPE}), }, @@ -299,17 +324,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Infernape, 64, 64), + .frontPic = gMonFrontPic_Infernape, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Infernape, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Infernape, 64, 64), + .backPic = gMonBackPic_Infernape, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Infernape), - ICON(Infernape, 0), + .palette = gMonPalette_Infernape, + .shinyPalette = gMonShinyPalette_Infernape, + .iconSprite = gMonIcon_Infernape, + .iconPalIndex = 0, FOOTPRINT(Infernape) - LEARNSETS(Infernape), + .levelUpLearnset = sInfernapeLevelUpLearnset, + .teachableLearnset = sInfernapeTeachableLearnset, }, #endif //P_FAMILY_CHIMCHAR @@ -331,11 +361,11 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), - #if P_UPDATED_ABILITIES >= GEN_9 - .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_COMPETITIVE }, - #else - .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT }, - #endif + #if P_UPDATED_ABILITIES >= GEN_9 + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_COMPETITIVE }, + #else + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Piplup"), .cryId = CRY_PIPLUP, @@ -352,17 +382,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Piplup, 24, 40), + .frontPic = gMonFrontPic_Piplup, + .frontPicSize = MON_COORDS_SIZE(24, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Piplup, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Piplup, 40, 48), + .backPic = gMonBackPic_Piplup, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Piplup), - ICON(Piplup, 0), + .palette = gMonPalette_Piplup, + .shinyPalette = gMonShinyPalette_Piplup, + .iconSprite = gMonIcon_Piplup, + .iconPalIndex = 0, FOOTPRINT(Piplup) - LEARNSETS(Piplup), + .levelUpLearnset = sPiplupLevelUpLearnset, + .teachableLearnset = sPiplupTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_PRINPLUP}), }, @@ -383,11 +418,11 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), - #if P_UPDATED_ABILITIES >= GEN_9 - .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_COMPETITIVE }, - #else - .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT }, - #endif + #if P_UPDATED_ABILITIES >= GEN_9 + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_COMPETITIVE }, + #else + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Prinplup"), .cryId = CRY_PRINPLUP, @@ -404,17 +439,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 10, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Prinplup, 48, 56), + .frontPic = gMonFrontPic_Prinplup, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Prinplup, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Prinplup, 48, 56), + .backPic = gMonBackPic_Prinplup, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Prinplup), - ICON(Prinplup, 0), + .palette = gMonPalette_Prinplup, + .shinyPalette = gMonShinyPalette_Prinplup, + .iconSprite = gMonIcon_Prinplup, + .iconPalIndex = 0, FOOTPRINT(Prinplup) - LEARNSETS(Prinplup), + .levelUpLearnset = sPrinplupLevelUpLearnset, + .teachableLearnset = sPrinplupTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_EMPOLEON}), }, @@ -441,11 +481,11 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), - #if P_UPDATED_ABILITIES >= GEN_9 - .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_COMPETITIVE }, - #else - .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT }, - #endif + #if P_UPDATED_ABILITIES >= GEN_9 + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_COMPETITIVE }, + #else + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Empoleon"), .cryId = CRY_EMPOLEON, @@ -462,17 +502,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 0, .trainerScale = 290, .trainerOffset = 1, - FRONT_PIC(Empoleon, 64, 64), + .frontPic = gMonFrontPic_Empoleon, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Empoleon, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Empoleon, 64, 64), + .backPic = gMonBackPic_Empoleon, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(Empoleon), - ICON(Empoleon, 0), + .palette = gMonPalette_Empoleon, + .shinyPalette = gMonShinyPalette_Empoleon, + .iconSprite = gMonIcon_Empoleon, + .iconPalIndex = 0, FOOTPRINT(Empoleon) - LEARNSETS(Empoleon), + .levelUpLearnset = sEmpoleonLevelUpLearnset, + .teachableLearnset = sEmpoleonTeachableLearnset, }, #endif //P_FAMILY_PIPLUP @@ -511,19 +556,26 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Starly, 40, 40), - FRONT_PIC_FEMALE(Starly, 40, 40), + .frontPic = gMonFrontPic_Starly, + .frontPicFemale = gMonFrontPic_StarlyF, + .frontPicSize = MON_COORDS_SIZE(40, 40), + .frontPicSizeFemale = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Starly, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Starly, 56, 48), - BACK_PIC_FEMALE(Starly, 56, 48), + .backPic = gMonBackPic_Starly, + .backPicFemale = gMonBackPic_StarlyF, + .backPicSize = MON_COORDS_SIZE(56, 48), + .backPicSizeFemale = MON_COORDS_SIZE(56, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Starly), - ICON(Starly, 0), + .palette = gMonPalette_Starly, + .shinyPalette = gMonShinyPalette_Starly, + .iconSprite = gMonIcon_Starly, + .iconPalIndex = 0, FOOTPRINT(Starly) - LEARNSETS(Starly), + .levelUpLearnset = sStarlyLevelUpLearnset, + .teachableLearnset = sStarlyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_STARAVIA}), }, @@ -561,19 +613,26 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Staravia, 40, 48), - FRONT_PIC_FEMALE(Staravia, 40, 48), + .frontPic = gMonFrontPic_Staravia, + .frontPicFemale = gMonFrontPic_StaraviaF, + .frontPicSize = MON_COORDS_SIZE(40, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Staravia, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Staravia, 64, 64), - BACK_PIC_FEMALE(Staravia, 64, 64), + .backPic = gMonBackPic_Staravia, + .backPicFemale = gMonBackPic_StaraviaF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Staravia), - ICON(Staravia, 0), + .palette = gMonPalette_Staravia, + .shinyPalette = gMonShinyPalette_Staravia, + .iconSprite = gMonIcon_Staravia, + .iconPalIndex = 0, FOOTPRINT(Staravia) - LEARNSETS(Staravia), + .levelUpLearnset = sStaraviaLevelUpLearnset, + .teachableLearnset = sStaraviaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_STARAPTOR}), }, @@ -619,18 +678,24 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Staraptor, 56, 64), - FRONT_PIC_FEMALE(Staraptor, 56, 64), + .frontPic = gMonFrontPic_Staraptor, + .frontPicFemale = gMonFrontPic_StaraptorF, + .frontPicSize = MON_COORDS_SIZE(56, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Staraptor, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Staraptor, 64, 64), + .backPic = gMonBackPic_Staraptor, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Staraptor), - ICON(Staraptor, 0), + .palette = gMonPalette_Staraptor, + .shinyPalette = gMonShinyPalette_Staraptor, + .iconSprite = gMonIcon_Staraptor, + .iconPalIndex = 0, FOOTPRINT(Staraptor) - LEARNSETS(Staraptor), + .levelUpLearnset = sStaraptorLevelUpLearnset, + .teachableLearnset = sStaraptorTeachableLearnset, }, #endif //P_FAMILY_STARLY @@ -669,19 +734,26 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Bidoof, 40, 40), - FRONT_PIC_FEMALE(Bidoof, 40, 40), + .frontPic = gMonFrontPic_Bidoof, + .frontPicFemale = gMonFrontPic_BidoofF, + .frontPicSize = MON_COORDS_SIZE(40, 40), + .frontPicSizeFemale = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Bidoof, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(Bidoof, 64, 40), - BACK_PIC_FEMALE(Bidoof, 64, 40), + .backPic = gMonBackPic_Bidoof, + .backPicFemale = gMonBackPic_BidoofF, + .backPicSize = MON_COORDS_SIZE(64, 40), + .backPicSizeFemale = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Bidoof), - ICON(Bidoof, 2), + .palette = gMonPalette_Bidoof, + .shinyPalette = gMonShinyPalette_Bidoof, + .iconSprite = gMonIcon_Bidoof, + .iconPalIndex = 2, FOOTPRINT(Bidoof) - LEARNSETS(Bidoof), + .levelUpLearnset = sBidoofLevelUpLearnset, + .teachableLearnset = sBidoofTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_BIBAREL}), }, @@ -719,18 +791,24 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 8, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Bibarel, 56, 48), - FRONT_PIC_FEMALE(Bibarel, 56, 48), + .frontPic = gMonFrontPic_Bibarel, + .frontPicFemale = gMonFrontPic_BibarelF, + .frontPicSize = MON_COORDS_SIZE(56, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Bibarel, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Bibarel, 64, 56), + .backPic = gMonBackPic_Bibarel, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Bibarel), - ICON(Bibarel, 2), + .palette = gMonPalette_Bibarel, + .shinyPalette = gMonShinyPalette_Bibarel, + .iconSprite = gMonIcon_Bibarel, + .iconPalIndex = 2, FOOTPRINT(Bibarel) - LEARNSETS(Bibarel), + .levelUpLearnset = sBibarelLevelUpLearnset, + .teachableLearnset = sBibarelTeachableLearnset, }, #endif //P_FAMILY_BIDOOF @@ -770,20 +848,27 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Kricketot, 48, 48), - FRONT_PIC_FEMALE(Kricketot, 48, 48), + .frontPic = gMonFrontPic_Kricketot, + .frontPicFemale = gMonFrontPic_KricketotF, + .frontPicSize = MON_COORDS_SIZE(48, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Kricketot, .frontAnimId = ANIM_H_JUMPS, - BACK_PIC(Kricketot, 48, 56), - BACK_PIC_FEMALE(Kricketot, 48, 56), + .backPic = gMonBackPic_Kricketot, + .backPicFemale = gMonBackPic_KricketotF, + .backPicSize = MON_COORDS_SIZE(48, 56), + .backPicSizeFemale = MON_COORDS_SIZE(48, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Kricketot), - ICON(Kricketot, 2), + .palette = gMonPalette_Kricketot, + .shinyPalette = gMonShinyPalette_Kricketot, + .iconSprite = gMonIcon_Kricketot, + .iconPalIndex = 2, FOOTPRINT(Kricketot) - LEARNSETS(Kricketot), .tmIlliterate = TRUE, + .levelUpLearnset = sKricketotLevelUpLearnset, + .teachableLearnset = sKricketotTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_KRICKETUNE}), }, @@ -822,19 +907,26 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 8, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Kricketune, 56, 56), - FRONT_PIC_FEMALE(Kricketune, 56, 56), + .frontPic = gMonFrontPic_Kricketune, + .frontPicFemale = gMonFrontPic_KricketuneF, + .frontPicSize = MON_COORDS_SIZE(56, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Kricketune, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(Kricketune, 56, 64), - BACK_PIC_FEMALE(Kricketune, 56, 64), + .backPic = gMonBackPic_Kricketune, + .backPicFemale = gMonBackPic_KricketuneF, + .backPicSize = MON_COORDS_SIZE(56, 64), + .backPicSizeFemale = MON_COORDS_SIZE(56, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Kricketune), - ICON(Kricketune, 2), + .palette = gMonPalette_Kricketune, + .shinyPalette = gMonShinyPalette_Kricketune, + .iconSprite = gMonIcon_Kricketune, + .iconPalIndex = 2, FOOTPRINT(Kricketune) - LEARNSETS(Kricketune), + .levelUpLearnset = sKricketuneLevelUpLearnset, + .teachableLearnset = sKricketuneTeachableLearnset, }, #endif //P_FAMILY_KRICKETOT @@ -873,19 +965,26 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Shinx, 48, 40), - FRONT_PIC_FEMALE(Shinx, 48, 40), + .frontPic = gMonFrontPic_Shinx, + .frontPicFemale = gMonFrontPic_ShinxF, + .frontPicSize = MON_COORDS_SIZE(48, 40), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Shinx, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Shinx, 64, 48), - BACK_PIC_FEMALE(Shinx, 64, 48), + .backPic = gMonBackPic_Shinx, + .backPicFemale = gMonBackPic_ShinxF, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicSizeFemale = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Shinx), - ICON(Shinx, 0), + .palette = gMonPalette_Shinx, + .shinyPalette = gMonShinyPalette_Shinx, + .iconSprite = gMonIcon_Shinx, + .iconPalIndex = 0, FOOTPRINT(Shinx) - LEARNSETS(Shinx), + .levelUpLearnset = sShinxLevelUpLearnset, + .teachableLearnset = sShinxTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_LUXIO}), }, @@ -923,19 +1022,26 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Luxio, 48, 48), - FRONT_PIC_FEMALE(Luxio, 48, 48), + .frontPic = gMonFrontPic_Luxio, + .frontPicFemale = gMonFrontPic_LuxioF, + .frontPicSize = MON_COORDS_SIZE(48, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Luxio, .frontAnimId = ANIM_H_STRETCH, - BACK_PIC(Luxio, 64, 64), - BACK_PIC_FEMALE(Luxio, 64, 64), + .backPic = gMonBackPic_Luxio, + .backPicFemale = gMonBackPic_LuxioF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Luxio), - ICON(Luxio, 0), + .palette = gMonPalette_Luxio, + .shinyPalette = gMonShinyPalette_Luxio, + .iconSprite = gMonIcon_Luxio, + .iconPalIndex = 0, FOOTPRINT(Luxio) - LEARNSETS(Luxio), + .levelUpLearnset = sLuxioLevelUpLearnset, + .teachableLearnset = sLuxioTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_LUXRAY}), }, @@ -979,19 +1085,26 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 2, .trainerScale = 262, .trainerOffset = 0, - FRONT_PIC(Luxray, 64, 64), - FRONT_PIC_FEMALE(Luxray, 64, 64), + .frontPic = gMonFrontPic_Luxray, + .frontPicFemale = gMonFrontPic_LuxrayF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Luxray, .frontAnimId = ANIM_GLOW_YELLOW, - BACK_PIC(Luxray, 64, 64), - BACK_PIC_FEMALE(Luxray, 64, 64), + .backPic = gMonBackPic_Luxray, + .backPicFemale = gMonBackPic_LuxrayF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Luxray), - ICON(Luxray, 0), + .palette = gMonPalette_Luxray, + .shinyPalette = gMonShinyPalette_Luxray, + .iconSprite = gMonIcon_Luxray, + .iconPalIndex = 0, FOOTPRINT(Luxray) - LEARNSETS(Luxray), + .levelUpLearnset = sLuxrayLevelUpLearnset, + .teachableLearnset = sLuxrayTeachableLearnset, }, #endif //P_FAMILY_SHINX @@ -1030,17 +1143,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cranidos, 48, 48), + .frontPic = gMonFrontPic_Cranidos, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Cranidos, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Cranidos, 64, 56), + .backPic = gMonBackPic_Cranidos, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Cranidos), - ICON(Cranidos, 0), + .palette = gMonPalette_Cranidos, + .shinyPalette = gMonShinyPalette_Cranidos, + .iconSprite = gMonIcon_Cranidos, + .iconPalIndex = 0, FOOTPRINT(Cranidos) - LEARNSETS(Cranidos), + .levelUpLearnset = sCranidosLevelUpLearnset, + .teachableLearnset = sCranidosTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_RAMPARDOS}), }, @@ -1078,17 +1196,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(Rampardos, 64, 64), + .frontPic = gMonFrontPic_Rampardos, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Rampardos, .frontAnimId = ANIM_V_SHAKE_TWICE, - BACK_PIC(Rampardos, 64, 64), + .backPic = gMonBackPic_Rampardos, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Rampardos), - ICON(Rampardos, 0), + .palette = gMonPalette_Rampardos, + .shinyPalette = gMonShinyPalette_Rampardos, + .iconSprite = gMonIcon_Rampardos, + .iconPalIndex = 0, FOOTPRINT(Rampardos) - LEARNSETS(Rampardos), + .levelUpLearnset = sRampardosLevelUpLearnset, + .teachableLearnset = sRampardosTeachableLearnset, }, #endif //P_FAMILY_CRANIDOS @@ -1127,17 +1250,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Shieldon, 40, 40), + .frontPic = gMonFrontPic_Shieldon, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Shieldon, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Shieldon, 56, 48), + .backPic = gMonBackPic_Shieldon, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Shieldon), - ICON(Shieldon, 1), + .palette = gMonPalette_Shieldon, + .shinyPalette = gMonShinyPalette_Shieldon, + .iconSprite = gMonIcon_Shieldon, + .iconPalIndex = 1, FOOTPRINT(Shieldon) - LEARNSETS(Shieldon), + .levelUpLearnset = sShieldonLevelUpLearnset, + .teachableLearnset = sShieldonTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_BASTIODON}), }, @@ -1175,147 +1303,202 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Bastiodon, 64, 56), + .frontPic = gMonFrontPic_Bastiodon, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Bastiodon, .frontAnimId = ANIM_BACK_AND_LUNGE, - BACK_PIC(Bastiodon, 64, 56), + .backPic = gMonBackPic_Bastiodon, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Bastiodon), - ICON(Bastiodon, 1), + .palette = gMonPalette_Bastiodon, + .shinyPalette = gMonShinyPalette_Bastiodon, + .iconSprite = gMonIcon_Bastiodon, + .iconPalIndex = 1, FOOTPRINT(Bastiodon) - LEARNSETS(Bastiodon), + .levelUpLearnset = sBastiodonLevelUpLearnset, + .teachableLearnset = sBastiodonTeachableLearnset, }, #endif //P_FAMILY_SHIELDON #if P_FAMILY_BURMY -#define BURMY_MISC_INFO \ - .baseHP = 40, \ - .baseAttack = 29, \ - .baseDefense = 45, \ - .baseSpeed = 36, \ - .baseSpAttack = 29, \ - .baseSpDefense = 45, \ - .types = MON_TYPES(TYPE_BUG), \ - .catchRate = 120, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 45 : 61, \ - .evYield_SpDefense = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), \ - .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_OVERCOAT }, \ - .speciesName = _("Burmy"), \ - .cryId = CRY_BURMY, \ - .natDexNum = NATIONAL_DEX_BURMY, \ - .categoryName = _("Bagworm"), \ - .height = 2, \ - .weight = 34, \ - .pokemonScale = 682, \ - .pokemonOffset = 24, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .frontAnimFrames = sAnims_Burmy, \ - .frontAnimId = ANIM_V_STRETCH, \ - .enemyMonElevation = 10, \ - .backAnimId = BACK_ANIM_H_SHAKE, \ - FOOTPRINT(Burmy) \ - LEARNSETS(Burmy), \ - .tmIlliterate = TRUE, \ - .formSpeciesIdTable = sBurmyFormSpeciesIdTable, \ - .formChangeTable = sBurmyFormChangeTable - [SPECIES_BURMY_PLANT_CLOAK] = { - BURMY_MISC_INFO, + .baseHP = 40, + .baseAttack = 29, + .baseDefense = 45, + .baseSpeed = 36, + .baseSpAttack = 29, + .baseSpDefense = 45, + .types = MON_TYPES(TYPE_BUG), + .catchRate = 120, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 45 : 61, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_OVERCOAT }, .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Burmy"), + .cryId = CRY_BURMY, + .natDexNum = NATIONAL_DEX_BURMY, + .categoryName = _("Bagworm"), + .height = 2, + .weight = 34, .description = COMPOUND_STRING( "If its cloak is even slightly damaged, it\n" "will immediately repair it with whatever is\n" "near at hand. The Pokémon within the cloak\n" "is scrawny and vulnerable to the cold."), - FRONT_PIC(BurmyPlantCloak, 32, 56), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_BurmyPlantCloak, + .frontPicSize = MON_COORDS_SIZE(32, 56), .frontPicYOffset = 13, - BACK_PIC(BurmyPlantCloak, 40, 56), + .frontAnimFrames = sAnims_Burmy, + .frontAnimId = ANIM_V_STRETCH, + .enemyMonElevation = 10, + .backPic = gMonBackPic_BurmyPlantCloak, + .backPicSize = MON_COORDS_SIZE(40, 56), .backPicYOffset = 6, - PALETTES(BurmyPlantCloak), - ICON(BurmyPlantCloak, 1), + .backAnimId = BACK_ANIM_H_SHAKE, + .palette = gMonPalette_BurmyPlantCloak, + .shinyPalette = gMonShinyPalette_BurmyPlantCloak, + .iconSprite = gMonIcon_BurmyPlantCloak, + .iconPalIndex = 1, + FOOTPRINT(Burmy) + .tmIlliterate = TRUE, + .levelUpLearnset = sBurmyLevelUpLearnset, + .teachableLearnset = sBurmyTeachableLearnset, + .formSpeciesIdTable = sBurmyFormSpeciesIdTable, + .formChangeTable = sBurmyFormChangeTable, .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_PLANT_CLOAK}, {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM}), }, [SPECIES_BURMY_SANDY_CLOAK] = { - BURMY_MISC_INFO, + .baseHP = 40, + .baseAttack = 29, + .baseDefense = 45, + .baseSpeed = 36, + .baseSpAttack = 29, + .baseSpDefense = 45, + .types = MON_TYPES(TYPE_BUG), + .catchRate = 120, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 45 : 61, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_OVERCOAT }, .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Burmy"), + .cryId = CRY_BURMY, + .natDexNum = NATIONAL_DEX_BURMY, + .categoryName = _("Bagworm"), + .height = 2, + .weight = 34, .description = COMPOUND_STRING( "It weaves a cloak together with sand, mud,\n" "and silk it spits out. This earthen cloak\n" "is ruined by wind and rain, so the Pokémon\n" "hides away in caves and other such places."), - FRONT_PIC(BurmySandyCloak, 32, 56), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_BurmySandyCloak, + .frontPicSize = MON_COORDS_SIZE(32, 56), .frontPicYOffset = 12, - BACK_PIC(BurmySandyCloak, 32, 56), + .frontAnimFrames = sAnims_Burmy, + .frontAnimId = ANIM_V_STRETCH, + .enemyMonElevation = 10, + .backPic = gMonBackPic_BurmySandyCloak, + .backPicSize = MON_COORDS_SIZE(32, 56), .backPicYOffset = 7, - PALETTES(BurmySandyCloak), - ICON(BurmySandyCloak, 1), + .backAnimId = BACK_ANIM_H_SHAKE, + .palette = gMonPalette_BurmySandyCloak, + .shinyPalette = gMonShinyPalette_BurmySandyCloak, + .iconSprite = gMonIcon_BurmySandyCloak, + .iconPalIndex = 1, + FOOTPRINT(Burmy) + .tmIlliterate = TRUE, + .levelUpLearnset = sBurmyLevelUpLearnset, + .teachableLearnset = sBurmyTeachableLearnset, + .formSpeciesIdTable = sBurmyFormSpeciesIdTable, + .formChangeTable = sBurmyFormChangeTable, .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_SANDY_CLOAK}, {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM}), }, [SPECIES_BURMY_TRASH_CLOAK] = { - BURMY_MISC_INFO, + .baseHP = 40, + .baseAttack = 29, + .baseDefense = 45, + .baseSpeed = 36, + .baseSpAttack = 29, + .baseSpDefense = 45, + .types = MON_TYPES(TYPE_BUG), + .catchRate = 120, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 45 : 61, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_OVERCOAT }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Burmy"), + .cryId = CRY_BURMY, + .natDexNum = NATIONAL_DEX_BURMY, + .categoryName = _("Bagworm"), + .height = 2, + .weight = 34, .description = COMPOUND_STRING( "When confronted by a lack of other\n" "materials, Burmy will create its cloak\n" "using dust and refuse. The cloak seems to\n" "be more comfortable than one would think."), - FRONT_PIC(BurmyTrashCloak, 32, 56), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_BurmyTrashCloak, + .frontPicSize = MON_COORDS_SIZE(32, 56), .frontPicYOffset = 8, - BACK_PIC(BurmyTrashCloak, 40, 64), + .frontAnimFrames = sAnims_Burmy, + .frontAnimId = ANIM_V_STRETCH, + .enemyMonElevation = 10, + .backPic = gMonBackPic_BurmyTrashCloak, + .backPicSize = MON_COORDS_SIZE(40, 64), .backPicYOffset = 0, - PALETTES(BurmyTrashCloak), - ICON(BurmyTrashCloak, 0), + .backAnimId = BACK_ANIM_H_SHAKE, + .palette = gMonPalette_BurmyTrashCloak, + .shinyPalette = gMonShinyPalette_BurmyTrashCloak, + .iconSprite = gMonIcon_BurmyTrashCloak, + .iconPalIndex = 0, + FOOTPRINT(Burmy) + .tmIlliterate = TRUE, + .levelUpLearnset = sBurmyLevelUpLearnset, + .teachableLearnset = sBurmyTeachableLearnset, + .formSpeciesIdTable = sBurmyFormSpeciesIdTable, + .formChangeTable = sBurmyFormChangeTable, .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_TRASH_CLOAK}, {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM}), }, -#define WORMADAM_MISC_INFO \ - .catchRate = 45, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 148 : 159, \ - .itemRare = ITEM_SILVER_POWDER, \ - .genderRatio = MON_FEMALE, \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), \ - .abilities = { ABILITY_ANTICIPATION, ABILITY_NONE, ABILITY_OVERCOAT }, \ - .speciesName = _("Wormadam"), \ - .cryId = CRY_WORMADAM, \ - .natDexNum = NATIONAL_DEX_WORMADAM, \ - .categoryName = _("Bagworm"), \ - .height = 5, \ - .weight = 65, \ - .pokemonScale = 432, \ - .pokemonOffset = 13, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .frontPicYOffset = 10, \ - .frontAnimFrames = sAnims_Wormadam, \ - .frontAnimId = ANIM_SWING_CONVEX_FAST_SHORT, \ - .enemyMonElevation = 8, \ - .backPicYOffset = 2, \ - .backAnimId = BACK_ANIM_V_SHAKE, \ - FOOTPRINT(Wormadam) \ - .formSpeciesIdTable = sWormadamFormSpeciesIdTable - [SPECIES_WORMADAM_PLANT_CLOAK] = { - WORMADAM_MISC_INFO, .baseHP = 60, .baseAttack = 59, .baseDefense = 85, @@ -1323,23 +1506,54 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .baseSpAttack = 79, .baseSpDefense = 105, .types = MON_TYPES(TYPE_BUG, TYPE_GRASS), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 148 : 159, .evYield_SpDefense = 2, + .itemRare = ITEM_SILVER_POWDER, + .genderRatio = MON_FEMALE, + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + .abilities = { ABILITY_ANTICIPATION, ABILITY_NONE, ABILITY_OVERCOAT }, .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Wormadam"), + .cryId = CRY_WORMADAM, + .natDexNum = NATIONAL_DEX_WORMADAM, + .categoryName = _("Bagworm"), + .height = 5, + .weight = 65, .description = COMPOUND_STRING( "Its appearance changes depending\n" "on where Burmy evolved. The materials\n" "on hand become a part of its body.\n" "The cloak is never shed."), - FRONT_PIC(WormadamPlantCloak, 48, 56), - BACK_PIC(WormadamPlantCloak, 56, 64), - PALETTES(WormadamPlantCloak), - ICON(WormadamPlantCloak, 1), - LEARNSETS(WormadamPlantCloak), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_WormadamPlantCloak, + .frontPicSize = MON_COORDS_SIZE(48, 56), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Wormadam, + .frontAnimId = ANIM_SWING_CONVEX_FAST_SHORT, + .enemyMonElevation = 8, + .backPic = gMonBackPic_WormadamPlantCloak, + .backPicSize = MON_COORDS_SIZE(56, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_V_SHAKE, + .palette = gMonPalette_WormadamPlantCloak, + .shinyPalette = gMonShinyPalette_WormadamPlantCloak, + .iconSprite = gMonIcon_WormadamPlantCloak, + .iconPalIndex = 1, + FOOTPRINT(Wormadam) + .levelUpLearnset = sWormadamPlantCloakLevelUpLearnset, + .teachableLearnset = sWormadamPlantCloakTeachableLearnset, + .formSpeciesIdTable = sWormadamFormSpeciesIdTable, }, [SPECIES_WORMADAM_SANDY_CLOAK] = { - WORMADAM_MISC_INFO, .baseHP = 60, .baseAttack = 79, .baseDefense = 105, @@ -1347,23 +1561,54 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .baseSpAttack = 59, .baseSpDefense = 85, .types = MON_TYPES(TYPE_BUG, TYPE_GROUND), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 148 : 159, .evYield_Defense = 2, + .itemRare = ITEM_SILVER_POWDER, + .genderRatio = MON_FEMALE, + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + .abilities = { ABILITY_ANTICIPATION, ABILITY_NONE, ABILITY_OVERCOAT }, .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Wormadam"), + .cryId = CRY_WORMADAM, + .natDexNum = NATIONAL_DEX_WORMADAM, + .categoryName = _("Bagworm"), + .height = 5, + .weight = 65, .description = COMPOUND_STRING( "Its earthen skin is reasonably hard, it has\n" "no problem repelling a Starly's pecking.\n" "It is said that a Wormadam that evolves\n" "on a cold day will have a thicker cloak."), - FRONT_PIC(WormadamSandyCloak, 40, 56), - BACK_PIC(WormadamSandyCloak, 56, 64), - PALETTES(WormadamSandyCloak), - ICON(WormadamSandyCloak, 1), - LEARNSETS(WormadamSandyCloak), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_WormadamSandyCloak, + .frontPicSize = MON_COORDS_SIZE(40, 56), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Wormadam, + .frontAnimId = ANIM_SWING_CONVEX_FAST_SHORT, + .enemyMonElevation = 8, + .backPic = gMonBackPic_WormadamSandyCloak, + .backPicSize = MON_COORDS_SIZE(56, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_V_SHAKE, + .palette = gMonPalette_WormadamSandyCloak, + .shinyPalette = gMonShinyPalette_WormadamSandyCloak, + .iconSprite = gMonIcon_WormadamSandyCloak, + .iconPalIndex = 1, + FOOTPRINT(Wormadam) + .levelUpLearnset = sWormadamSandyCloakLevelUpLearnset, + .teachableLearnset = sWormadamSandyCloakTeachableLearnset, + .formSpeciesIdTable = sWormadamFormSpeciesIdTable, }, [SPECIES_WORMADAM_TRASH_CLOAK] = { - WORMADAM_MISC_INFO, .baseHP = 60, .baseAttack = 69, .baseDefense = 95, @@ -1371,19 +1616,51 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .baseSpAttack = 69, .baseSpDefense = 95, .types = MON_TYPES(TYPE_BUG, TYPE_STEEL), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 148 : 159, .evYield_Defense = 1, .evYield_SpDefense = 1, + .itemRare = ITEM_SILVER_POWDER, + .genderRatio = MON_FEMALE, + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + .abilities = { ABILITY_ANTICIPATION, ABILITY_NONE, ABILITY_OVERCOAT }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Wormadam"), + .cryId = CRY_WORMADAM, + .natDexNum = NATIONAL_DEX_WORMADAM, + .categoryName = _("Bagworm"), + .height = 5, + .weight = 65, .description = COMPOUND_STRING( "Its body, composed of refuse, blends in to\n" "the scenery enough to be inconspicuous.\n" "This seems to be the perfect way for it to\n" "evade the detection of predators."), - FRONT_PIC(WormadamTrashCloak, 48, 56), - BACK_PIC(WormadamTrashCloak, 64, 64), - PALETTES(WormadamTrashCloak), - ICON(WormadamTrashCloak, 0), - LEARNSETS(WormadamTrashCloak), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_WormadamTrashCloak, + .frontPicSize = MON_COORDS_SIZE(48, 56), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Wormadam, + .frontAnimId = ANIM_SWING_CONVEX_FAST_SHORT, + .enemyMonElevation = 8, + .backPic = gMonBackPic_WormadamTrashCloak, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_V_SHAKE, + .palette = gMonPalette_WormadamTrashCloak, + .shinyPalette = gMonShinyPalette_WormadamTrashCloak, + .iconSprite = gMonIcon_WormadamTrashCloak, + .iconPalIndex = 0, + FOOTPRINT(Wormadam) + .levelUpLearnset = sWormadamTrashCloakLevelUpLearnset, + .teachableLearnset = sWormadamTrashCloakTeachableLearnset, + .formSpeciesIdTable = sWormadamFormSpeciesIdTable, }, [SPECIES_MOTHIM] = @@ -1422,18 +1699,23 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Mothim, 64, 64), + .frontPic = gMonFrontPic_Mothim, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Mothim, .frontAnimId = ANIM_H_SLIDE_WOBBLE, .enemyMonElevation = 10, - BACK_PIC(Mothim, 64, 56), + .backPic = gMonBackPic_Mothim, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Mothim), - ICON(Mothim, 0), + .palette = gMonPalette_Mothim, + .shinyPalette = gMonShinyPalette_Mothim, + .iconSprite = gMonIcon_Mothim, + .iconPalIndex = 0, FOOTPRINT(Mothim) - LEARNSETS(Mothim), + .levelUpLearnset = sMothimLevelUpLearnset, + .teachableLearnset = sMothimTeachableLearnset, }, #endif //P_FAMILY_BURMY @@ -1473,20 +1755,26 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Combee, 64, 40), + .frontPic = gMonFrontPic_Combee, + .frontPicSize = MON_COORDS_SIZE(64, 40), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Combee, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 15, - BACK_PIC(Combee, 64, 48), + .backPic = gMonBackPic_Combee, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 22, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Combee), - PALETTE_FEMALE(Combee), - ICON(Combee, 0), + .palette = gMonPalette_Combee, + .paletteFemale = gMonPalette_CombeeF, + .shinyPalette = gMonShinyPalette_Combee, + .shinyPaletteFemale = gMonShinyPalette_CombeeF, + .iconSprite = gMonIcon_Combee, + .iconPalIndex = 0, FOOTPRINT(Combee) - LEARNSETS(Combee), .tmIlliterate = TRUE, + .levelUpLearnset = sCombeeLevelUpLearnset, + .teachableLearnset = sCombeeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 21, SPECIES_VESPIQUEN}), }, @@ -1526,18 +1814,23 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Vespiquen, 48, 56), + .frontPic = gMonFrontPic_Vespiquen, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Vespiquen, .frontAnimId = ANIM_LUNGE_GROW, .enemyMonElevation = 4, - BACK_PIC(Vespiquen, 64, 64), + .backPic = gMonBackPic_Vespiquen, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - PALETTES(Vespiquen), - ICON(Vespiquen, 0), + .palette = gMonPalette_Vespiquen, + .shinyPalette = gMonShinyPalette_Vespiquen, + .iconSprite = gMonIcon_Vespiquen, + .iconPalIndex = 0, FOOTPRINT(Vespiquen) - LEARNSETS(Vespiquen), + .levelUpLearnset = sVespiquenLevelUpLearnset, + .teachableLearnset = sVespiquenTeachableLearnset, }, #endif //P_FAMILY_COMBEE @@ -1576,18 +1869,24 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pachirisu, 48, 56), - FRONT_PIC_FEMALE(Pachirisu, 48, 56), + .frontPic = gMonFrontPic_Pachirisu, + .frontPicFemale = gMonFrontPic_PachirisuF, + .frontPicSize = MON_COORDS_SIZE(48, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Pachirisu, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Pachirisu, 64, 64), + .backPic = gMonBackPic_Pachirisu, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(Pachirisu), - ICON(Pachirisu, 0), + .palette = gMonPalette_Pachirisu, + .shinyPalette = gMonShinyPalette_Pachirisu, + .iconSprite = gMonIcon_Pachirisu, + .iconPalIndex = 0, FOOTPRINT(Pachirisu) - LEARNSETS(Pachirisu), + .levelUpLearnset = sPachirisuLevelUpLearnset, + .teachableLearnset = sPachirisuTeachableLearnset, }, #endif //P_FAMILY_PACHIRISU @@ -1626,18 +1925,24 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Buizel, 56, 48), + .frontPic = gMonFrontPic_Buizel, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Buizel, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Buizel, 64, 48), - BACK_PIC_FEMALE(Buizel, 64, 48), + .backPic = gMonBackPic_Buizel, + .backPicFemale = gMonBackPic_BuizelF, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicSizeFemale = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Buizel), - ICON(Buizel, 0), + .palette = gMonPalette_Buizel, + .shinyPalette = gMonShinyPalette_Buizel, + .iconSprite = gMonIcon_Buizel, + .iconPalIndex = 0, FOOTPRINT(Buizel) - LEARNSETS(Buizel), + .levelUpLearnset = sBuizelLevelUpLearnset, + .teachableLearnset = sBuizelTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_FLOATZEL}), }, @@ -1675,18 +1980,24 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Floatzel, 64, 64), + .frontPic = gMonFrontPic_Floatzel, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Floatzel, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(Floatzel, 64, 64), - BACK_PIC_FEMALE(Floatzel, 64, 64), + .backPic = gMonBackPic_Floatzel, + .backPicFemale = gMonBackPic_FloatzelF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Floatzel), - ICON(Floatzel, 0), + .palette = gMonPalette_Floatzel, + .shinyPalette = gMonShinyPalette_Floatzel, + .iconSprite = gMonIcon_Floatzel, + .iconPalIndex = 0, FOOTPRINT(Floatzel) - LEARNSETS(Floatzel), + .levelUpLearnset = sFloatzelLevelUpLearnset, + .teachableLearnset = sFloatzelTeachableLearnset, }, #endif //P_FAMILY_BUIZEL @@ -1726,228 +2037,349 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cherubi, 40, 32), + .frontPic = gMonFrontPic_Cherubi, + .frontPicSize = MON_COORDS_SIZE(40, 32), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Cherubi, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Cherubi, 48, 40), + .backPic = gMonBackPic_Cherubi, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Cherubi), - ICON(Cherubi, 1), + .palette = gMonPalette_Cherubi, + .shinyPalette = gMonShinyPalette_Cherubi, + .iconSprite = gMonIcon_Cherubi, + .iconPalIndex = 1, FOOTPRINT(Cherubi) - LEARNSETS(Cherubi), + .levelUpLearnset = sCherubiLevelUpLearnset, + .teachableLearnset = sCherubiTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_CHERRIM_OVERCAST}), }, -#define CHERRIM_MISC_INFO \ - .baseHP = 70, \ - .baseAttack = 60, \ - .baseDefense = 70, \ - .baseSpeed = 85, \ - .baseSpAttack = 87, \ - .baseSpDefense = 78, \ - .types = MON_TYPES(TYPE_GRASS), \ - .catchRate = 75, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 158 : 133, \ - .evYield_SpAttack = 2, \ - .itemRare = ITEM_MIRACLE_SEED, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_GRASS),\ - .abilities = { ABILITY_FLOWER_GIFT, ABILITY_NONE }, \ - .speciesName = _("Cherrim"), \ - .cryId = CRY_CHERRIM, \ - .natDexNum = NATIONAL_DEX_CHERRIM, \ - .categoryName = _("Blossom"), \ - .height = 5, \ - .weight = 93, \ - .pokemonScale = 432, \ - .pokemonOffset = 13, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Cherrim) \ - LEARNSETS(Cherrim), \ - .formSpeciesIdTable = sCherrimFormSpeciesIdTable, \ - .formChangeTable = sCherrimFormChangeTable - [SPECIES_CHERRIM_OVERCAST] = { - CHERRIM_MISC_INFO, + .baseHP = 70, + .baseAttack = 60, + .baseDefense = 70, + .baseSpeed = 85, + .baseSpAttack = 87, + .baseSpDefense = 78, + .types = MON_TYPES(TYPE_GRASS), + .catchRate = 75, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 158 : 133, + .evYield_SpAttack = 2, + .itemRare = ITEM_MIRACLE_SEED, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_GRASS), + .abilities = { ABILITY_FLOWER_GIFT, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Cherrim"), + .cryId = CRY_CHERRIM, + .natDexNum = NATIONAL_DEX_CHERRIM, + .categoryName = _("Blossom"), + .height = 5, + .weight = 93, .description = COMPOUND_STRING( "It's motionless, save for the occasional\n" "quiver. A rich array of Pokémon can be\n" "found gathered around it, drawn by the\n" "scent exuded from Cherrim's folded petals."), - FRONT_PIC(CherrimOvercast, 32, 48), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_CherrimOvercast, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_CherrimOvercast, .frontAnimId = ANIM_DEEP_V_SQUISH_AND_BOUNCE, - BACK_PIC(CherrimOvercast, 40, 56), + .backPic = gMonBackPic_CherrimOvercast, + .backPicSize = MON_COORDS_SIZE(40, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(CherrimOvercast), - ICON(CherrimOvercast, 0), + .palette = gMonPalette_CherrimOvercast, + .shinyPalette = gMonShinyPalette_CherrimOvercast, + .iconSprite = gMonIcon_CherrimOvercast, + .iconPalIndex = 0, + FOOTPRINT(Cherrim) + .levelUpLearnset = sCherrimLevelUpLearnset, + .teachableLearnset = sCherrimTeachableLearnset, + .formSpeciesIdTable = sCherrimFormSpeciesIdTable, + .formChangeTable = sCherrimFormChangeTable, }, [SPECIES_CHERRIM_SUNSHINE] = { - CHERRIM_MISC_INFO, + .baseHP = 70, + .baseAttack = 60, + .baseDefense = 70, + .baseSpeed = 85, + .baseSpAttack = 87, + .baseSpDefense = 78, + .types = MON_TYPES(TYPE_GRASS), + .catchRate = 75, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 158 : 133, + .evYield_SpAttack = 2, + .itemRare = ITEM_MIRACLE_SEED, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_GRASS), + .abilities = { ABILITY_FLOWER_GIFT, ABILITY_NONE }, .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Cherrim"), + .cryId = CRY_CHERRIM, + .natDexNum = NATIONAL_DEX_CHERRIM, + .categoryName = _("Blossom"), + .height = 5, + .weight = 93, .description = COMPOUND_STRING( "Cherrim takes this form on sunny days.\n" "Its faint scent entices bug Pokémon to it.\n" "It immediately closes its petals and\n" "becomes immobile once the sun hides."), - FRONT_PIC(CherrimSunshine, 48, 40), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_CherrimSunshine, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_CherrimSunshine, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(CherrimSunshine, 64, 56), + .backPic = gMonBackPic_CherrimSunshine, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(CherrimSunshine), - ICON(CherrimSunshine, 1), + .palette = gMonPalette_CherrimSunshine, + .shinyPalette = gMonShinyPalette_CherrimSunshine, + .iconSprite = gMonIcon_CherrimSunshine, + .iconPalIndex = 1, + FOOTPRINT(Cherrim) + .levelUpLearnset = sCherrimLevelUpLearnset, + .teachableLearnset = sCherrimTeachableLearnset, + .formSpeciesIdTable = sCherrimFormSpeciesIdTable, + .formChangeTable = sCherrimFormChangeTable, }, #endif //P_FAMILY_CHERUBI #if P_FAMILY_SHELLOS -#define SHELLOS_MISC_INFO \ - .baseHP = 76, \ - .baseAttack = 48, \ - .baseDefense = 48, \ - .baseSpeed = 34, \ - .baseSpAttack = 57, \ - .baseSpDefense = 62, \ - .types = MON_TYPES(TYPE_WATER), \ - .catchRate = 190, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 65 : 73, \ - .evYield_HP = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS), \ - .abilities = { ABILITY_STICKY_HOLD, ABILITY_STORM_DRAIN, ABILITY_SAND_FORCE }, \ - .speciesName = _("Shellos"), \ - .cryId = CRY_SHELLOS, \ - .natDexNum = NATIONAL_DEX_SHELLOS, \ - .categoryName = _("Sea Slug"), \ - .height = 3, \ - .weight = 63, \ - .pokemonScale = 530, \ - .pokemonOffset = 13, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .frontAnimFrames = sAnims_Shellos, \ - .frontAnimId = ANIM_V_STRETCH, \ - .backPicYOffset = 8, \ - .backAnimId = BACK_ANIM_H_SPRING, \ - FOOTPRINT(Shellos) \ - LEARNSETS(Shellos), \ - .formSpeciesIdTable = sShellosFormSpeciesIdTable - [SPECIES_SHELLOS_WEST_SEA] = { - SHELLOS_MISC_INFO, + .baseHP = 76, + .baseAttack = 48, + .baseDefense = 48, + .baseSpeed = 34, + .baseSpAttack = 57, + .baseSpDefense = 62, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 190, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 65 : 73, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_STICKY_HOLD, ABILITY_STORM_DRAIN, ABILITY_SAND_FORCE }, .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Shellos"), + .cryId = CRY_SHELLOS, + .natDexNum = NATIONAL_DEX_SHELLOS, + .categoryName = _("Sea Slug"), + .height = 3, + .weight = 63, .description = COMPOUND_STRING( "It oozes a purple fluid to deter enemies.\n" "While harmless, the fluid is awfully sticky.\n" "Apparently, there are more West Sea\n" "Shellos now than there were in the past."), - FRONT_PIC(ShellosWestSea, 40, 40), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_ShellosWestSea, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 13, - BACK_PIC(ShellosWestSea, 40, 56), - PALETTES(ShellosWestSea), - ICON(ShellosWestSea, 0), + .frontAnimFrames = sAnims_Shellos, + .frontAnimId = ANIM_V_STRETCH, + .backPic = gMonBackPic_ShellosWestSea, + .backPicSize = MON_COORDS_SIZE(40, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_H_SPRING, + .palette = gMonPalette_ShellosWestSea, + .shinyPalette = gMonShinyPalette_ShellosWestSea, + .iconSprite = gMonIcon_ShellosWestSea, + .iconPalIndex = 0, + FOOTPRINT(Shellos) + .levelUpLearnset = sShellosLevelUpLearnset, + .teachableLearnset = sShellosTeachableLearnset, + .formSpeciesIdTable = sShellosFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GASTRODON_WEST_SEA}), }, [SPECIES_SHELLOS_EAST_SEA] = { - SHELLOS_MISC_INFO, + .baseHP = 76, + .baseAttack = 48, + .baseDefense = 48, + .baseSpeed = 34, + .baseSpAttack = 57, + .baseSpDefense = 62, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 190, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 65 : 73, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_STICKY_HOLD, ABILITY_STORM_DRAIN, ABILITY_SAND_FORCE }, .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Shellos"), + .cryId = CRY_SHELLOS, + .natDexNum = NATIONAL_DEX_SHELLOS, + .categoryName = _("Sea Slug"), + .height = 3, + .weight = 63, .description = COMPOUND_STRING( "It's capable of spending a limited amount\n" "of time on land until their skin dries out.\n" "One theory suggests that living in cold\n" "seas causes Shellos to take on this form."), - FRONT_PIC(ShellosEastSea, 40, 40), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_ShellosEastSea, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, - BACK_PIC(ShellosEastSea, 56, 48), - PALETTES(ShellosEastSea), - ICON(ShellosEastSea, 0), + .frontAnimFrames = sAnims_Shellos, + .frontAnimId = ANIM_V_STRETCH, + .backPic = gMonBackPic_ShellosEastSea, + .backPicSize = MON_COORDS_SIZE(56, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_H_SPRING, + .palette = gMonPalette_ShellosEastSea, + .shinyPalette = gMonShinyPalette_ShellosEastSea, + .iconSprite = gMonIcon_ShellosEastSea, + .iconPalIndex = 0, + FOOTPRINT(Shellos) + .levelUpLearnset = sShellosLevelUpLearnset, + .teachableLearnset = sShellosTeachableLearnset, + .formSpeciesIdTable = sShellosFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GASTRODON_EAST_SEA}), }, -#define GASTRODON_MISC_INFO \ - .baseHP = 111, \ - .baseAttack = 83, \ - .baseDefense = 68, \ - .baseSpeed = 39, \ - .baseSpAttack = 92, \ - .baseSpDefense = 82, \ - .types = MON_TYPES(TYPE_WATER, TYPE_GROUND), \ - .catchRate = 75, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 166 : 176, \ - .evYield_HP = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS), \ - .abilities = { ABILITY_STICKY_HOLD, ABILITY_STORM_DRAIN, ABILITY_SAND_FORCE }, \ - .speciesName = _("Gastrodon"), \ - .cryId = CRY_GASTRODON, \ - .natDexNum = NATIONAL_DEX_GASTRODON, \ - .categoryName = _("Sea Slug"), \ - .height = 9, \ - .weight = 299, \ - .pokemonScale = 338, \ - .pokemonOffset = 8, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .frontPicYOffset = 8, \ - .frontAnimFrames = sAnims_Gastrodon, \ - .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, \ - .backPicYOffset = 3, \ - .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, \ - FOOTPRINT(Gastrodon) \ - LEARNSETS(Gastrodon), \ - .formSpeciesIdTable = sGastrodonFormSpeciesIdTable - [SPECIES_GASTRODON_WEST_SEA] = { - GASTRODON_MISC_INFO, + .baseHP = 111, + .baseAttack = 83, + .baseDefense = 68, + .baseSpeed = 39, + .baseSpAttack = 92, + .baseSpDefense = 82, + .types = MON_TYPES(TYPE_WATER, TYPE_GROUND), + .catchRate = 75, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 166 : 176, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_STICKY_HOLD, ABILITY_STORM_DRAIN, ABILITY_SAND_FORCE }, .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Gastrodon"), + .cryId = CRY_GASTRODON, + .natDexNum = NATIONAL_DEX_GASTRODON, + .categoryName = _("Sea Slug"), + .height = 9, + .weight = 299, .description = COMPOUND_STRING( "It appears on shallow-water beaches to\n" "eat sand for nourishment. Should one\n" "Gastrodon encounter another of a\n" "different color, a fierce battle will ensue."), - FRONT_PIC(GastrodonWestSea, 48, 48), - BACK_PIC(GastrodonWestSea, 56, 64), - PALETTES(GastrodonWestSea), - ICON(GastrodonWestSea, 0), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_GastrodonWestSea, + .frontPicSize = MON_COORDS_SIZE(48, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Gastrodon, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + .backPic = gMonBackPic_GastrodonWestSea, + .backPicSize = MON_COORDS_SIZE(56, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + .palette = gMonPalette_GastrodonWestSea, + .shinyPalette = gMonShinyPalette_GastrodonWestSea, + .iconSprite = gMonIcon_GastrodonWestSea, + .iconPalIndex = 0, + FOOTPRINT(Gastrodon) + .levelUpLearnset = sGastrodonLevelUpLearnset, + .teachableLearnset = sGastrodonTeachableLearnset, + .formSpeciesIdTable = sGastrodonFormSpeciesIdTable, }, [SPECIES_GASTRODON_EAST_SEA] = { - GASTRODON_MISC_INFO, + .baseHP = 111, + .baseAttack = 83, + .baseDefense = 68, + .baseSpeed = 39, + .baseSpAttack = 92, + .baseSpDefense = 82, + .types = MON_TYPES(TYPE_WATER, TYPE_GROUND), + .catchRate = 75, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 166 : 176, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_STICKY_HOLD, ABILITY_STORM_DRAIN, ABILITY_SAND_FORCE }, .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Gastrodon"), + .cryId = CRY_GASTRODON, + .natDexNum = NATIONAL_DEX_GASTRODON, + .categoryName = _("Sea Slug"), + .height = 9, + .weight = 299, .description = COMPOUND_STRING( "Found more often on land than in the sea.\n" "They normally live in rocky seashores, but\n" "when cloudy or rainy, they can sometimes\n" "be found on mountains, far from the sea."), - FRONT_PIC(GastrodonEastSea, 56, 48), - BACK_PIC(GastrodonEastSea, 56, 64), - PALETTES(GastrodonEastSea), - ICON(GastrodonEastSea, 0), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_GastrodonEastSea, + .frontPicSize = MON_COORDS_SIZE(56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Gastrodon, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + .backPic = gMonBackPic_GastrodonEastSea, + .backPicSize = MON_COORDS_SIZE(56, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + .palette = gMonPalette_GastrodonEastSea, + .shinyPalette = gMonShinyPalette_GastrodonEastSea, + .iconSprite = gMonIcon_GastrodonEastSea, + .iconPalIndex = 0, + FOOTPRINT(Gastrodon) + .levelUpLearnset = sGastrodonLevelUpLearnset, + .teachableLearnset = sGastrodonTeachableLearnset, + .formSpeciesIdTable = sGastrodonFormSpeciesIdTable, }, #endif //P_FAMILY_SHELLOS @@ -1986,18 +2418,23 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Drifloon, 32, 56), + .frontPic = gMonFrontPic_Drifloon, + .frontPicSize = MON_COORDS_SIZE(32, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Drifloon, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 5, - BACK_PIC(Drifloon, 40, 64), + .backPic = gMonBackPic_Drifloon, + .backPicSize = MON_COORDS_SIZE(40, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Drifloon), - ICON(Drifloon, 2), + .palette = gMonPalette_Drifloon, + .shinyPalette = gMonShinyPalette_Drifloon, + .iconSprite = gMonIcon_Drifloon, + .iconPalIndex = 2, FOOTPRINT(Drifloon) - LEARNSETS(Drifloon), + .levelUpLearnset = sDrifloonLevelUpLearnset, + .teachableLearnset = sDrifloonTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_DRIFBLIM}), }, @@ -2035,18 +2472,23 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Drifblim, 56, 56), + .frontPic = gMonFrontPic_Drifblim, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Drifblim, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 7, - BACK_PIC(Drifblim, 64, 64), + .backPic = gMonBackPic_Drifblim, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Drifblim), - ICON(Drifblim, 2), + .palette = gMonPalette_Drifblim, + .shinyPalette = gMonShinyPalette_Drifblim, + .iconSprite = gMonIcon_Drifblim, + .iconPalIndex = 2, FOOTPRINT(Drifblim) - LEARNSETS(Drifblim), + .levelUpLearnset = sDrifblimLevelUpLearnset, + .teachableLearnset = sDrifblimTeachableLearnset, }, #endif //P_FAMILY_DRIFLOON @@ -2085,40 +2527,27 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Buneary, 32, 64), + .frontPic = gMonFrontPic_Buneary, + .frontPicSize = MON_COORDS_SIZE(32, 64), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Buneary, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(Buneary, 64, 64), + .backPic = gMonBackPic_Buneary, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Buneary), - ICON(Buneary, 2), + .palette = gMonPalette_Buneary, + .shinyPalette = gMonShinyPalette_Buneary, + .iconSprite = gMonIcon_Buneary, + .iconPalIndex = 2, FOOTPRINT(Buneary) - LEARNSETS(Buneary), + .levelUpLearnset = sBunearyLevelUpLearnset, + .teachableLearnset = sBunearyTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_LOPUNNY}), }, -#define LOPUNNY_MISC_INFO \ - .catchRate = 60, \ - .evYield_Speed = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = 140, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE),\ - .bodyColor = BODY_COLOR_BROWN, \ - .speciesName = _("Lopunny"), \ - .natDexNum = NATIONAL_DEX_LOPUNNY, \ - .categoryName = _("Rabbit"), \ - FOOTPRINT(Lopunny) \ - LEARNSETS(Lopunny), \ - .formSpeciesIdTable = sLopunnyFormSpeciesIdTable, \ - .formChangeTable = sLopunnyFormChangeTable - [SPECIES_LOPUNNY] = { - LOPUNNY_MISC_INFO, .baseHP = 65, .baseAttack = 76, .baseDefense = 84, @@ -2126,9 +2555,20 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .baseSpAttack = 54, .baseSpDefense = 96, .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 60, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 168 : 178, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 140, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE), .abilities = { ABILITY_CUTE_CHARM, ABILITY_KLUTZ, ABILITY_LIMBER }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Lopunny"), .cryId = CRY_LOPUNNY, + .natDexNum = NATIONAL_DEX_LOPUNNY, + .categoryName = _("Rabbit"), .height = 12, .weight = 333, .description = COMPOUND_STRING( @@ -2140,21 +2580,29 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Lopunny, 56, 56), + .frontPic = gMonFrontPic_Lopunny, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Lopunny, .frontAnimId = ANIM_SHRINK_GROW, - BACK_PIC(Lopunny, 64, 56), + .backPic = gMonBackPic_Lopunny, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Lopunny), - ICON(Lopunny, 2), + .palette = gMonPalette_Lopunny, + .shinyPalette = gMonShinyPalette_Lopunny, + .iconSprite = gMonIcon_Lopunny, + .iconPalIndex = 2, + FOOTPRINT(Lopunny) + .levelUpLearnset = sLopunnyLevelUpLearnset, + .teachableLearnset = sLopunnyTeachableLearnset, + .formSpeciesIdTable = sLopunnyFormSpeciesIdTable, + .formChangeTable = sLopunnyFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_LOPUNNY_MEGA] = { - LOPUNNY_MISC_INFO, .baseHP = 65, .baseAttack = 136, .baseDefense = 94, @@ -2162,9 +2610,20 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .baseSpAttack = 54, .baseSpDefense = 96, .types = MON_TYPES(TYPE_NORMAL, TYPE_FIGHTING), + .catchRate = 60, .expYield = 203, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 140, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE), .abilities = { ABILITY_SCRAPPY, ABILITY_SCRAPPY, ABILITY_SCRAPPY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Lopunny"), .cryId = CRY_LOPUNNY_MEGA, + .natDexNum = NATIONAL_DEX_LOPUNNY, + .categoryName = _("Rabbit"), .height = 13, .weight = 283, .description = COMPOUND_STRING( @@ -2176,16 +2635,25 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(LopunnyMega, 56, 64), + .frontPic = gMonFrontPic_LopunnyMega, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_LopunnyMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(LopunnyMega, 64, 64), + .backPic = gMonBackPic_LopunnyMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(LopunnyMega), - ICON(LopunnyMega, 2), + .palette = gMonPalette_LopunnyMega, + .shinyPalette = gMonShinyPalette_LopunnyMega, + .iconSprite = gMonIcon_LopunnyMega, + .iconPalIndex = 2, + FOOTPRINT(Lopunny) .isMegaEvolution = TRUE, + .levelUpLearnset = sLopunnyLevelUpLearnset, + .teachableLearnset = sLopunnyTeachableLearnset, + .formSpeciesIdTable = sLopunnyFormSpeciesIdTable, + .formChangeTable = sLopunnyFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_BUNEARY @@ -2225,17 +2693,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Glameow, 56, 56), + .frontPic = gMonFrontPic_Glameow, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Glameow, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Glameow, 64, 56), + .backPic = gMonBackPic_Glameow, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Glameow), - ICON(Glameow, 0), + .palette = gMonPalette_Glameow, + .shinyPalette = gMonShinyPalette_Glameow, + .iconSprite = gMonIcon_Glameow, + .iconPalIndex = 0, FOOTPRINT(Glameow) - LEARNSETS(Glameow), + .levelUpLearnset = sGlameowLevelUpLearnset, + .teachableLearnset = sGlameowTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_PURUGLY}), }, @@ -2273,17 +2746,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Purugly, 64, 56), + .frontPic = gMonFrontPic_Purugly, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Purugly, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Purugly, 64, 48), + .backPic = gMonBackPic_Purugly, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(Purugly), - ICON(Purugly, 0), + .palette = gMonPalette_Purugly, + .shinyPalette = gMonShinyPalette_Purugly, + .iconSprite = gMonIcon_Purugly, + .iconPalIndex = 0, FOOTPRINT(Purugly) - LEARNSETS(Purugly), + .levelUpLearnset = sPuruglyLevelUpLearnset, + .teachableLearnset = sPuruglyTeachableLearnset, }, #endif //P_FAMILY_GLAMEOW @@ -2322,17 +2800,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Stunky, 56, 48), + .frontPic = gMonFrontPic_Stunky, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Stunky, .frontAnimId = ANIM_TIP_MOVE_FORWARD, - BACK_PIC(Stunky, 64, 64), + .backPic = gMonBackPic_Stunky, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Stunky), - ICON(Stunky, 2), + .palette = gMonPalette_Stunky, + .shinyPalette = gMonShinyPalette_Stunky, + .iconSprite = gMonIcon_Stunky, + .iconPalIndex = 2, FOOTPRINT(Stunky) - LEARNSETS(Stunky), + .levelUpLearnset = sStunkyLevelUpLearnset, + .teachableLearnset = sStunkyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SKUNTANK}), }, @@ -2370,17 +2853,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 9, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Skuntank, 64, 56), + .frontPic = gMonFrontPic_Skuntank, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Skuntank, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Skuntank, 64, 64), + .backPic = gMonBackPic_Skuntank, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_H_STRETCH, - PALETTES(Skuntank), - ICON(Skuntank, 2), + .palette = gMonPalette_Skuntank, + .shinyPalette = gMonShinyPalette_Skuntank, + .iconSprite = gMonIcon_Skuntank, + .iconPalIndex = 2, FOOTPRINT(Skuntank) - LEARNSETS(Skuntank), + .levelUpLearnset = sSkuntankLevelUpLearnset, + .teachableLearnset = sSkuntankTeachableLearnset, }, #endif //P_FAMILY_STUNKY @@ -2420,18 +2908,23 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Bronzor, 32, 40), + .frontPic = gMonFrontPic_Bronzor, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Bronzor, .frontAnimId = ANIM_H_SLIDE_WOBBLE, .enemyMonElevation = 9, - BACK_PIC(Bronzor, 40, 48), + .backPic = gMonBackPic_Bronzor, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Bronzor), - ICON(Bronzor, 0), + .palette = gMonPalette_Bronzor, + .shinyPalette = gMonShinyPalette_Bronzor, + .iconSprite = gMonIcon_Bronzor, + .iconPalIndex = 0, FOOTPRINT(Bronzor) - LEARNSETS(Bronzor), + .levelUpLearnset = sBronzorLevelUpLearnset, + .teachableLearnset = sBronzorTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_BRONZONG}), }, @@ -2471,18 +2964,23 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Bronzong, 56, 56), + .frontPic = gMonFrontPic_Bronzong, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Bronzong, .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, .enemyMonElevation = 7, - BACK_PIC(Bronzong, 64, 56), + .backPic = gMonBackPic_Bronzong, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Bronzong), - ICON(Bronzong, 0), + .palette = gMonPalette_Bronzong, + .shinyPalette = gMonShinyPalette_Bronzong, + .iconSprite = gMonIcon_Bronzong, + .iconPalIndex = 0, FOOTPRINT(Bronzong) - LEARNSETS(Bronzong), + .levelUpLearnset = sBronzongLevelUpLearnset, + .teachableLearnset = sBronzongTeachableLearnset, }, #endif //P_FAMILY_BRONZOR @@ -2522,17 +3020,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Chatot, 40, 48), + .frontPic = gMonFrontPic_Chatot, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Chatot, .frontAnimId = ANIM_V_SHAKE_TWICE, - BACK_PIC(Chatot, 48, 48), + .backPic = gMonBackPic_Chatot, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Chatot), - ICON(Chatot, 0), + .palette = gMonPalette_Chatot, + .shinyPalette = gMonShinyPalette_Chatot, + .iconSprite = gMonIcon_Chatot, + .iconPalIndex = 0, FOOTPRINT(Chatot) - LEARNSETS(Chatot), + .levelUpLearnset = sChatotLevelUpLearnset, + .teachableLearnset = sChatotTeachableLearnset, }, #endif //P_FAMILY_CHATOT @@ -2572,17 +3075,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Spiritomb, 56, 56), + .frontPic = gMonFrontPic_Spiritomb, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Spiritomb, .frontAnimId = ANIM_GROW_IN_STAGES, - BACK_PIC(Spiritomb, 64, 56), + .backPic = gMonBackPic_Spiritomb, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Spiritomb), - ICON(Spiritomb, 5), + .palette = gMonPalette_Spiritomb, + .shinyPalette = gMonShinyPalette_Spiritomb, + .iconSprite = gMonIcon_Spiritomb, + .iconPalIndex = 5, FOOTPRINT(Spiritomb) - LEARNSETS(Spiritomb), + .levelUpLearnset = sSpiritombLevelUpLearnset, + .teachableLearnset = sSpiritombTeachableLearnset, }, #endif //P_FAMILY_SPIRITOMB @@ -2621,19 +3129,26 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Gible, 48, 48), - FRONT_PIC_FEMALE(Gible, 48, 48), + .frontPic = gMonFrontPic_Gible, + .frontPicFemale = gMonFrontPic_GibleF, + .frontPicSize = MON_COORDS_SIZE(48, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Gible, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Gible, 56, 48), - BACK_PIC_FEMALE(Gible, 56, 48), + .backPic = gMonBackPic_Gible, + .backPicFemale = gMonBackPic_GibleF, + .backPicSize = MON_COORDS_SIZE(56, 48), + .backPicSizeFemale = MON_COORDS_SIZE(56, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Gible), - ICON(Gible, 0), + .palette = gMonPalette_Gible, + .shinyPalette = gMonShinyPalette_Gible, + .iconSprite = gMonIcon_Gible, + .iconPalIndex = 0, FOOTPRINT(Gible) - LEARNSETS(Gible), + .levelUpLearnset = sGibleLevelUpLearnset, + .teachableLearnset = sGibleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_GABITE}), }, @@ -2671,55 +3186,39 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 2, .trainerScale = 262, .trainerOffset = 0, - FRONT_PIC(Gabite, 64, 64), - FRONT_PIC_FEMALE(Gabite, 64, 64), + .frontPic = gMonFrontPic_Gabite, + .frontPicFemale = gMonFrontPic_GabiteF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Gabite, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Gabite, 64, 64), - BACK_PIC_FEMALE(Gabite, 64, 64), + .backPic = gMonBackPic_Gabite, + .backPicFemale = gMonBackPic_GabiteF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Gabite), - ICON(Gabite, 0), + .palette = gMonPalette_Gabite, + .shinyPalette = gMonShinyPalette_Gabite, + .iconSprite = gMonIcon_Gabite, + .iconPalIndex = 0, FOOTPRINT(Gabite) - LEARNSETS(Gabite), + .levelUpLearnset = sGabiteLevelUpLearnset, + .teachableLearnset = sGabiteTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_GARCHOMP}), }, -#define GARCHOMP_MISC_INFO \ - .types = MON_TYPES(TYPE_DRAGON, TYPE_GROUND), \ - .catchRate = 45, \ - .evYield_Attack = 3, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 40, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_DRAGON),\ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Garchomp"), \ - .natDexNum = NATIONAL_DEX_GARCHOMP, \ - .categoryName = _("Mach"), \ - .height = 19, \ - .weight = 950, \ - .pokemonScale = 256, \ - .pokemonOffset = 1, \ - .trainerScale = 326, \ - .trainerOffset = 4, \ - FOOTPRINT(Garchomp) \ - LEARNSETS(Garchomp), \ - .formSpeciesIdTable = sGarchompFormSpeciesIdTable, \ - .formChangeTable = sGarchompFormChangeTable - [SPECIES_GARCHOMP] = { - GARCHOMP_MISC_INFO, .baseHP = 108, .baseAttack = 130, .baseDefense = 95, .baseSpeed = 102, .baseSpAttack = 80, .baseSpDefense = 85, + .types = MON_TYPES(TYPE_DRAGON, TYPE_GROUND), + .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 300, #elif P_UPDATED_EXP_YIELDS >= GEN_5 @@ -2727,53 +3226,105 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = #else .expYield = 218, #endif + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_DRAGON), .abilities = { ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_ROUGH_SKIN }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Garchomp"), .cryId = CRY_GARCHOMP, + .natDexNum = NATIONAL_DEX_GARCHOMP, + .categoryName = _("Mach"), + .height = 19, + .weight = 950, .description = COMPOUND_STRING( "When it folds up its body and extends its\n" "wings, it looks like a jet plane. It is\n" "covered in fine scales that reduce drag,\n" "enabling it to fly at high speeds."), - FRONT_PIC(Garchomp, 64, 64), - FRONT_PIC_FEMALE(Garchomp, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + .frontPic = gMonFrontPic_Garchomp, + .frontPicFemale = gMonFrontPic_GarchompF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Garchomp, .frontAnimId = ANIM_V_SHAKE_TWICE, - BACK_PIC(Garchomp, 64, 56), + .backPic = gMonBackPic_Garchomp, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Garchomp), - ICON(Garchomp, 0), + .palette = gMonPalette_Garchomp, + .shinyPalette = gMonShinyPalette_Garchomp, + .iconSprite = gMonIcon_Garchomp, + .iconPalIndex = 0, + FOOTPRINT(Garchomp) + .levelUpLearnset = sGarchompLevelUpLearnset, + .teachableLearnset = sGarchompTeachableLearnset, + .formSpeciesIdTable = sGarchompFormSpeciesIdTable, + .formChangeTable = sGarchompFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_GARCHOMP_MEGA] = { - GARCHOMP_MISC_INFO, .baseHP = 108, .baseAttack = 170, .baseDefense = 115, .baseSpeed = 92, .baseSpAttack = 120, .baseSpDefense = 95, + .types = MON_TYPES(TYPE_DRAGON, TYPE_GROUND), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 350 : 315, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_DRAGON), .abilities = { ABILITY_SAND_FORCE, ABILITY_SAND_FORCE, ABILITY_SAND_FORCE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Garchomp"), .cryId = CRY_GARCHOMP_MEGA, + .natDexNum = NATIONAL_DEX_GARCHOMP, + .categoryName = _("Mach"), + .height = 19, + .weight = 950, .description = COMPOUND_STRING( "Excess energy melted its arms and wings\n" "into giant scythes, sending it mad with\n" "rage. It swings its scythes wildly and\n" "slices the ground to pieces."), - FRONT_PIC(GarchompMega, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + .frontPic = gMonFrontPic_GarchompMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_GarchompMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(GarchompMega, 64, 56), + .backPic = gMonBackPic_GarchompMega, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(GarchompMega), - ICON(GarchompMega, 0), + .palette = gMonPalette_GarchompMega, + .shinyPalette = gMonShinyPalette_GarchompMega, + .iconSprite = gMonIcon_GarchompMega, + .iconPalIndex = 0, + FOOTPRINT(Garchomp) .isMegaEvolution = TRUE, + .levelUpLearnset = sGarchompLevelUpLearnset, + .teachableLearnset = sGarchompTeachableLearnset, + .formSpeciesIdTable = sGarchompFormSpeciesIdTable, + .formChangeTable = sGarchompFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_GIBLE @@ -2813,51 +3364,49 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Riolu, 48, 48), + .frontPic = gMonFrontPic_Riolu, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Riolu, .frontAnimId = ANIM_RAPID_H_HOPS, - BACK_PIC(Riolu, 64, 64), + .backPic = gMonBackPic_Riolu, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 8, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Riolu), - ICON(Riolu, 2), + .palette = gMonPalette_Riolu, + .shinyPalette = gMonShinyPalette_Riolu, + .iconSprite = gMonIcon_Riolu, + .iconPalIndex = 2, FOOTPRINT(Riolu) - LEARNSETS(Riolu), + .levelUpLearnset = sRioluLevelUpLearnset, + .teachableLearnset = sRioluTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP_DAY, 0, SPECIES_LUCARIO}), }, -#define LUCARIO_MISC_INFO \ - .types = MON_TYPES(TYPE_FIGHTING, TYPE_STEEL), \ - .catchRate = 45, \ - .evYield_Attack = 1, \ - .evYield_SpAttack = 1, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE),\ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Lucario"), \ - .natDexNum = NATIONAL_DEX_LUCARIO, \ - .categoryName = _("Aura"), \ - FOOTPRINT(Lucario) \ - LEARNSETS(Lucario), \ - .formSpeciesIdTable = sLucarioFormSpeciesIdTable, \ - .formChangeTable = sLucarioFormChangeTable - [SPECIES_LUCARIO] = { - LUCARIO_MISC_INFO, .baseHP = 70, .baseAttack = 110, .baseDefense = 70, .baseSpeed = 90, .baseSpAttack = 115, .baseSpDefense = 70, + .types = MON_TYPES(TYPE_FIGHTING, TYPE_STEEL), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 184 : 204, + .evYield_Attack = 1, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE), .abilities = { ABILITY_STEADFAST, ABILITY_INNER_FOCUS, ABILITY_JUSTIFIED }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Lucario"), .cryId = CRY_LUCARIO, + .natDexNum = NATIONAL_DEX_LUCARIO, + .categoryName = _("Aura"), .height = 12, .weight = 540, .description = COMPOUND_STRING( @@ -2869,30 +3418,51 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Lucario, 48, 56), + .frontPic = gMonFrontPic_Lucario, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Lucario, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Lucario, 64, 64), + .backPic = gMonBackPic_Lucario, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Lucario), - ICON(Lucario, 2), + .palette = gMonPalette_Lucario, + .shinyPalette = gMonShinyPalette_Lucario, + .iconSprite = gMonIcon_Lucario, + .iconPalIndex = 2, + FOOTPRINT(Lucario) + .levelUpLearnset = sLucarioLevelUpLearnset, + .teachableLearnset = sLucarioTeachableLearnset, + .formSpeciesIdTable = sLucarioFormSpeciesIdTable, + .formChangeTable = sLucarioFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_LUCARIO_MEGA] = { - LUCARIO_MISC_INFO, .baseHP = 70, .baseAttack = 145, .baseDefense = 88, .baseSpeed = 112, .baseSpAttack = 140, .baseSpDefense = 70, + .types = MON_TYPES(TYPE_FIGHTING, TYPE_STEEL), + .catchRate = 45, .expYield = 219, + .evYield_Attack = 1, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE), .abilities = { ABILITY_ADAPTABILITY, ABILITY_ADAPTABILITY, ABILITY_ADAPTABILITY }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Lucario"), .cryId = CRY_LUCARIO_MEGA, + .natDexNum = NATIONAL_DEX_LUCARIO, + .categoryName = _("Aura"), .height = 13, .weight = 575, .description = COMPOUND_STRING( @@ -2904,16 +3474,25 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(LucarioMega, 48, 64), + .frontPic = gMonFrontPic_LucarioMega, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_LucarioMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(LucarioMega, 64, 64), + .backPic = gMonBackPic_LucarioMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(LucarioMega), - ICON(LucarioMega, 2), + .palette = gMonPalette_LucarioMega, + .shinyPalette = gMonShinyPalette_LucarioMega, + .iconSprite = gMonIcon_LucarioMega, + .iconPalIndex = 2, + FOOTPRINT(Lucario) .isMegaEvolution = TRUE, + .levelUpLearnset = sLucarioLevelUpLearnset, + .teachableLearnset = sLucarioTeachableLearnset, + .formSpeciesIdTable = sLucarioFormSpeciesIdTable, + .formChangeTable = sLucarioFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_RIOLU @@ -2953,21 +3532,28 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 11, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Hippopotas, 64, 40), + .frontPic = gMonFrontPic_Hippopotas, + .frontPicSize = MON_COORDS_SIZE(64, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Hippopotas, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Hippopotas, 64, 40), + .backPic = gMonBackPic_Hippopotas, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 14, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Hippopotas), - PALETTE_FEMALE(Hippopotas), - ICON(Hippopotas, 1), + .palette = gMonPalette_Hippopotas, + .paletteFemale = gMonPalette_HippopotasF, + .shinyPalette = gMonShinyPalette_Hippopotas, + .shinyPaletteFemale = gMonShinyPalette_HippopotasF, + .iconSprite = gMonIcon_Hippopotas, + .iconPalIndex = 1, #if P_CUSTOM_GENDER_DIFF_ICONS == TRUE - ICON_FEMALE(Hippopotas, 1), + .iconSpriteFemale = gMonIcon_HippopotasF, + .iconPalIndexFemale = 1, #endif FOOTPRINT(Hippopotas) - LEARNSETS(Hippopotas), + .levelUpLearnset = sHippopotasLevelUpLearnset, + .teachableLearnset = sHippopotasTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_HIPPOWDON}), }, @@ -3005,21 +3591,28 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 2, .trainerScale = 334, .trainerOffset = 4, - FRONT_PIC(Hippowdon, 64, 56), + .frontPic = gMonFrontPic_Hippowdon, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Hippowdon, .frontAnimId = ANIM_V_SHAKE_TWICE, - BACK_PIC(Hippowdon, 64, 56), + .backPic = gMonBackPic_Hippowdon, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Hippowdon), - PALETTE_FEMALE(Hippowdon), - ICON(Hippowdon, 1), + .palette = gMonPalette_Hippowdon, + .paletteFemale = gMonPalette_HippowdonF, + .shinyPalette = gMonShinyPalette_Hippowdon, + .shinyPaletteFemale = gMonShinyPalette_HippowdonF, + .iconSprite = gMonIcon_Hippowdon, + .iconPalIndex = 1, #if P_CUSTOM_GENDER_DIFF_ICONS == TRUE - ICON_FEMALE(Hippowdon, 1), + .iconSpriteFemale = gMonIcon_HippowdonF, + .iconPalIndexFemale = 1, #endif FOOTPRINT(Hippowdon) - LEARNSETS(Hippowdon), + .levelUpLearnset = sHippowdonLevelUpLearnset, + .teachableLearnset = sHippowdonTeachableLearnset, }, #endif //P_FAMILY_HIPPOPOTAS @@ -3059,17 +3652,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 12, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Skorupi, 48, 48), + .frontPic = gMonFrontPic_Skorupi, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Skorupi, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(Skorupi, 64, 56), + .backPic = gMonBackPic_Skorupi, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Skorupi), - ICON(Skorupi, 0), + .palette = gMonPalette_Skorupi, + .shinyPalette = gMonShinyPalette_Skorupi, + .iconSprite = gMonIcon_Skorupi, + .iconPalIndex = 0, FOOTPRINT(Skorupi) - LEARNSETS(Skorupi), + .levelUpLearnset = sSkorupiLevelUpLearnset, + .teachableLearnset = sSkorupiTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_DRAPION}), }, @@ -3108,17 +3706,22 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 5, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Drapion, 64, 56), + .frontPic = gMonFrontPic_Drapion, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Drapion, .frontAnimId = ANIM_V_JUMPS_BIG, - BACK_PIC(Drapion, 64, 56), + .backPic = gMonBackPic_Drapion, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Drapion), - ICON(Drapion, 2), + .palette = gMonPalette_Drapion, + .shinyPalette = gMonShinyPalette_Drapion, + .iconSprite = gMonIcon_Drapion, + .iconPalIndex = 2, FOOTPRINT(Drapion) - LEARNSETS(Drapion), + .levelUpLearnset = sDrapionLevelUpLearnset, + .teachableLearnset = sDrapionTeachableLearnset, }, #endif //P_FAMILY_SKORUPI @@ -3158,19 +3761,26 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Croagunk, 40, 48), - FRONT_PIC_FEMALE(Croagunk, 40, 48), + .frontPic = gMonFrontPic_Croagunk, + .frontPicFemale = gMonFrontPic_CroagunkF, + .frontPicSize = MON_COORDS_SIZE(40, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Croagunk, .frontAnimId = ANIM_RAPID_H_HOPS, - BACK_PIC(Croagunk, 56, 56), - BACK_PIC_FEMALE(Croagunk, 56, 56), + .backPic = gMonBackPic_Croagunk, + .backPicFemale = gMonBackPic_CroagunkF, + .backPicSize = MON_COORDS_SIZE(56, 56), + .backPicSizeFemale = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_GROW, - PALETTES(Croagunk), - ICON(Croagunk, 0), + .palette = gMonPalette_Croagunk, + .shinyPalette = gMonShinyPalette_Croagunk, + .iconSprite = gMonIcon_Croagunk, + .iconPalIndex = 0, FOOTPRINT(Croagunk) - LEARNSETS(Croagunk), + .levelUpLearnset = sCroagunkLevelUpLearnset, + .teachableLearnset = sCroagunkTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_TOXICROAK}), }, @@ -3209,19 +3819,26 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Toxicroak, 56, 56), - FRONT_PIC_FEMALE(Toxicroak, 56, 56), + .frontPic = gMonFrontPic_Toxicroak, + .frontPicFemale = gMonFrontPic_ToxicroakF, + .frontPicSize = MON_COORDS_SIZE(56, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Toxicroak, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Toxicroak, 56, 56), - BACK_PIC_FEMALE(Toxicroak, 56, 56), + .backPic = gMonBackPic_Toxicroak, + .backPicFemale = gMonBackPic_ToxicroakF, + .backPicSize = MON_COORDS_SIZE(56, 56), + .backPicSizeFemale = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Toxicroak), - ICON(Toxicroak, 0), + .palette = gMonPalette_Toxicroak, + .shinyPalette = gMonShinyPalette_Toxicroak, + .iconSprite = gMonIcon_Toxicroak, + .iconPalIndex = 0, FOOTPRINT(Toxicroak) - LEARNSETS(Toxicroak), + .levelUpLearnset = sToxicroakLevelUpLearnset, + .teachableLearnset = sToxicroakTeachableLearnset, }, #endif //P_FAMILY_CROAGUNK @@ -3260,18 +3877,23 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 2, .trainerScale = 262, .trainerOffset = 0, - FRONT_PIC(Carnivine, 64, 48), + .frontPic = gMonFrontPic_Carnivine, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Carnivine, .frontAnimId = ANIM_FIGURE_8, .enemyMonElevation = 8, - BACK_PIC(Carnivine, 64, 56), + .backPic = gMonBackPic_Carnivine, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Carnivine), - ICON(Carnivine, 1), + .palette = gMonPalette_Carnivine, + .shinyPalette = gMonShinyPalette_Carnivine, + .iconSprite = gMonIcon_Carnivine, + .iconPalIndex = 1, FOOTPRINT(Carnivine) - LEARNSETS(Carnivine), + .levelUpLearnset = sCarnivineLevelUpLearnset, + .teachableLearnset = sCarnivineTeachableLearnset, }, #endif //P_FAMILY_CARNIVINE @@ -3310,19 +3932,26 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Finneon, 32, 40), - FRONT_PIC_FEMALE(Finneon, 32, 40), + .frontPic = gMonFrontPic_Finneon, + .frontPicFemale = gMonFrontPic_FinneonF, + .frontPicSize = MON_COORDS_SIZE(32, 40), + .frontPicSizeFemale = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Finneon, .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, - BACK_PIC(Finneon, 56, 40), - BACK_PIC_FEMALE(Finneon, 56, 40), + .backPic = gMonBackPic_Finneon, + .backPicFemale = gMonBackPic_FinneonF, + .backPicSize = MON_COORDS_SIZE(56, 40), + .backPicSizeFemale = MON_COORDS_SIZE(56, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Finneon), - ICON(Finneon, 0), + .palette = gMonPalette_Finneon, + .shinyPalette = gMonShinyPalette_Finneon, + .iconSprite = gMonIcon_Finneon, + .iconPalIndex = 0, FOOTPRINT(Finneon) - LEARNSETS(Finneon), + .levelUpLearnset = sFinneonLevelUpLearnset, + .teachableLearnset = sFinneonTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_LUMINEON}), }, @@ -3360,19 +3989,26 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Lumineon, 56, 56), - FRONT_PIC_FEMALE(Lumineon, 56, 56), + .frontPic = gMonFrontPic_Lumineon, + .frontPicFemale = gMonFrontPic_LumineonF, + .frontPicSize = MON_COORDS_SIZE(56, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Lumineon, .frontAnimId = ANIM_H_STRETCH, - BACK_PIC(Lumineon, 56, 64), - BACK_PIC_FEMALE(Lumineon, 56, 64), + .backPic = gMonBackPic_Lumineon, + .backPicFemale = gMonBackPic_LumineonF, + .backPicSize = MON_COORDS_SIZE(56, 64), + .backPicSizeFemale = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Lumineon), - ICON(Lumineon, 0), + .palette = gMonPalette_Lumineon, + .shinyPalette = gMonShinyPalette_Lumineon, + .iconSprite = gMonIcon_Lumineon, + .iconPalIndex = 0, FOOTPRINT(Lumineon) - LEARNSETS(Lumineon), + .levelUpLearnset = sLumineonLevelUpLearnset, + .teachableLearnset = sLumineonTeachableLearnset, }, #endif //P_FAMILY_FINNEON @@ -3412,54 +4048,54 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Snover, 64, 48), - FRONT_PIC_FEMALE(Snover, 64, 48), + .frontPic = gMonFrontPic_Snover, + .frontPicFemale = gMonFrontPic_SnoverF, + .frontPicSize = MON_COORDS_SIZE(64, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Snover, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Snover, 64, 56), - BACK_PIC_FEMALE(Snover, 64, 56), + .backPic = gMonBackPic_Snover, + .backPicFemale = gMonBackPic_SnoverF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Snover), - ICON(Snover, 1), + .palette = gMonPalette_Snover, + .shinyPalette = gMonShinyPalette_Snover, + .iconSprite = gMonIcon_Snover, + .iconPalIndex = 1, FOOTPRINT(Snover) - LEARNSETS(Snover), + .levelUpLearnset = sSnoverLevelUpLearnset, + .teachableLearnset = sSnoverTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_ABOMASNOW}), }, -#define ABOMASNOW_MISC_INFO \ - .types = MON_TYPES(TYPE_GRASS, TYPE_ICE), \ - .catchRate = 60, \ - .evYield_Attack = 1, \ - .evYield_SpAttack = 1, \ - .itemRare = ITEM_NEVER_MELT_ICE, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_GRASS),\ - .bodyColor = BODY_COLOR_WHITE, \ - .speciesName = _("Abomasnow"), \ - .natDexNum = NATIONAL_DEX_ABOMASNOW, \ - .categoryName = _("Frost Tree"), \ - FOOTPRINT(Abomasnow) \ - LEARNSETS(Abomasnow), \ - .formSpeciesIdTable = sAbomasnowFormSpeciesIdTable, \ - .formChangeTable = sAbomasnowFormChangeTable - [SPECIES_ABOMASNOW] = { - ABOMASNOW_MISC_INFO, .baseHP = 90, .baseAttack = 92, .baseDefense = 75, .baseSpeed = 60, .baseSpAttack = 92, .baseSpDefense = 85, + .types = MON_TYPES(TYPE_GRASS, TYPE_ICE), + .catchRate = 60, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 173 : 214, + .evYield_Attack = 1, + .evYield_SpAttack = 1, + .itemRare = ITEM_NEVER_MELT_ICE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_GRASS), .abilities = { ABILITY_SNOW_WARNING, ABILITY_NONE, ABILITY_SOUNDPROOF }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Abomasnow"), .cryId = CRY_ABOMASNOW, + .natDexNum = NATIONAL_DEX_ABOMASNOW, + .categoryName = _("Frost Tree"), .height = 22, .weight = 1355, .description = COMPOUND_STRING( @@ -3471,31 +4107,54 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 0, .trainerScale = 348, .trainerOffset = 6, - FRONT_PIC(Abomasnow, 64, 64), - FRONT_PIC_FEMALE(Abomasnow, 64, 64), + .frontPic = gMonFrontPic_Abomasnow, + .frontPicFemale = gMonFrontPic_AbomasnowF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Abomasnow, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Abomasnow, 64, 56), + .backPic = gMonBackPic_Abomasnow, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Abomasnow), - ICON(Abomasnow, 1), + .palette = gMonPalette_Abomasnow, + .shinyPalette = gMonShinyPalette_Abomasnow, + .iconSprite = gMonIcon_Abomasnow, + .iconPalIndex = 1, + FOOTPRINT(Abomasnow) + .levelUpLearnset = sAbomasnowLevelUpLearnset, + .teachableLearnset = sAbomasnowTeachableLearnset, + .formSpeciesIdTable = sAbomasnowFormSpeciesIdTable, + .formChangeTable = sAbomasnowFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_ABOMASNOW_MEGA] = { - ABOMASNOW_MISC_INFO, .baseHP = 90, .baseAttack = 132, .baseDefense = 105, .baseSpeed = 30, .baseSpAttack = 132, .baseSpDefense = 105, + .types = MON_TYPES(TYPE_GRASS, TYPE_ICE), + .catchRate = 60, .expYield = 208, + .evYield_Attack = 1, + .evYield_SpAttack = 1, + .itemRare = ITEM_NEVER_MELT_ICE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_GRASS), .abilities = { ABILITY_SNOW_WARNING, ABILITY_SNOW_WARNING, ABILITY_SNOW_WARNING }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Abomasnow"), .cryId = CRY_ABOMASNOW_MEGA, + .natDexNum = NATIONAL_DEX_ABOMASNOW, + .categoryName = _("Frost Tree"), .height = 27, .weight = 1850, .description = COMPOUND_STRING( @@ -3507,50 +4166,32 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 0, .trainerScale = 348, .trainerOffset = 6, - FRONT_PIC(AbomasnowMega, 64, 64), + .frontPic = gMonFrontPic_AbomasnowMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_AbomasnowMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(AbomasnowMega, 64, 64), + .backPic = gMonBackPic_AbomasnowMega, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(AbomasnowMega), - ICON(AbomasnowMega, 1), + .palette = gMonPalette_AbomasnowMega, + .shinyPalette = gMonShinyPalette_AbomasnowMega, + .iconSprite = gMonIcon_AbomasnowMega, + .iconPalIndex = 1, + FOOTPRINT(Abomasnow) .isMegaEvolution = TRUE, + .levelUpLearnset = sAbomasnowLevelUpLearnset, + .teachableLearnset = sAbomasnowTeachableLearnset, + .formSpeciesIdTable = sAbomasnowFormSpeciesIdTable, + .formChangeTable = sAbomasnowFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_SNOVER #if P_FAMILY_ROTOM -#define ROTOM_MISC_INFO \ - .catchRate = 45, \ - .evYield_Speed = 1, \ - .evYield_SpAttack = 1, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), \ - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_RED, \ - .speciesName = _("Rotom"), \ - .cryId = CRY_ROTOM, \ - .natDexNum = NATIONAL_DEX_ROTOM, \ - .categoryName = _("Plasma"), \ - .height = 3, \ - .weight = 3, \ - .pokemonScale = 530, \ - .pokemonOffset = 13, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Rotom) \ - LEARNSETS(Rotom), \ - .formSpeciesIdTable = sRotomFormSpeciesIdTable, \ - .formChangeTable = sRotomFormChangeTable - [SPECIES_ROTOM] = { - ROTOM_MISC_INFO, .baseHP = 50, .baseAttack = 50, .baseDefense = 77, @@ -3558,22 +4199,51 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .baseSpAttack = 95, .baseSpDefense = 77, .types = MON_TYPES(TYPE_ELECTRIC, TYPE_GHOST), + .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 154 : 132, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Rotom"), + .cryId = CRY_ROTOM, + .natDexNum = NATIONAL_DEX_ROTOM, + .categoryName = _("Plasma"), + .height = 3, + .weight = 3, .description = COMPOUND_STRING( "Its body is composed of plasma and loves\n" "to surprise others. One boy's invention led\n" "to the development of many machines that\n" "can use of Rotom's unique capabilities."), - FRONT_PIC(Rotom, 56, 48), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Rotom, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Rotom, .frontAnimId = ANIM_GLOW_YELLOW, .enemyMonElevation = 10, - BACK_PIC(Rotom, 56, 56), + .backPic = gMonBackPic_Rotom, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(Rotom), - ICON(Rotom, 0), + .palette = gMonPalette_Rotom, + .shinyPalette = gMonShinyPalette_Rotom, + .iconSprite = gMonIcon_Rotom, + .iconPalIndex = 0, + FOOTPRINT(Rotom) + .levelUpLearnset = sRotomLevelUpLearnset, + .teachableLearnset = sRotomTeachableLearnset, + .formSpeciesIdTable = sRotomFormSpeciesIdTable, + .formChangeTable = sRotomFormChangeTable, }, #if P_UPDATED_EXP_YIELDS >= GEN_7 @@ -3584,125 +4254,286 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = #define ROTOM_APPLIANCE_EXP_YIELD 132 #endif -#define ROTOM_APPLIANCE_INFO(form) \ - .baseHP = 50, \ - .baseAttack = 65, \ - .baseDefense = 107, \ - .baseSpeed = 86, \ - .baseSpAttack = 105, \ - .baseSpDefense = 107, \ - .expYield = ROTOM_APPLIANCE_EXP_YIELD - [SPECIES_ROTOM_HEAT] = { - ROTOM_MISC_INFO, + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 107, + .baseSpeed = 86, + .baseSpAttack = 105, + .baseSpDefense = 107, .types = MON_TYPES(TYPE_ELECTRIC, TYPE_FIRE), - ROTOM_APPLIANCE_INFO(Heat), + .catchRate = 45, + .expYield = ROTOM_APPLIANCE_EXP_YIELD, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Rotom"), + .cryId = CRY_ROTOM, + .natDexNum = NATIONAL_DEX_ROTOM, + .categoryName = _("Plasma"), + .height = 3, + .weight = 3, .description = COMPOUND_STRING( "If the convection microwave oven is not\n" "working properly, then the Rotom inhabiting\n" "it will become lethargic. It will gleefully\n" "burn your favorite outfit in mischief."), - FRONT_PIC(RotomHeat, 56, 48), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_RotomHeat, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_RotomHeat, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 6, - BACK_PIC(RotomHeat, 64, 40), + .backPic = gMonBackPic_RotomHeat, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(RotomHeat), - ICON(RotomHeat, 0), + .palette = gMonPalette_RotomHeat, + .shinyPalette = gMonShinyPalette_RotomHeat, + .iconSprite = gMonIcon_RotomHeat, + .iconPalIndex = 0, + FOOTPRINT(Rotom) + .levelUpLearnset = sRotomLevelUpLearnset, + .teachableLearnset = sRotomTeachableLearnset, + .formSpeciesIdTable = sRotomFormSpeciesIdTable, + .formChangeTable = sRotomFormChangeTable, }, [SPECIES_ROTOM_WASH] = { - ROTOM_MISC_INFO, + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 107, + .baseSpeed = 86, + .baseSpAttack = 105, + .baseSpDefense = 107, .types = MON_TYPES(TYPE_ELECTRIC, TYPE_WATER), + .catchRate = 45, + .expYield = ROTOM_APPLIANCE_EXP_YIELD, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, .noFlip = TRUE, - ROTOM_APPLIANCE_INFO(Wash), + .speciesName = _("Rotom"), + .cryId = CRY_ROTOM, + .natDexNum = NATIONAL_DEX_ROTOM, + .categoryName = _("Plasma"), + .height = 3, + .weight = 3, .description = COMPOUND_STRING( "It enjoys coming up with water-based\n" "pranks. The model of washing machine that\n" "Rotom can inspirit has been discontinued,\n" "so they are now traded at high prices."), - FRONT_PIC(RotomWash, 64, 56), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_RotomWash, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_RotomWash, .frontAnimId = ANIM_V_JUMPS_SMALL, .enemyMonElevation = 6, - BACK_PIC(RotomWash, 64, 48), + .backPic = gMonBackPic_RotomWash, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(RotomWash), - ICON(RotomWash, 0), + .palette = gMonPalette_RotomWash, + .shinyPalette = gMonShinyPalette_RotomWash, + .iconSprite = gMonIcon_RotomWash, + .iconPalIndex = 0, + FOOTPRINT(Rotom) + .levelUpLearnset = sRotomLevelUpLearnset, + .teachableLearnset = sRotomTeachableLearnset, + .formSpeciesIdTable = sRotomFormSpeciesIdTable, + .formChangeTable = sRotomFormChangeTable, }, [SPECIES_ROTOM_FROST] = { - ROTOM_MISC_INFO, + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 107, + .baseSpeed = 86, + .baseSpAttack = 105, + .baseSpDefense = 107, .types = MON_TYPES(TYPE_ELECTRIC, TYPE_ICE), - ROTOM_APPLIANCE_INFO(Frost), + .catchRate = 45, + .expYield = ROTOM_APPLIANCE_EXP_YIELD, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Rotom"), + .cryId = CRY_ROTOM, + .natDexNum = NATIONAL_DEX_ROTOM, + .categoryName = _("Plasma"), + .height = 3, + .weight = 3, .description = COMPOUND_STRING( "In this form, Rotom likes to play freezing\n" "cold pranks. You may find it's turned the\n" "bath you just filled to solid ice!\n" "It battles by spewing cold air."), - FRONT_PIC(RotomFrost, 64, 64), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_RotomFrost, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_RotomFrost, .frontAnimId = ANIM_H_STRETCH, .enemyMonElevation = 6, - BACK_PIC(RotomFrost, 64, 56), + .backPic = gMonBackPic_RotomFrost, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(RotomFrost), - ICON(RotomFrost, 5), + .palette = gMonPalette_RotomFrost, + .shinyPalette = gMonShinyPalette_RotomFrost, + .iconSprite = gMonIcon_RotomFrost, + .iconPalIndex = 5, + FOOTPRINT(Rotom) + .levelUpLearnset = sRotomLevelUpLearnset, + .teachableLearnset = sRotomTeachableLearnset, + .formSpeciesIdTable = sRotomFormSpeciesIdTable, + .formChangeTable = sRotomFormChangeTable, }, [SPECIES_ROTOM_FAN] = { - ROTOM_MISC_INFO, + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 107, + .baseSpeed = 86, + .baseSpAttack = 105, + .baseSpDefense = 107, .types = MON_TYPES(TYPE_ELECTRIC, TYPE_FLYING), - ROTOM_APPLIANCE_INFO(Fan), + .catchRate = 45, + .expYield = ROTOM_APPLIANCE_EXP_YIELD, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Rotom"), + .cryId = CRY_ROTOM, + .natDexNum = NATIONAL_DEX_ROTOM, + .categoryName = _("Plasma"), + .height = 3, + .weight = 3, .description = COMPOUND_STRING( "The first appliance developed that Rotom\n" "coud inspirit was the electric fan. It uses\n" "its power over wind in its pranks, happily\n" "blowing any important documents it finds."), - FRONT_PIC(RotomFan, 64, 56), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_RotomFan, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_RotomFan, .frontAnimId = ANIM_H_SLIDE_WOBBLE, .frontAnimDelay = 7, .enemyMonElevation = 6, - BACK_PIC(RotomFan, 64, 48), + .backPic = gMonBackPic_RotomFan, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(RotomFan), - ICON(RotomFan, 0), + .palette = gMonPalette_RotomFan, + .shinyPalette = gMonShinyPalette_RotomFan, + .iconSprite = gMonIcon_RotomFan, + .iconPalIndex = 0, + FOOTPRINT(Rotom) + .levelUpLearnset = sRotomLevelUpLearnset, + .teachableLearnset = sRotomTeachableLearnset, + .formSpeciesIdTable = sRotomFormSpeciesIdTable, + .formChangeTable = sRotomFormChangeTable, }, [SPECIES_ROTOM_MOW] = { - ROTOM_MISC_INFO, + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 107, + .baseSpeed = 86, + .baseSpAttack = 105, + .baseSpDefense = 107, .types = MON_TYPES(TYPE_ELECTRIC, TYPE_GRASS), - ROTOM_APPLIANCE_INFO(Mow), + .catchRate = 45, + .expYield = ROTOM_APPLIANCE_EXP_YIELD, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Rotom"), + .cryId = CRY_ROTOM, + .natDexNum = NATIONAL_DEX_ROTOM, + .categoryName = _("Plasma"), + .height = 3, + .weight = 3, .description = COMPOUND_STRING( "The lawn mower is an appliance that led to\n" "the development of the Rotom Dex. It will\n" "mow down grass and flowers, then swagger\n" "around with pride at its accomplishments."), - FRONT_PIC(RotomMow, 56, 64), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_RotomMow, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_RotomMow, .frontAnimId = ANIM_TIP_MOVE_FORWARD, .enemyMonElevation = 6, - BACK_PIC(RotomMow, 56, 48), + .backPic = gMonBackPic_RotomMow, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(RotomMow), - ICON(RotomMow, 0), + .palette = gMonPalette_RotomMow, + .shinyPalette = gMonShinyPalette_RotomMow, + .iconSprite = gMonIcon_RotomMow, + .iconPalIndex = 0, + FOOTPRINT(Rotom) + .levelUpLearnset = sRotomLevelUpLearnset, + .teachableLearnset = sRotomTeachableLearnset, + .formSpeciesIdTable = sRotomFormSpeciesIdTable, + .formChangeTable = sRotomFormChangeTable, }, #endif //P_FAMILY_ROTOM @@ -3733,7 +4564,6 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, - .isLegendary = TRUE, .speciesName = _("Uxie"), .cryId = CRY_UXIE, .natDexNum = NATIONAL_DEX_UXIE, @@ -3749,18 +4579,24 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Uxie, 56, 56), + .frontPic = gMonFrontPic_Uxie, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Uxie, .frontAnimId = ANIM_SWING_CONCAVE, .enemyMonElevation = 6, - BACK_PIC(Uxie, 56, 48), + .backPic = gMonBackPic_Uxie, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Uxie), - ICON(Uxie, 0), + .palette = gMonPalette_Uxie, + .shinyPalette = gMonShinyPalette_Uxie, + .iconSprite = gMonIcon_Uxie, + .iconPalIndex = 0, FOOTPRINT(Uxie) - LEARNSETS(Uxie), + .isLegendary = TRUE, + .levelUpLearnset = sUxieLevelUpLearnset, + .teachableLearnset = sUxieTeachableLearnset, }, #endif //P_FAMILY_UXIE @@ -3792,7 +4628,6 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PINK, - .isLegendary = TRUE, .speciesName = _("Mesprit"), .cryId = CRY_MESPRIT, .natDexNum = NATIONAL_DEX_MESPRIT, @@ -3808,18 +4643,24 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Mesprit, 48, 56), + .frontPic = gMonFrontPic_Mesprit, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Mesprit, .frontAnimId = ANIM_H_SLIDE_WOBBLE, .enemyMonElevation = 6, - BACK_PIC(Mesprit, 64, 48), + .backPic = gMonBackPic_Mesprit, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Mesprit), - ICON(Mesprit, 0), + .palette = gMonPalette_Mesprit, + .shinyPalette = gMonShinyPalette_Mesprit, + .iconSprite = gMonIcon_Mesprit, + .iconPalIndex = 0, FOOTPRINT(Mesprit) - LEARNSETS(Mesprit), + .isLegendary = TRUE, + .levelUpLearnset = sMespritLevelUpLearnset, + .teachableLearnset = sMespritTeachableLearnset, }, #endif //P_FAMILY_MESPRIT @@ -3850,7 +4691,6 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, - .isLegendary = TRUE, .speciesName = _("Azelf"), .cryId = CRY_AZELF, .natDexNum = NATIONAL_DEX_AZELF, @@ -3866,18 +4706,24 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Azelf, 48, 64), + .frontPic = gMonFrontPic_Azelf, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Azelf, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 6, - BACK_PIC(Azelf, 64, 56), + .backPic = gMonBackPic_Azelf, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Azelf), - ICON(Azelf, 0), + .palette = gMonPalette_Azelf, + .shinyPalette = gMonShinyPalette_Azelf, + .iconSprite = gMonIcon_Azelf, + .iconPalIndex = 0, FOOTPRINT(Azelf) - LEARNSETS(Azelf), + .isLegendary = TRUE, + .levelUpLearnset = sAzelfLevelUpLearnset, + .teachableLearnset = sAzelfTeachableLearnset, }, #endif //P_FAMILY_AZELF @@ -3890,37 +4736,29 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = #define DIALGA_EXP_YIELD 220 #endif -#define DIALGA_MISC_INFO \ - .types = MON_TYPES(TYPE_STEEL, TYPE_DRAGON), \ - .catchRate = 3, \ - .expYield = DIALGA_EXP_YIELD, \ - .evYield_SpAttack = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY }, \ - .bodyColor = BODY_COLOR_WHITE, \ - .speciesName = _("Dialga"), \ - .cryId = CRY_DIALGA, \ - .natDexNum = NATIONAL_DEX_DIALGA, \ - .categoryName = _("Temporal"), \ - FOOTPRINT(Dialga) \ - LEARNSETS(Dialga), \ - .formSpeciesIdTable = sDialgaFormSpeciesIdTable, \ - .formChangeTable = sDialgaFormChangeTable, \ - .isLegendary = TRUE - [SPECIES_DIALGA] = { - DIALGA_MISC_INFO, .baseHP = 100, .baseAttack = 120, .baseDefense = 120, .baseSpeed = 90, .baseSpAttack = 150, .baseSpDefense = 100, + .types = MON_TYPES(TYPE_STEEL, TYPE_DRAGON), + .catchRate = 3, + .expYield = DIALGA_EXP_YIELD, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Dialga"), + .cryId = CRY_DIALGA, + .natDexNum = NATIONAL_DEX_DIALGA, + .categoryName = _("Temporal"), .height = 54, .weight = 6830, .description = COMPOUND_STRING( @@ -3932,26 +4770,50 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 0, .trainerScale = 721, .trainerOffset = 19, - FRONT_PIC(Dialga, 64, 64), + .frontPic = gMonFrontPic_Dialga, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Dialga, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Dialga, 64, 64), + .backPic = gMonBackPic_Dialga, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Dialga), - ICON(Dialga, 2), + .palette = gMonPalette_Dialga, + .shinyPalette = gMonShinyPalette_Dialga, + .iconSprite = gMonIcon_Dialga, + .iconPalIndex = 2, + FOOTPRINT(Dialga) + .isLegendary = TRUE, + .levelUpLearnset = sDialgaLevelUpLearnset, + .teachableLearnset = sDialgaTeachableLearnset, + .formSpeciesIdTable = sDialgaFormSpeciesIdTable, + .formChangeTable = sDialgaFormChangeTable, }, [SPECIES_DIALGA_ORIGIN] = { - DIALGA_MISC_INFO, .baseHP = 100, .baseAttack = 100, .baseDefense = 120, .baseSpeed = 90, .baseSpAttack = 150, .baseSpDefense = 120, + .types = MON_TYPES(TYPE_STEEL, TYPE_DRAGON), + .catchRate = 3, + .expYield = DIALGA_EXP_YIELD, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Dialga"), + .cryId = CRY_DIALGA, + .natDexNum = NATIONAL_DEX_DIALGA, + .categoryName = _("Temporal"), .height = 70, .weight = 8500, .description = COMPOUND_STRING( @@ -3963,15 +4825,25 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 0, .trainerScale = 721, .trainerOffset = 19, - FRONT_PIC(DialgaOrigin, 64, 64), + .frontPic = gMonFrontPic_DialgaOrigin, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_DialgaOrigin, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(DialgaOrigin, 64, 64), + .backPic = gMonBackPic_DialgaOrigin, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(DialgaOrigin), - ICON(DialgaOrigin, 0), + .palette = gMonPalette_DialgaOrigin, + .shinyPalette = gMonShinyPalette_DialgaOrigin, + .iconSprite = gMonIcon_DialgaOrigin, + .iconPalIndex = 0, + FOOTPRINT(Dialga) + .isLegendary = TRUE, + .levelUpLearnset = sDialgaLevelUpLearnset, + .teachableLearnset = sDialgaTeachableLearnset, + .formSpeciesIdTable = sDialgaFormSpeciesIdTable, + .formChangeTable = sDialgaFormChangeTable, }, #endif //P_FAMILY_DIALGA @@ -3984,37 +4856,29 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = #define PALKIA_EXP_YIELD 220 #endif -#define PALKIA_MISC_INFO \ - .types = MON_TYPES(TYPE_WATER, TYPE_DRAGON), \ - .catchRate = 3, \ - .expYield = PALKIA_EXP_YIELD, \ - .evYield_SpAttack = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY }, \ - .bodyColor = BODY_COLOR_PURPLE, \ - .speciesName = _("Palkia"), \ - .cryId = CRY_PALKIA, \ - .natDexNum = NATIONAL_DEX_PALKIA, \ - .categoryName = _("Spatial"), \ - FOOTPRINT(Palkia) \ - LEARNSETS(Palkia), \ - .formSpeciesIdTable = sPalkiaFormSpeciesIdTable, \ - .formChangeTable = sPalkiaFormChangeTable, \ - .isLegendary = TRUE - [SPECIES_PALKIA] = { - PALKIA_MISC_INFO, .baseHP = 90, .baseAttack = 120, .baseDefense = 100, .baseSpeed = 100, .baseSpAttack = 150, .baseSpDefense = 120, + .types = MON_TYPES(TYPE_WATER, TYPE_DRAGON), + .catchRate = 3, + .expYield = PALKIA_EXP_YIELD, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Palkia"), + .cryId = CRY_PALKIA, + .natDexNum = NATIONAL_DEX_PALKIA, + .categoryName = _("Spatial"), .height = 42, .weight = 3360, .description = COMPOUND_STRING( @@ -4026,26 +4890,50 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 0, .trainerScale = 650, .trainerOffset = 16, - FRONT_PIC(Palkia, 64, 64), + .frontPic = gMonFrontPic_Palkia, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Palkia, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Palkia, 64, 64), + .backPic = gMonBackPic_Palkia, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Palkia), - ICON(Palkia, 2), + .palette = gMonPalette_Palkia, + .shinyPalette = gMonShinyPalette_Palkia, + .iconSprite = gMonIcon_Palkia, + .iconPalIndex = 2, + FOOTPRINT(Palkia) + .isLegendary = TRUE, + .levelUpLearnset = sPalkiaLevelUpLearnset, + .teachableLearnset = sPalkiaTeachableLearnset, + .formSpeciesIdTable = sPalkiaFormSpeciesIdTable, + .formChangeTable = sPalkiaFormChangeTable, }, [SPECIES_PALKIA_ORIGIN] = { - PALKIA_MISC_INFO, .baseHP = 90, .baseAttack = 100, .baseDefense = 100, .baseSpeed = 120, .baseSpAttack = 150, .baseSpDefense = 120, + .types = MON_TYPES(TYPE_WATER, TYPE_DRAGON), + .catchRate = 3, + .expYield = PALKIA_EXP_YIELD, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Palkia"), + .cryId = CRY_PALKIA, + .natDexNum = NATIONAL_DEX_PALKIA, + .categoryName = _("Spatial"), .height = 63, .weight = 6600, .description = COMPOUND_STRING( @@ -4057,15 +4945,25 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 0, .trainerScale = 650, .trainerOffset = 16, - FRONT_PIC(PalkiaOrigin, 64, 64), + .frontPic = gMonFrontPic_PalkiaOrigin, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_PalkiaOrigin, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(PalkiaOrigin, 64, 64), + .backPic = gMonBackPic_PalkiaOrigin, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PalkiaOrigin), - ICON(PalkiaOrigin, 2), + .palette = gMonPalette_PalkiaOrigin, + .shinyPalette = gMonShinyPalette_PalkiaOrigin, + .iconSprite = gMonIcon_PalkiaOrigin, + .iconPalIndex = 2, + FOOTPRINT(Palkia) + .isLegendary = TRUE, + .levelUpLearnset = sPalkiaLevelUpLearnset, + .teachableLearnset = sPalkiaTeachableLearnset, + .formSpeciesIdTable = sPalkiaFormSpeciesIdTable, + .formChangeTable = sPalkiaFormChangeTable, }, #endif //P_FAMILY_PALKIA @@ -4095,7 +4993,6 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_FLAME_BODY }, .bodyColor = BODY_COLOR_BROWN, - .isLegendary = TRUE, .speciesName = _("Heatran"), .cryId = CRY_HEATRAN, .natDexNum = NATIONAL_DEX_HEATRAN, @@ -4111,17 +5008,23 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 1, .trainerScale = 290, .trainerOffset = 1, - FRONT_PIC(Heatran, 64, 56), + .frontPic = gMonFrontPic_Heatran, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Heatran, .frontAnimId = ANIM_GLOW_ORANGE, - BACK_PIC(Heatran, 64, 40), + .backPic = gMonBackPic_Heatran, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Heatran), - ICON(Heatran, 0), + .palette = gMonPalette_Heatran, + .shinyPalette = gMonShinyPalette_Heatran, + .iconSprite = gMonIcon_Heatran, + .iconPalIndex = 0, FOOTPRINT(Heatran) - LEARNSETS(Heatran), + .isLegendary = TRUE, + .levelUpLearnset = sHeatranLevelUpLearnset, + .teachableLearnset = sHeatranTeachableLearnset, }, #endif //P_FAMILY_HEATRAN @@ -4151,7 +5054,6 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_SLOW_START, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, - .isLegendary = TRUE, .speciesName = _("Regigigas"), .cryId = CRY_REGIGIGAS, .natDexNum = NATIONAL_DEX_REGIGIGAS, @@ -4167,17 +5069,23 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 2, .trainerScale = 610, .trainerOffset = 17, - FRONT_PIC(Regigigas, 64, 64), + .frontPic = gMonFrontPic_Regigigas, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Regigigas, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Regigigas, 64, 40), + .backPic = gMonBackPic_Regigigas, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Regigigas), - ICON(Regigigas, 0), + .palette = gMonPalette_Regigigas, + .shinyPalette = gMonShinyPalette_Regigigas, + .iconSprite = gMonIcon_Regigigas, + .iconPalIndex = 0, FOOTPRINT(Regigigas) - LEARNSETS(Regigigas), + .isLegendary = TRUE, + .levelUpLearnset = sRegigigasLevelUpLearnset, + .teachableLearnset = sRegigigasTeachableLearnset, }, #endif //P_FAMILY_REGIGIGAS @@ -4190,37 +5098,29 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = #define GIRATINA_EXP_YIELD 220 #endif -#define GIRATINA_MISC_INFO \ - .types = MON_TYPES(TYPE_GHOST, TYPE_DRAGON), \ - .catchRate = 3, \ - .expYield = GIRATINA_EXP_YIELD, \ - .evYield_HP = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .bodyColor = BODY_COLOR_BLACK, \ - .speciesName = _("Giratina"), \ - .cryId = CRY_GIRATINA, \ - .natDexNum = NATIONAL_DEX_GIRATINA, \ - .categoryName = _("Renegade"), \ - FOOTPRINT(Giratina) \ - LEARNSETS(Giratina), \ - .formSpeciesIdTable = sGiratinaFormSpeciesIdTable, \ - .formChangeTable = sGiratinaFormChangeTable, \ - .isLegendary = TRUE - [SPECIES_GIRATINA_ALTERED] = { - GIRATINA_MISC_INFO, .baseHP = 150, .baseAttack = 100, .baseDefense = 120, .baseSpeed = 90, .baseSpAttack = 100, .baseSpDefense = 120, + .types = MON_TYPES(TYPE_GHOST, TYPE_DRAGON), + .catchRate = 3, + .expYield = GIRATINA_EXP_YIELD, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Giratina"), + .cryId = CRY_GIRATINA, + .natDexNum = NATIONAL_DEX_GIRATINA, + .categoryName = _("Renegade"), .height = 45, .weight = 7500, .description = COMPOUND_STRING( @@ -4232,27 +5132,50 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 0, .trainerScale = 614, .trainerOffset = 13, - FRONT_PIC(GiratinaAltered, 64, 64), + .frontPic = gMonFrontPic_GiratinaAltered, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_GiratinaAltered, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(GiratinaAltered, 64, 64), + .backPic = gMonBackPic_GiratinaAltered, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(GiratinaAltered), - ICON(GiratinaAltered, 0), + .palette = gMonPalette_GiratinaAltered, + .shinyPalette = gMonShinyPalette_GiratinaAltered, + .iconSprite = gMonIcon_GiratinaAltered, + .iconPalIndex = 0, + FOOTPRINT(Giratina) + .isLegendary = TRUE, + .levelUpLearnset = sGiratinaLevelUpLearnset, + .teachableLearnset = sGiratinaTeachableLearnset, + .formSpeciesIdTable = sGiratinaFormSpeciesIdTable, + .formChangeTable = sGiratinaFormChangeTable, }, [SPECIES_GIRATINA_ORIGIN] = { - GIRATINA_MISC_INFO, .baseHP = 150, .baseAttack = 120, .baseDefense = 100, .baseSpeed = 90, .baseSpAttack = 120, .baseSpDefense = 100, + .types = MON_TYPES(TYPE_GHOST, TYPE_DRAGON), + .catchRate = 3, + .expYield = GIRATINA_EXP_YIELD, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Giratina"), + .cryId = CRY_GIRATINA, + .natDexNum = NATIONAL_DEX_GIRATINA, + .categoryName = _("Renegade"), .height = 69, .weight = 6500, .description = COMPOUND_STRING( @@ -4264,16 +5187,26 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 0, .trainerScale = 614, .trainerOffset = 13, - FRONT_PIC(GiratinaOrigin, 64, 64), + .frontPic = gMonFrontPic_GiratinaOrigin, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_GiratinaOrigin, .frontAnimId = ANIM_LUNGE_GROW, .enemyMonElevation = 7, - BACK_PIC(GiratinaOrigin, 64, 56), + .backPic = gMonBackPic_GiratinaOrigin, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(GiratinaOrigin), - ICON(GiratinaOrigin, 0), + .palette = gMonPalette_GiratinaOrigin, + .shinyPalette = gMonShinyPalette_GiratinaOrigin, + .iconSprite = gMonIcon_GiratinaOrigin, + .iconPalIndex = 0, + FOOTPRINT(Giratina) + .isLegendary = TRUE, + .levelUpLearnset = sGiratinaLevelUpLearnset, + .teachableLearnset = sGiratinaTeachableLearnset, + .formSpeciesIdTable = sGiratinaFormSpeciesIdTable, + .formChangeTable = sGiratinaFormChangeTable, }, #endif //P_FAMILY_GIRATINA @@ -4303,7 +5236,6 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, - .isLegendary = TRUE, .speciesName = _("Cresselia"), .cryId = CRY_CRESSELIA, .natDexNum = NATIONAL_DEX_CRESSELIA, @@ -4319,18 +5251,24 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Cresselia, 64, 64), + .frontPic = gMonFrontPic_Cresselia, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Cresselia, .frontAnimId = ANIM_H_SLIDE_WOBBLE, .enemyMonElevation = 3, - BACK_PIC(Cresselia, 56, 64), + .backPic = gMonBackPic_Cresselia, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Cresselia), - ICON(Cresselia, 0), + .palette = gMonPalette_Cresselia, + .shinyPalette = gMonShinyPalette_Cresselia, + .iconSprite = gMonIcon_Cresselia, + .iconPalIndex = 0, FOOTPRINT(Cresselia) - LEARNSETS(Cresselia), + .isLegendary = TRUE, + .levelUpLearnset = sCresseliaLevelUpLearnset, + .teachableLearnset = sCresseliaTeachableLearnset, }, #endif //P_FAMILY_CRESSELIA @@ -4360,7 +5298,6 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FAIRY), .abilities = { ABILITY_HYDRATION, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, - .isMythical = TRUE, .speciesName = _("Phione"), .cryId = CRY_PHIONE, .natDexNum = NATIONAL_DEX_PHIONE, @@ -4376,18 +5313,24 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Phione, 56, 40), + .frontPic = gMonFrontPic_Phione, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Phione, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 8, - BACK_PIC(Phione, 64, 48), + .backPic = gMonBackPic_Phione, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Phione), - ICON(Phione, 0), + .palette = gMonPalette_Phione, + .shinyPalette = gMonShinyPalette_Phione, + .iconSprite = gMonIcon_Phione, + .iconPalIndex = 0, FOOTPRINT(Phione) - LEARNSETS(Phione), + .isMythical = TRUE, + .levelUpLearnset = sPhioneLevelUpLearnset, + .teachableLearnset = sPhioneTeachableLearnset, }, [SPECIES_MANAPHY] = @@ -4415,7 +5358,6 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FAIRY), .abilities = { ABILITY_HYDRATION, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, - .isMythical = TRUE, .speciesName = _("Manaphy"), .cryId = CRY_MANAPHY, .natDexNum = NATIONAL_DEX_MANAPHY, @@ -4431,18 +5373,24 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Manaphy, 64, 40), + .frontPic = gMonFrontPic_Manaphy, + .frontPicSize = MON_COORDS_SIZE(64, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Manaphy, .frontAnimId = ANIM_SWING_CONVEX, .enemyMonElevation = 10, - BACK_PIC(Manaphy, 64, 56), + .backPic = gMonBackPic_Manaphy, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 10, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Manaphy), - ICON(Manaphy, 0), + .palette = gMonPalette_Manaphy, + .shinyPalette = gMonShinyPalette_Manaphy, + .iconSprite = gMonIcon_Manaphy, + .iconPalIndex = 0, FOOTPRINT(Manaphy) - LEARNSETS(Manaphy), + .isMythical = TRUE, + .levelUpLearnset = sManaphyLevelUpLearnset, + .teachableLearnset = sManaphyTeachableLearnset, }, #endif //P_FAMILY_MANAPHY @@ -4473,7 +5421,6 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_BAD_DREAMS, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, - .isMythical = TRUE, .speciesName = _("Darkrai"), .cryId = CRY_DARKRAI, .natDexNum = NATIONAL_DEX_DARKRAI, @@ -4489,18 +5436,24 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Darkrai, 64, 64), + .frontPic = gMonFrontPic_Darkrai, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Darkrai, .frontAnimId = ANIM_GLOW_BLACK, .enemyMonElevation = 4, - BACK_PIC(Darkrai, 64, 64), + .backPic = gMonBackPic_Darkrai, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Darkrai), - ICON(Darkrai, 0), + .palette = gMonPalette_Darkrai, + .shinyPalette = gMonShinyPalette_Darkrai, + .iconSprite = gMonIcon_Darkrai, + .iconPalIndex = 0, FOOTPRINT(Darkrai) - LEARNSETS(Darkrai), + .isMythical = TRUE, + .levelUpLearnset = sDarkraiLevelUpLearnset, + .teachableLearnset = sDarkraiTeachableLearnset, }, #endif //P_FAMILY_DARKRAI @@ -4513,38 +5466,31 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = #define SHAYMIN_EXP_YIELD 64 #endif -#define SHAYMIN_MISC_INFO \ - .catchRate = 45, \ - .expYield = SHAYMIN_EXP_YIELD, \ - .itemCommon = ITEM_LUM_BERRY, \ - .itemRare = ITEM_LUM_BERRY, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 100, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .bodyColor = BODY_COLOR_GREEN, \ - .speciesName = _("Shaymin"), \ - .natDexNum = NATIONAL_DEX_SHAYMIN, \ - .categoryName = _("Gratitude"), \ - FOOTPRINT(Shaymin) \ - .formSpeciesIdTable = sShayminFormSpeciesIdTable, \ - .formChangeTable = sShayminFormChangeTable, \ - .isMythical = TRUE - [SPECIES_SHAYMIN_LAND] = { - SHAYMIN_MISC_INFO, .baseHP = 100, .baseAttack = 100, .baseDefense = 100, .baseSpeed = 100, .baseSpAttack = 100, .baseSpDefense = 100, - .evYield_HP = 3, .types = MON_TYPES(TYPE_GRASS), + .catchRate = 45, + .expYield = SHAYMIN_EXP_YIELD, + .evYield_HP = 3, + .itemCommon = ITEM_LUM_BERRY, + .itemRare = ITEM_LUM_BERRY, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_NATURAL_CURE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Shaymin"), .cryId = CRY_SHAYMIN_LAND, + .natDexNum = NATIONAL_DEX_SHAYMIN, + .categoryName = _("Gratitude"), .height = 2, .weight = 21, .description = COMPOUND_STRING( @@ -4556,36 +5502,57 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(ShayminLand, 40, 32), + .frontPic = gMonFrontPic_ShayminLand, + .frontPicSize = MON_COORDS_SIZE(40, 32), .frontPicYOffset = 16, .frontAnimFrames = sAnims_ShayminLand, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ShayminLand, 56, 40), + .backPic = gMonBackPic_ShayminLand, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 15, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(ShayminLand), - ICON(ShayminLand, 1), - LEARNSETS(ShayminLand), + .palette = gMonPalette_ShayminLand, + .shinyPalette = gMonShinyPalette_ShayminLand, + .iconSprite = gMonIcon_ShayminLand, + .iconPalIndex = 1, + FOOTPRINT(Shaymin) + .isMythical = TRUE, + .levelUpLearnset = sShayminLandLevelUpLearnset, + .teachableLearnset = sShayminLandTeachableLearnset, + .formSpeciesIdTable = sShayminFormSpeciesIdTable, + .formChangeTable = sShayminFormChangeTable, }, [SPECIES_SHAYMIN_SKY] = { - SHAYMIN_MISC_INFO, .baseHP = 100, .baseAttack = 103, .baseDefense = 75, .baseSpeed = 127, .baseSpAttack = 120, .baseSpDefense = 75, + .types = MON_TYPES(TYPE_GRASS, TYPE_FLYING), + .catchRate = 45, + .expYield = SHAYMIN_EXP_YIELD, #if P_UPDATED_EVS >= GEN_5 .evYield_Speed = 3, #else .evYield_HP = 3, #endif - .types = MON_TYPES(TYPE_GRASS, TYPE_FLYING), + .itemCommon = ITEM_LUM_BERRY, + .itemRare = ITEM_LUM_BERRY, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, + .speciesName = _("Shaymin"), .cryId = CRY_SHAYMIN_SKY, + .natDexNum = NATIONAL_DEX_SHAYMIN, + .categoryName = _("Gratitude"), .height = 4, .weight = 52, .description = COMPOUND_STRING( @@ -4597,16 +5564,25 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(ShayminSky, 56, 56), + .frontPic = gMonFrontPic_ShayminSky, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_ShayminSky, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(ShayminSky, 56, 64), + .backPic = gMonBackPic_ShayminSky, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(ShayminSky), - ICON(ShayminSky, 1), - LEARNSETS(ShayminSky), + .palette = gMonPalette_ShayminSky, + .shinyPalette = gMonShinyPalette_ShayminSky, + .iconSprite = gMonIcon_ShayminSky, + .iconPalIndex = 1, + FOOTPRINT(Shaymin) + .isMythical = TRUE, + .levelUpLearnset = sShayminSkyLevelUpLearnset, + .teachableLearnset = sShayminSkyTeachableLearnset, + .formSpeciesIdTable = sShayminFormSpeciesIdTable, + .formChangeTable = sShayminFormChangeTable, }, #endif //P_FAMILY_SHAYMIN @@ -4649,40 +5625,45 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 0, \ .trainerScale = 495, \ .trainerOffset = 10, \ - FRONT_PIC(Arceus, 64, 64), \ + .frontPic = gMonFrontPic_Arceus, \ + .frontPicSize = MON_COORDS_SIZE(64, 64), \ .frontPicYOffset = 0, \ .frontAnimFrames = sAnims_Arceus, \ .frontAnimId = ANIM_GROW_VIBRATE, \ - BACK_PIC(Arceus, 64, 64), \ + .backPic = gMonBackPic_Arceus, \ + .backPicSize = MON_COORDS_SIZE(64, 64), \ .backPicYOffset = 3, \ .backAnimId = BACK_ANIM_GROW_STUTTER, \ - PALETTES(Arceus ##typeName), \ - ICON(Arceus, 1), \ + .palette = gMonPalette_Arceus ##typeName, \ + .shinyPalette = gMonShinyPalette_Arceus ##typeName, \ + .iconSprite = gMonIcon_Arceus, \ + .iconPalIndex = 1, \ FOOTPRINT(Arceus) \ - LEARNSETS(Arceus), \ + .levelUpLearnset = sArceusLevelUpLearnset, \ + .teachableLearnset = sArceusTeachableLearnset, \ .formSpeciesIdTable = sArceusFormSpeciesIdTable, \ .formChangeTable = sArceusFormChangeTable, \ .isMythical = TRUE, \ } - [SPECIES_ARCEUS_NORMAL] = ARCEUS_SPECIES_INFO(TYPE_NORMAL, Normal), + [SPECIES_ARCEUS_NORMAL] = ARCEUS_SPECIES_INFO(TYPE_NORMAL, Normal), [SPECIES_ARCEUS_FIGHTING] = ARCEUS_SPECIES_INFO(TYPE_FIGHTING, Fighting), - [SPECIES_ARCEUS_FLYING] = ARCEUS_SPECIES_INFO(TYPE_FLYING, Flying), - [SPECIES_ARCEUS_POISON] = ARCEUS_SPECIES_INFO(TYPE_POISON, Poison), - [SPECIES_ARCEUS_GROUND] = ARCEUS_SPECIES_INFO(TYPE_GROUND, Ground), - [SPECIES_ARCEUS_ROCK] = ARCEUS_SPECIES_INFO(TYPE_ROCK, Rock), - [SPECIES_ARCEUS_BUG] = ARCEUS_SPECIES_INFO(TYPE_BUG, Bug), - [SPECIES_ARCEUS_GHOST] = ARCEUS_SPECIES_INFO(TYPE_GHOST, Ghost), - [SPECIES_ARCEUS_STEEL] = ARCEUS_SPECIES_INFO(TYPE_STEEL, Steel), - [SPECIES_ARCEUS_FIRE] = ARCEUS_SPECIES_INFO(TYPE_FIRE, Fire), - [SPECIES_ARCEUS_WATER] = ARCEUS_SPECIES_INFO(TYPE_WATER, Water), - [SPECIES_ARCEUS_GRASS] = ARCEUS_SPECIES_INFO(TYPE_GRASS, Grass), + [SPECIES_ARCEUS_FLYING] = ARCEUS_SPECIES_INFO(TYPE_FLYING, Flying), + [SPECIES_ARCEUS_POISON] = ARCEUS_SPECIES_INFO(TYPE_POISON, Poison), + [SPECIES_ARCEUS_GROUND] = ARCEUS_SPECIES_INFO(TYPE_GROUND, Ground), + [SPECIES_ARCEUS_ROCK] = ARCEUS_SPECIES_INFO(TYPE_ROCK, Rock), + [SPECIES_ARCEUS_BUG] = ARCEUS_SPECIES_INFO(TYPE_BUG, Bug), + [SPECIES_ARCEUS_GHOST] = ARCEUS_SPECIES_INFO(TYPE_GHOST, Ghost), + [SPECIES_ARCEUS_STEEL] = ARCEUS_SPECIES_INFO(TYPE_STEEL, Steel), + [SPECIES_ARCEUS_FIRE] = ARCEUS_SPECIES_INFO(TYPE_FIRE, Fire), + [SPECIES_ARCEUS_WATER] = ARCEUS_SPECIES_INFO(TYPE_WATER, Water), + [SPECIES_ARCEUS_GRASS] = ARCEUS_SPECIES_INFO(TYPE_GRASS, Grass), [SPECIES_ARCEUS_ELECTRIC] = ARCEUS_SPECIES_INFO(TYPE_ELECTRIC, Electric), - [SPECIES_ARCEUS_PSYCHIC] = ARCEUS_SPECIES_INFO(TYPE_PSYCHIC, Psychic), - [SPECIES_ARCEUS_ICE] = ARCEUS_SPECIES_INFO(TYPE_ICE, Ice), - [SPECIES_ARCEUS_DRAGON] = ARCEUS_SPECIES_INFO(TYPE_DRAGON, Dragon), - [SPECIES_ARCEUS_DARK] = ARCEUS_SPECIES_INFO(TYPE_DARK, Dark), - [SPECIES_ARCEUS_FAIRY] = ARCEUS_SPECIES_INFO(TYPE_FAIRY, Fairy), + [SPECIES_ARCEUS_PSYCHIC] = ARCEUS_SPECIES_INFO(TYPE_PSYCHIC, Psychic), + [SPECIES_ARCEUS_ICE] = ARCEUS_SPECIES_INFO(TYPE_ICE, Ice), + [SPECIES_ARCEUS_DRAGON] = ARCEUS_SPECIES_INFO(TYPE_DRAGON, Dragon), + [SPECIES_ARCEUS_DARK] = ARCEUS_SPECIES_INFO(TYPE_DARK, Dark), + [SPECIES_ARCEUS_FAIRY] = ARCEUS_SPECIES_INFO(TYPE_FAIRY, Fairy), #endif //P_FAMILY_ARCEUS #ifdef __INTELLISENSE__ diff --git a/src/data/pokemon/species_info/gen_5.h b/src/data/pokemon/species_info/gen_5.h index e5270c2880..a00c691c17 100644 --- a/src/data/pokemon/species_info/gen_5.h +++ b/src/data/pokemon/species_info/gen_5.h @@ -23,7 +23,6 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_VICTORY_STAR, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, - .isMythical = TRUE, .speciesName = _("Victini"), .cryId = CRY_VICTINI, .natDexNum = NATIONAL_DEX_VICTINI, @@ -39,17 +38,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Victini, 48, 56), + .frontPic = gMonFrontPic_Victini, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Victini, .frontAnimId = ANIM_H_JUMPS, - BACK_PIC(Victini, 40, 64), + .backPic = gMonBackPic_Victini, + .backPicSize = MON_COORDS_SIZE(40, 64), .backPicYOffset = 7, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Victini), - ICON(Victini, 0), + .palette = gMonPalette_Victini, + .shinyPalette = gMonShinyPalette_Victini, + .iconSprite = gMonIcon_Victini, + .iconPalIndex = 0, FOOTPRINT(Victini) - LEARNSETS(Victini), + .isMythical = TRUE, + .levelUpLearnset = sVictiniLevelUpLearnset, + .teachableLearnset = sVictiniTeachableLearnset, }, #endif //P_FAMILY_VICTINI @@ -88,17 +93,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Snivy, 48, 40), + .frontPic = gMonFrontPic_Snivy, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Snivy, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Snivy, 56, 48), + .backPic = gMonBackPic_Snivy, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Snivy), - ICON(Snivy, 1), + .palette = gMonPalette_Snivy, + .shinyPalette = gMonShinyPalette_Snivy, + .iconSprite = gMonIcon_Snivy, + .iconPalIndex = 1, FOOTPRINT(Snivy) - LEARNSETS(Snivy), + .levelUpLearnset = sSnivyLevelUpLearnset, + .teachableLearnset = sSnivyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_SERVINE}), }, @@ -136,17 +146,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 9, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Servine, 48, 56), + .frontPic = gMonFrontPic_Servine, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Servine, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Servine, 48, 64), + .backPic = gMonBackPic_Servine, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 5, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Servine), - ICON(Servine, 1), + .palette = gMonPalette_Servine, + .shinyPalette = gMonShinyPalette_Servine, + .iconSprite = gMonIcon_Servine, + .iconPalIndex = 1, FOOTPRINT(Servine) - LEARNSETS(Servine), + .levelUpLearnset = sServineLevelUpLearnset, + .teachableLearnset = sServineTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SERPERIOR}), }, @@ -184,17 +199,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 0, .trainerScale = 405, .trainerOffset = 8, - FRONT_PIC(Serperior, 64, 56), + .frontPic = gMonFrontPic_Serperior, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Serperior, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, - BACK_PIC(Serperior, 64, 64), + .backPic = gMonBackPic_Serperior, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Serperior), - ICON(Serperior, 1), + .palette = gMonPalette_Serperior, + .shinyPalette = gMonShinyPalette_Serperior, + .iconSprite = gMonIcon_Serperior, + .iconPalIndex = 1, FOOTPRINT(Serperior) - LEARNSETS(Serperior), + .levelUpLearnset = sSerperiorLevelUpLearnset, + .teachableLearnset = sSerperiorTeachableLearnset, }, #endif //P_FAMILY_SNIVY @@ -233,17 +253,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Tepig, 40, 48), + .frontPic = gMonFrontPic_Tepig, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Tepig, .frontAnimId = ANIM_H_SLIDE, - BACK_PIC(Tepig, 48, 56), + .backPic = gMonBackPic_Tepig, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Tepig), - ICON(Tepig, 0), + .palette = gMonPalette_Tepig, + .shinyPalette = gMonShinyPalette_Tepig, + .iconSprite = gMonIcon_Tepig, + .iconPalIndex = 0, FOOTPRINT(Tepig) - LEARNSETS(Tepig), + .levelUpLearnset = sTepigLevelUpLearnset, + .teachableLearnset = sTepigTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_PIGNITE}), }, @@ -281,17 +306,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 8, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Pignite, 56, 56), + .frontPic = gMonFrontPic_Pignite, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Pignite, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Pignite, 64, 64), + .backPic = gMonBackPic_Pignite, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 9, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(Pignite), - ICON(Pignite, 0), + .palette = gMonPalette_Pignite, + .shinyPalette = gMonShinyPalette_Pignite, + .iconSprite = gMonIcon_Pignite, + .iconPalIndex = 0, FOOTPRINT(Pignite) - LEARNSETS(Pignite), + .levelUpLearnset = sPigniteLevelUpLearnset, + .teachableLearnset = sPigniteTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_EMBOAR}), }, @@ -330,17 +360,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(Emboar, 64, 64), + .frontPic = gMonFrontPic_Emboar, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Emboar, .frontAnimId = ANIM_DEEP_V_SQUISH_AND_BOUNCE, - BACK_PIC(Emboar, 64, 64), + .backPic = gMonBackPic_Emboar, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Emboar), - ICON(Emboar, 0), + .palette = gMonPalette_Emboar, + .shinyPalette = gMonShinyPalette_Emboar, + .iconSprite = gMonIcon_Emboar, + .iconPalIndex = 0, FOOTPRINT(Emboar) - LEARNSETS(Emboar), + .levelUpLearnset = sEmboarLevelUpLearnset, + .teachableLearnset = sEmboarTeachableLearnset, }, #endif //P_FAMILY_TEPIG @@ -379,17 +414,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Oshawott, 32, 40), + .frontPic = gMonFrontPic_Oshawott, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Oshawott, .frontAnimId = ANIM_H_JUMPS, - BACK_PIC(Oshawott, 40, 48), + .backPic = gMonBackPic_Oshawott, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 14, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Oshawott), - ICON(Oshawott, 0), + .palette = gMonPalette_Oshawott, + .shinyPalette = gMonShinyPalette_Oshawott, + .iconSprite = gMonIcon_Oshawott, + .iconPalIndex = 0, FOOTPRINT(Oshawott) - LEARNSETS(Oshawott), + .levelUpLearnset = sOshawottLevelUpLearnset, + .teachableLearnset = sOshawottTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_DEWOTT}), }, @@ -427,45 +467,28 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 9, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Dewott, 40, 56), + .frontPic = gMonFrontPic_Dewott, + .frontPicSize = MON_COORDS_SIZE(40, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Dewott, .frontAnimId = ANIM_H_VIBRATE, - BACK_PIC(Dewott, 56, 64), + .backPic = gMonBackPic_Dewott, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 5, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Dewott), - ICON(Dewott, 0), + .palette = gMonPalette_Dewott, + .shinyPalette = gMonShinyPalette_Dewott, + .iconSprite = gMonIcon_Dewott, + .iconPalIndex = 0, FOOTPRINT(Dewott) - LEARNSETS(Dewott), + .levelUpLearnset = sDewottLevelUpLearnset, + .teachableLearnset = sDewottTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SAMUROTT}, {EVO_NONE, 0, SPECIES_SAMUROTT_HISUIAN}), }, -#define SAMUROTT_MISC_INFO \ - .catchRate = 45, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 264 : 238, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Samurott"), \ - .cryId = CRY_SAMUROTT, \ - .natDexNum = NATIONAL_DEX_SAMUROTT, \ - .categoryName = _("Formidable"), \ - .height = 15, \ - .pokemonScale = 268, \ - .pokemonOffset = 2, \ - .trainerScale = 271, \ - .trainerOffset = 0, \ - FOOTPRINT(Samurott) \ - .formSpeciesIdTable = sSamurottFormSpeciesIdTable - [SPECIES_SAMUROTT] = { - SAMUROTT_MISC_INFO, .baseHP = 95, .baseAttack = 100, .baseDefense = 85, @@ -473,30 +496,53 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 108, .baseSpDefense = 70, .types = MON_TYPES(TYPE_WATER), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 264 : 238, .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Samurott"), + .cryId = CRY_SAMUROTT, + .natDexNum = NATIONAL_DEX_SAMUROTT, + .categoryName = _("Formidable"), + .height = 15, .weight = 946, .description = COMPOUND_STRING( "One swing of the seamitars attached\n" "to its armor can fell an opponent.\n" "A simple glare from one of them is\n" "enough to intimidate most enemies."), - FRONT_PIC(Samurott, 64, 64), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Samurott, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Samurott, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Samurott, 64, 56), + .backPic = gMonBackPic_Samurott, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(Samurott), - ICON(Samurott, 2), - LEARNSETS(Samurott), + .palette = gMonPalette_Samurott, + .shinyPalette = gMonShinyPalette_Samurott, + .iconSprite = gMonIcon_Samurott, + .iconPalIndex = 2, + FOOTPRINT(Samurott) + .levelUpLearnset = sSamurottLevelUpLearnset, + .teachableLearnset = sSamurottTeachableLearnset, + .formSpeciesIdTable = sSamurottFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_SAMUROTT_HISUIAN] = { - SAMUROTT_MISC_INFO, .baseHP = 90, .baseAttack = 108, .baseDefense = 80, @@ -504,25 +550,49 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 100, .baseSpDefense = 65, .types = MON_TYPES(TYPE_WATER, TYPE_DARK), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 264 : 238, .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHARPNESS }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Samurott"), + .cryId = CRY_SAMUROTT, + .natDexNum = NATIONAL_DEX_SAMUROTT, + .categoryName = _("Formidable"), + .height = 15, .weight = 582, .description = COMPOUND_STRING( "Hard of heart and deft of blade,\n" "this rare form of Samurott is a\n" "product of the Pokémon's evolution in the\n" "region of Hisui."), - FRONT_PIC(SamurottHisuian, 64, 64), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + .frontPic = gMonFrontPic_SamurottHisuian, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_SamurottHisuian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SamurottHisuian, 64, 64), + .backPic = gMonBackPic_SamurottHisuian, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(SamurottHisuian), - ICON(SamurottHisuian, 0), - LEARNSETS(SamurottHisuian), + .palette = gMonPalette_SamurottHisuian, + .shinyPalette = gMonShinyPalette_SamurottHisuian, + .iconSprite = gMonIcon_SamurottHisuian, + .iconPalIndex = 0, + FOOTPRINT(Samurott) .isHisuianForm = TRUE, + .levelUpLearnset = sSamurottHisuianLevelUpLearnset, + .teachableLearnset = sSamurottHisuianTeachableLearnset, + .formSpeciesIdTable = sSamurottFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_OSHAWOTT @@ -562,17 +632,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Patrat, 48, 40), + .frontPic = gMonFrontPic_Patrat, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Patrat, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Patrat, 64, 40), + .backPic = gMonBackPic_Patrat, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Patrat), - ICON(Patrat, 2), + .palette = gMonPalette_Patrat, + .shinyPalette = gMonShinyPalette_Patrat, + .iconSprite = gMonIcon_Patrat, + .iconPalIndex = 2, FOOTPRINT(Patrat) - LEARNSETS(Patrat), + .levelUpLearnset = sPatratLevelUpLearnset, + .teachableLearnset = sPatratTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_WATCHOG}), }, @@ -610,17 +685,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Watchog, 32, 64), + .frontPic = gMonFrontPic_Watchog, + .frontPicSize = MON_COORDS_SIZE(32, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Watchog, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Watchog, 56, 64), + .backPic = gMonBackPic_Watchog, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Watchog), - ICON(Watchog, 2), + .palette = gMonPalette_Watchog, + .shinyPalette = gMonShinyPalette_Watchog, + .iconSprite = gMonIcon_Watchog, + .iconPalIndex = 2, FOOTPRINT(Watchog) - LEARNSETS(Watchog), + .levelUpLearnset = sWatchogLevelUpLearnset, + .teachableLearnset = sWatchogTeachableLearnset, }, #endif //P_FAMILY_PATRAT @@ -659,17 +739,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Lillipup, 32, 40), + .frontPic = gMonFrontPic_Lillipup, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Lillipup, .frontAnimId = ANIM_H_JUMPS, - BACK_PIC(Lillipup, 48, 48), + .backPic = gMonBackPic_Lillipup, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 12, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Lillipup), - ICON(Lillipup, 2), + .palette = gMonPalette_Lillipup, + .shinyPalette = gMonShinyPalette_Lillipup, + .iconSprite = gMonIcon_Lillipup, + .iconPalIndex = 2, FOOTPRINT(Lillipup) - LEARNSETS(Lillipup), + .levelUpLearnset = sLillipupLevelUpLearnset, + .teachableLearnset = sLillipupTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_HERDIER}), }, @@ -707,17 +792,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 9, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Herdier, 48, 48), + .frontPic = gMonFrontPic_Herdier, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Herdier, .frontAnimId = ANIM_H_STRETCH, - BACK_PIC(Herdier, 48, 56), + .backPic = gMonBackPic_Herdier, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 10, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Herdier), - ICON(Herdier, 2), + .palette = gMonPalette_Herdier, + .shinyPalette = gMonShinyPalette_Herdier, + .iconSprite = gMonIcon_Herdier, + .iconPalIndex = 2, FOOTPRINT(Herdier) - LEARNSETS(Herdier), + .levelUpLearnset = sHerdierLevelUpLearnset, + .teachableLearnset = sHerdierTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_STOUTLAND}), }, @@ -761,17 +851,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Stoutland, 64, 64), + .frontPic = gMonFrontPic_Stoutland, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Stoutland, .frontAnimId = ANIM_H_SLIDE, - BACK_PIC(Stoutland, 64, 64), + .backPic = gMonBackPic_Stoutland, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Stoutland), - ICON(Stoutland, 2), + .palette = gMonPalette_Stoutland, + .shinyPalette = gMonShinyPalette_Stoutland, + .iconSprite = gMonIcon_Stoutland, + .iconPalIndex = 2, FOOTPRINT(Stoutland) - LEARNSETS(Stoutland), + .levelUpLearnset = sStoutlandLevelUpLearnset, + .teachableLearnset = sStoutlandTeachableLearnset, }, #endif //P_FAMILY_LILLIPUP @@ -810,17 +905,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Purrloin, 48, 48), + .frontPic = gMonFrontPic_Purrloin, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Purrloin, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Purrloin, 56, 48), + .backPic = gMonBackPic_Purrloin, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Purrloin), - ICON(Purrloin, 0), + .palette = gMonPalette_Purrloin, + .shinyPalette = gMonShinyPalette_Purrloin, + .iconSprite = gMonIcon_Purrloin, + .iconPalIndex = 0, FOOTPRINT(Purrloin) - LEARNSETS(Purrloin), + .levelUpLearnset = sPurrloinLevelUpLearnset, + .teachableLearnset = sPurrloinTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LIEPARD}), }, @@ -858,17 +958,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Liepard, 64, 64), + .frontPic = gMonFrontPic_Liepard, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Liepard, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Liepard, 56, 48), + .backPic = gMonBackPic_Liepard, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_H_STRETCH, - PALETTES(Liepard), - ICON(Liepard, 0), + .palette = gMonPalette_Liepard, + .shinyPalette = gMonShinyPalette_Liepard, + .iconSprite = gMonIcon_Liepard, + .iconPalIndex = 0, FOOTPRINT(Liepard) - LEARNSETS(Liepard), + .levelUpLearnset = sLiepardLevelUpLearnset, + .teachableLearnset = sLiepardTeachableLearnset, }, #endif //P_FAMILY_PURRLOIN @@ -907,17 +1012,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pansage, 40, 48), + .frontPic = gMonFrontPic_Pansage, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Pansage, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, - BACK_PIC(Pansage, 48, 48), + .backPic = gMonBackPic_Pansage, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Pansage), - ICON(Pansage, 1), + .palette = gMonPalette_Pansage, + .shinyPalette = gMonShinyPalette_Pansage, + .iconSprite = gMonIcon_Pansage, + .iconPalIndex = 1, FOOTPRINT(Pansage) - LEARNSETS(Pansage), + .levelUpLearnset = sPansageLevelUpLearnset, + .teachableLearnset = sPansageTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SIMISAGE}), }, @@ -955,17 +1065,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Simisage, 64, 64), + .frontPic = gMonFrontPic_Simisage, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Simisage, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Simisage, 56, 64), + .backPic = gMonBackPic_Simisage, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Simisage), - ICON(Simisage, 1), + .palette = gMonPalette_Simisage, + .shinyPalette = gMonShinyPalette_Simisage, + .iconSprite = gMonIcon_Simisage, + .iconPalIndex = 1, FOOTPRINT(Simisage) - LEARNSETS(Simisage), + .levelUpLearnset = sSimisageLevelUpLearnset, + .teachableLearnset = sSimisageTeachableLearnset, }, #endif //P_FAMILY_PANSAGE @@ -1005,17 +1120,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pansear, 48, 48), + .frontPic = gMonFrontPic_Pansear, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Pansear, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Pansear, 48, 56), + .backPic = gMonBackPic_Pansear, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 10, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Pansear), - ICON(Pansear, 2), + .palette = gMonPalette_Pansear, + .shinyPalette = gMonShinyPalette_Pansear, + .iconSprite = gMonIcon_Pansear, + .iconPalIndex = 2, FOOTPRINT(Pansear) - LEARNSETS(Pansear), + .levelUpLearnset = sPansearLevelUpLearnset, + .teachableLearnset = sPansearTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_SIMISEAR}), }, @@ -1054,17 +1174,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Simisear, 56, 56), + .frontPic = gMonFrontPic_Simisear, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Simisear, .frontAnimId = ANIM_SWING_CONCAVE_FAST, - BACK_PIC(Simisear, 64, 56), + .backPic = gMonBackPic_Simisear, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Simisear), - ICON(Simisear, 2), + .palette = gMonPalette_Simisear, + .shinyPalette = gMonShinyPalette_Simisear, + .iconSprite = gMonIcon_Simisear, + .iconPalIndex = 2, FOOTPRINT(Simisear) - LEARNSETS(Simisear), + .levelUpLearnset = sSimisearLevelUpLearnset, + .teachableLearnset = sSimisearTeachableLearnset, }, #endif //P_FAMILY_PANSEAR @@ -1103,17 +1228,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Panpour, 48, 48), + .frontPic = gMonFrontPic_Panpour, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Panpour, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Panpour, 48, 48), + .backPic = gMonBackPic_Panpour, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Panpour), - ICON(Panpour, 2), + .palette = gMonPalette_Panpour, + .shinyPalette = gMonShinyPalette_Panpour, + .iconSprite = gMonIcon_Panpour, + .iconPalIndex = 2, FOOTPRINT(Panpour) - LEARNSETS(Panpour), + .levelUpLearnset = sPanpourLevelUpLearnset, + .teachableLearnset = sPanpourTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_SIMIPOUR}), }, @@ -1151,17 +1281,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Simipour, 56, 56), + .frontPic = gMonFrontPic_Simipour, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Simipour, .frontAnimId = ANIM_H_STRETCH, - BACK_PIC(Simipour, 64, 56), + .backPic = gMonBackPic_Simipour, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Simipour), - ICON(Simipour, 2), + .palette = gMonPalette_Simipour, + .shinyPalette = gMonShinyPalette_Simipour, + .iconSprite = gMonIcon_Simipour, + .iconPalIndex = 2, FOOTPRINT(Simipour) - LEARNSETS(Simipour), + .levelUpLearnset = sSimipourLevelUpLearnset, + .teachableLearnset = sSimipourTeachableLearnset, }, #endif //P_FAMILY_PANPOUR @@ -1200,18 +1335,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Munna, 32, 32), + .frontPic = gMonFrontPic_Munna, + .frontPicSize = MON_COORDS_SIZE(32, 32), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Munna, .frontAnimId = ANIM_RISING_WOBBLE, .enemyMonElevation = 7, - BACK_PIC(Munna, 48, 32), + .backPic = gMonBackPic_Munna, + .backPicSize = MON_COORDS_SIZE(48, 32), .backPicYOffset = 16, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Munna), - ICON(Munna, 0), + .palette = gMonPalette_Munna, + .shinyPalette = gMonShinyPalette_Munna, + .iconSprite = gMonIcon_Munna, + .iconPalIndex = 0, FOOTPRINT(Munna) - LEARNSETS(Munna), + .levelUpLearnset = sMunnaLevelUpLearnset, + .teachableLearnset = sMunnaTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_MUSHARNA}), }, @@ -1249,18 +1389,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Musharna, 64, 64), + .frontPic = gMonFrontPic_Musharna, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Musharna, .frontAnimId = ANIM_ROTATE_TO_SIDES_TWICE, .enemyMonElevation = 5, - BACK_PIC(Musharna, 64, 64), + .backPic = gMonBackPic_Musharna, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 8, .backAnimId = BACK_ANIM_GROW, - PALETTES(Musharna), - ICON(Musharna, 0), + .palette = gMonPalette_Musharna, + .shinyPalette = gMonShinyPalette_Musharna, + .iconSprite = gMonIcon_Musharna, + .iconPalIndex = 0, FOOTPRINT(Musharna) - LEARNSETS(Musharna), + .levelUpLearnset = sMusharnaLevelUpLearnset, + .teachableLearnset = sMusharnaTeachableLearnset, }, #endif //P_FAMILY_MUNNA @@ -1299,17 +1444,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pidove, 40, 40), + .frontPic = gMonFrontPic_Pidove, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Pidove, .frontAnimId = ANIM_V_JUMPS_SMALL, - BACK_PIC(Pidove, 48, 40), + .backPic = gMonBackPic_Pidove, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Pidove), - ICON(Pidove, 0), + .palette = gMonPalette_Pidove, + .shinyPalette = gMonShinyPalette_Pidove, + .iconSprite = gMonIcon_Pidove, + .iconPalIndex = 0, FOOTPRINT(Pidove) - LEARNSETS(Pidove), + .levelUpLearnset = sPidoveLevelUpLearnset, + .teachableLearnset = sPidoveTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 21, SPECIES_TRANQUILL}), }, @@ -1347,17 +1497,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Tranquill, 40, 56), + .frontPic = gMonFrontPic_Tranquill, + .frontPicSize = MON_COORDS_SIZE(40, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Tranquill, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Tranquill, 56, 48), + .backPic = gMonBackPic_Tranquill, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Tranquill), - ICON(Tranquill, 0), + .palette = gMonPalette_Tranquill, + .shinyPalette = gMonShinyPalette_Tranquill, + .iconSprite = gMonIcon_Tranquill, + .iconPalIndex = 0, FOOTPRINT(Tranquill) - LEARNSETS(Tranquill), + .levelUpLearnset = sTranquillLevelUpLearnset, + .teachableLearnset = sTranquillTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_UNFEZANT}), }, @@ -1401,21 +1556,30 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Unfezant, 56, 64), - FRONT_PIC_FEMALE(Unfezant, 56, 64), + .frontPic = gMonFrontPic_Unfezant, + .frontPicFemale = gMonFrontPic_UnfezantF, + .frontPicSize = MON_COORDS_SIZE(56, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Unfezant, .frontAnimId = ANIM_SHRINK_GROW, - BACK_PIC(Unfezant, 64, 64), - BACK_PIC_FEMALE(Unfezant, 64, 64), + .backPic = gMonBackPic_Unfezant, + .backPicFemale = gMonBackPic_UnfezantF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Unfezant), - PALETTE_FEMALE(Unfezant), - ICON(Unfezant, 1), - ICON_FEMALE(Unfezant, 1), + .palette = gMonPalette_Unfezant, + .paletteFemale = gMonPalette_UnfezantF, + .shinyPalette = gMonShinyPalette_Unfezant, + .shinyPaletteFemale = gMonShinyPalette_UnfezantF, + .iconSprite = gMonIcon_Unfezant, + .iconSpriteFemale = gMonIcon_UnfezantF, + .iconPalIndex = 1, + .iconPalIndexFemale = 1, FOOTPRINT(Unfezant) - LEARNSETS(Unfezant), + .levelUpLearnset = sUnfezantLevelUpLearnset, + .teachableLearnset = sUnfezantTeachableLearnset, }, #endif //P_FAMILY_PIDOVE @@ -1454,17 +1618,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 8, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Blitzle, 40, 56), + .frontPic = gMonFrontPic_Blitzle, + .frontPicSize = MON_COORDS_SIZE(40, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Blitzle, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Blitzle, 56, 56), + .backPic = gMonBackPic_Blitzle, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Blitzle), - ICON(Blitzle, 2), + .palette = gMonPalette_Blitzle, + .shinyPalette = gMonShinyPalette_Blitzle, + .iconSprite = gMonIcon_Blitzle, + .iconPalIndex = 2, FOOTPRINT(Blitzle) - LEARNSETS(Blitzle), + .levelUpLearnset = sBlitzleLevelUpLearnset, + .teachableLearnset = sBlitzleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_ZEBSTRIKA}), }, @@ -1502,17 +1671,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(Zebstrika, 64, 64), + .frontPic = gMonFrontPic_Zebstrika, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Zebstrika, .frontAnimId = ANIM_BACK_AND_LUNGE, - BACK_PIC(Zebstrika, 64, 64), + .backPic = gMonBackPic_Zebstrika, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(Zebstrika), - ICON(Zebstrika, 2), + .palette = gMonPalette_Zebstrika, + .shinyPalette = gMonShinyPalette_Zebstrika, + .iconSprite = gMonIcon_Zebstrika, + .iconPalIndex = 2, FOOTPRINT(Zebstrika) - LEARNSETS(Zebstrika), + .levelUpLearnset = sZebstrikaLevelUpLearnset, + .teachableLearnset = sZebstrikaTeachableLearnset, }, #endif //P_FAMILY_BLITZLE @@ -1553,17 +1727,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Roggenrola, 24, 40), + .frontPic = gMonFrontPic_Roggenrola, + .frontPicSize = MON_COORDS_SIZE(24, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Roggenrola, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Roggenrola, 40, 48), + .backPic = gMonBackPic_Roggenrola, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 13, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Roggenrola), - ICON(Roggenrola, 2), + .palette = gMonPalette_Roggenrola, + .shinyPalette = gMonShinyPalette_Roggenrola, + .iconSprite = gMonIcon_Roggenrola, + .iconPalIndex = 2, FOOTPRINT(Roggenrola) - LEARNSETS(Roggenrola), + .levelUpLearnset = sRoggenrolaLevelUpLearnset, + .teachableLearnset = sRoggenrolaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_BOLDORE}), }, @@ -1604,17 +1783,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Boldore, 56, 48), + .frontPic = gMonFrontPic_Boldore, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Boldore, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(Boldore, 64, 40), + .backPic = gMonBackPic_Boldore, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 16, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Boldore), - ICON(Boldore, 0), + .palette = gMonPalette_Boldore, + .shinyPalette = gMonShinyPalette_Boldore, + .iconSprite = gMonIcon_Boldore, + .iconPalIndex = 0, FOOTPRINT(Boldore) - LEARNSETS(Boldore), + .levelUpLearnset = sBoldoreLevelUpLearnset, + .teachableLearnset = sBoldoreTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GIGALITH}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GIGALITH}), }, @@ -1661,17 +1845,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 0, .trainerScale = 290, .trainerOffset = 1, - FRONT_PIC(Gigalith, 64, 64), + .frontPic = gMonFrontPic_Gigalith, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Gigalith, .frontAnimId = ANIM_ROTATE_UP_SLAM_DOWN, - BACK_PIC(Gigalith, 56, 64), + .backPic = gMonBackPic_Gigalith, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Gigalith), - ICON(Gigalith, 0), + .palette = gMonPalette_Gigalith, + .shinyPalette = gMonShinyPalette_Gigalith, + .iconSprite = gMonIcon_Gigalith, + .iconPalIndex = 0, FOOTPRINT(Gigalith) - LEARNSETS(Gigalith), + .levelUpLearnset = sGigalithLevelUpLearnset, + .teachableLearnset = sGigalithTeachableLearnset, }, #endif //P_FAMILY_ROGGENROLA @@ -1710,18 +1899,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Woobat, 64, 32), + .frontPic = gMonFrontPic_Woobat, + .frontPicSize = MON_COORDS_SIZE(64, 32), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Woobat, .frontAnimId = ANIM_FOUR_PETAL, .enemyMonElevation = 19, - BACK_PIC(Woobat, 64, 32), + .backPic = gMonBackPic_Woobat, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 16, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Woobat), - ICON(Woobat, 0), + .palette = gMonPalette_Woobat, + .shinyPalette = gMonShinyPalette_Woobat, + .iconSprite = gMonIcon_Woobat, + .iconPalIndex = 0, FOOTPRINT(Woobat) - LEARNSETS(Woobat), + .levelUpLearnset = sWoobatLevelUpLearnset, + .teachableLearnset = sWoobatTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_SWOOBAT}), }, @@ -1759,18 +1953,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Swoobat, 64, 64), + .frontPic = gMonFrontPic_Swoobat, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Swoobat, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, .enemyMonElevation = 10, - BACK_PIC(Swoobat, 64, 64), + .backPic = gMonBackPic_Swoobat, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Swoobat), - ICON(Swoobat, 0), + .palette = gMonPalette_Swoobat, + .shinyPalette = gMonShinyPalette_Swoobat, + .iconSprite = gMonIcon_Swoobat, + .iconPalIndex = 0, FOOTPRINT(Swoobat) - LEARNSETS(Swoobat), + .levelUpLearnset = sSwoobatLevelUpLearnset, + .teachableLearnset = sSwoobatTeachableLearnset, }, #endif //P_FAMILY_WOOBAT @@ -1810,17 +2009,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Drilbur, 48, 48), + .frontPic = gMonFrontPic_Drilbur, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Drilbur, .frontAnimId = ANIM_SWING_CONCAVE_FAST_SHORT, - BACK_PIC(Drilbur, 64, 40), + .backPic = gMonBackPic_Drilbur, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Drilbur), - ICON(Drilbur, 0), + .palette = gMonPalette_Drilbur, + .shinyPalette = gMonShinyPalette_Drilbur, + .iconSprite = gMonIcon_Drilbur, + .iconPalIndex = 0, FOOTPRINT(Drilbur) - LEARNSETS(Drilbur), + .levelUpLearnset = sDrilburLevelUpLearnset, + .teachableLearnset = sDrilburTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_EXCADRILL}), }, @@ -1859,42 +2063,28 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Excadrill, 64, 64), + .frontPic = gMonFrontPic_Excadrill, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Excadrill, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Excadrill, 64, 64), + .backPic = gMonBackPic_Excadrill, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 11, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Excadrill), - ICON(Excadrill, 0), + .palette = gMonPalette_Excadrill, + .shinyPalette = gMonShinyPalette_Excadrill, + .iconSprite = gMonIcon_Excadrill, + .iconPalIndex = 0, FOOTPRINT(Excadrill) - LEARNSETS(Excadrill), + .levelUpLearnset = sExcadrillLevelUpLearnset, + .teachableLearnset = sExcadrillTeachableLearnset, }, #endif //P_FAMILY_DRILBUR -#define AUDINO_MISC_INFO \ - .catchRate = 255, \ - .evYield_HP = 2, \ - .itemCommon = ITEM_ORAN_BERRY, \ - .itemRare = ITEM_SITRUS_BERRY, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY), \ - .speciesName = _("Audino"), \ - .natDexNum = NATIONAL_DEX_AUDINO, \ - .categoryName = _("Hearing"), \ - FOOTPRINT(Audino) \ - LEARNSETS(Audino), \ - .formSpeciesIdTable = sAudinoFormSpeciesIdTable, \ - .formChangeTable = sAudinoFormChangeTable - #if P_FAMILY_AUDINO [SPECIES_AUDINO] = { - AUDINO_MISC_INFO, .baseHP = 103, .baseAttack = 60, .baseDefense = 86, @@ -1902,10 +2092,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 60, .baseSpDefense = 86, .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 255, .expYield = 390, + .evYield_HP = 2, + .itemCommon = ITEM_ORAN_BERRY, + .itemRare = ITEM_SITRUS_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY), .abilities = { ABILITY_HEALER, ABILITY_REGENERATOR, ABILITY_KLUTZ }, .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Audino"), .cryId = CRY_AUDINO, + .natDexNum = NATIONAL_DEX_AUDINO, + .categoryName = _("Hearing"), .height = 11, .weight = 310, .description = COMPOUND_STRING( @@ -1917,21 +2119,29 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Audino, 40, 48), + .frontPic = gMonFrontPic_Audino, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Audino, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Audino, 56, 56), + .backPic = gMonBackPic_Audino, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Audino), - ICON(Audino, 1), + .palette = gMonPalette_Audino, + .shinyPalette = gMonShinyPalette_Audino, + .iconSprite = gMonIcon_Audino, + .iconPalIndex = 1, + FOOTPRINT(Audino) + .levelUpLearnset = sAudinoLevelUpLearnset, + .teachableLearnset = sAudinoTeachableLearnset, + .formSpeciesIdTable = sAudinoFormSpeciesIdTable, + .formChangeTable = sAudinoFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_AUDINO_MEGA] = { - AUDINO_MISC_INFO, .baseHP = 103, .baseAttack = 60, .baseDefense = 126, @@ -1939,10 +2149,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 80, .baseSpDefense = 126, .types = MON_TYPES(TYPE_NORMAL, TYPE_FAIRY), + .catchRate = 255, .expYield = 425, + .evYield_HP = 2, + .itemCommon = ITEM_ORAN_BERRY, + .itemRare = ITEM_SITRUS_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY), .abilities = { ABILITY_HEALER, ABILITY_HEALER, ABILITY_HEALER }, .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Audino"), .cryId = CRY_AUDINO_MEGA, + .natDexNum = NATIONAL_DEX_AUDINO, + .categoryName = _("Hearing"), .height = 15, .weight = 320, .description = COMPOUND_STRING( @@ -1954,16 +2176,25 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(AudinoMega, 48, 64), + .frontPic = gMonFrontPic_AudinoMega, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 6, .frontAnimFrames = sAnims_AudinoMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(AudinoMega, 56, 64), + .backPic = gMonBackPic_AudinoMega, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(AudinoMega), - ICON(AudinoMega, 1), + .palette = gMonPalette_AudinoMega, + .shinyPalette = gMonShinyPalette_AudinoMega, + .iconSprite = gMonIcon_AudinoMega, + .iconPalIndex = 1, + FOOTPRINT(Audino) .isMegaEvolution = TRUE, + .levelUpLearnset = sAudinoLevelUpLearnset, + .teachableLearnset = sAudinoTeachableLearnset, + .formSpeciesIdTable = sAudinoFormSpeciesIdTable, + .formChangeTable = sAudinoFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_AUDINO @@ -2003,17 +2234,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Timburr, 48, 40), + .frontPic = gMonFrontPic_Timburr, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Timburr, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Timburr, 64, 40), + .backPic = gMonBackPic_Timburr, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 15, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Timburr), - ICON(Timburr, 1), + .palette = gMonPalette_Timburr, + .shinyPalette = gMonShinyPalette_Timburr, + .iconSprite = gMonIcon_Timburr, + .iconPalIndex = 1, FOOTPRINT(Timburr) - LEARNSETS(Timburr), + .levelUpLearnset = sTimburrLevelUpLearnset, + .teachableLearnset = sTimburrTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_GURDURR}), }, @@ -2051,17 +2287,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Gurdurr, 64, 64), + .frontPic = gMonFrontPic_Gurdurr, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Gurdurr, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Gurdurr, 64, 48), + .backPic = gMonBackPic_Gurdurr, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Gurdurr), - ICON(Gurdurr, 1), + .palette = gMonPalette_Gurdurr, + .shinyPalette = gMonShinyPalette_Gurdurr, + .iconSprite = gMonIcon_Gurdurr, + .iconPalIndex = 1, FOOTPRINT(Gurdurr) - LEARNSETS(Gurdurr), + .levelUpLearnset = sGurdurrLevelUpLearnset, + .teachableLearnset = sGurdurrTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_CONKELDURR}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_CONKELDURR}), }, @@ -2100,17 +2341,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 3, .trainerScale = 262, .trainerOffset = 0, - FRONT_PIC(Conkeldurr, 64, 56), + .frontPic = gMonFrontPic_Conkeldurr, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Conkeldurr, .frontAnimId = ANIM_V_SHAKE_TWICE, - BACK_PIC(Conkeldurr, 64, 56), + .backPic = gMonBackPic_Conkeldurr, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 13, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Conkeldurr), - ICON(Conkeldurr, 1), + .palette = gMonPalette_Conkeldurr, + .shinyPalette = gMonShinyPalette_Conkeldurr, + .iconSprite = gMonIcon_Conkeldurr, + .iconPalIndex = 1, FOOTPRINT(Conkeldurr) - LEARNSETS(Conkeldurr), + .levelUpLearnset = sConkeldurrLevelUpLearnset, + .teachableLearnset = sConkeldurrTeachableLearnset, }, #endif //P_FAMILY_TIMBURR @@ -2149,17 +2395,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Tympole, 40, 40), + .frontPic = gMonFrontPic_Tympole, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Tympole, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(Tympole, 40, 32), + .backPic = gMonBackPic_Tympole, + .backPicSize = MON_COORDS_SIZE(40, 32), .backPicYOffset = 17, .backAnimId = BACK_ANIM_H_SPRING, - PALETTES(Tympole), - ICON(Tympole, 2), + .palette = gMonPalette_Tympole, + .shinyPalette = gMonShinyPalette_Tympole, + .iconSprite = gMonIcon_Tympole, + .iconPalIndex = 2, FOOTPRINT(Tympole) - LEARNSETS(Tympole), + .levelUpLearnset = sTympoleLevelUpLearnset, + .teachableLearnset = sTympoleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_PALPITOAD}), }, @@ -2197,17 +2448,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 10, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Palpitoad, 40, 48), + .frontPic = gMonFrontPic_Palpitoad, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Palpitoad, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, - BACK_PIC(Palpitoad, 56, 40), + .backPic = gMonBackPic_Palpitoad, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Palpitoad), - ICON(Palpitoad, 2), + .palette = gMonPalette_Palpitoad, + .shinyPalette = gMonShinyPalette_Palpitoad, + .iconSprite = gMonIcon_Palpitoad, + .iconPalIndex = 2, FOOTPRINT(Palpitoad) - LEARNSETS(Palpitoad), + .levelUpLearnset = sPalpitoadLevelUpLearnset, + .teachableLearnset = sPalpitoadTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SEISMITOAD}), }, @@ -2251,17 +2507,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Seismitoad, 64, 64), + .frontPic = gMonFrontPic_Seismitoad, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Seismitoad, .frontAnimId = ANIM_H_JUMPS, - BACK_PIC(Seismitoad, 64, 40), + .backPic = gMonBackPic_Seismitoad, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Seismitoad), - ICON(Seismitoad, 0), + .palette = gMonPalette_Seismitoad, + .shinyPalette = gMonShinyPalette_Seismitoad, + .iconSprite = gMonIcon_Seismitoad, + .iconPalIndex = 0, FOOTPRINT(Seismitoad) - LEARNSETS(Seismitoad), + .levelUpLearnset = sSeismitoadLevelUpLearnset, + .teachableLearnset = sSeismitoadTeachableLearnset, }, #endif //P_FAMILY_TYMPOLE @@ -2301,17 +2562,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Throh, 64, 48), + .frontPic = gMonFrontPic_Throh, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Throh, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, - BACK_PIC(Throh, 64, 48), + .backPic = gMonBackPic_Throh, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Throh), - ICON(Throh, 0), + .palette = gMonPalette_Throh, + .shinyPalette = gMonShinyPalette_Throh, + .iconSprite = gMonIcon_Throh, + .iconPalIndex = 0, FOOTPRINT(Throh) - LEARNSETS(Throh), + .levelUpLearnset = sThrohLevelUpLearnset, + .teachableLearnset = sThrohTeachableLearnset, }, #endif //P_FAMILY_THROH @@ -2352,17 +2618,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 4, .trainerScale = 262, .trainerOffset = 0, - FRONT_PIC(Sawk, 56, 56), + .frontPic = gMonFrontPic_Sawk, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Sawk, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Sawk, 64, 40), + .backPic = gMonBackPic_Sawk, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_H_STRETCH, - PALETTES(Sawk), - ICON(Sawk, 0), + .palette = gMonPalette_Sawk, + .shinyPalette = gMonShinyPalette_Sawk, + .iconSprite = gMonIcon_Sawk, + .iconPalIndex = 0, FOOTPRINT(Sawk) - LEARNSETS(Sawk), + .levelUpLearnset = sSawkLevelUpLearnset, + .teachableLearnset = sSawkTeachableLearnset, }, #endif //P_FAMILY_SAWK @@ -2402,17 +2673,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Sewaddle, 40, 40), + .frontPic = gMonFrontPic_Sewaddle, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Sewaddle, .frontAnimId = ANIM_CIRCLE_INTO_BG, - BACK_PIC(Sewaddle, 40, 48), + .backPic = gMonBackPic_Sewaddle, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 13, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Sewaddle), - ICON(Sewaddle, 1), + .palette = gMonPalette_Sewaddle, + .shinyPalette = gMonShinyPalette_Sewaddle, + .iconSprite = gMonIcon_Sewaddle, + .iconPalIndex = 1, FOOTPRINT(Sewaddle) - LEARNSETS(Sewaddle), + .levelUpLearnset = sSewaddleLevelUpLearnset, + .teachableLearnset = sSewaddleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_SWADLOON}), }, @@ -2451,17 +2727,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Swadloon, 56, 48), + .frontPic = gMonFrontPic_Swadloon, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Swadloon, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, - BACK_PIC(Swadloon, 48, 48), + .backPic = gMonBackPic_Swadloon, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Swadloon), - ICON(Swadloon, 1), + .palette = gMonPalette_Swadloon, + .shinyPalette = gMonShinyPalette_Swadloon, + .iconSprite = gMonIcon_Swadloon, + .iconPalIndex = 1, FOOTPRINT(Swadloon) - LEARNSETS(Swadloon), + .levelUpLearnset = sSwadloonLevelUpLearnset, + .teachableLearnset = sSwadloonTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_LEAVANNY}), }, @@ -2506,17 +2787,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Leavanny, 48, 64), + .frontPic = gMonFrontPic_Leavanny, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Leavanny, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Leavanny, 56, 64), + .backPic = gMonBackPic_Leavanny, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(Leavanny), - ICON(Leavanny, 1), + .palette = gMonPalette_Leavanny, + .shinyPalette = gMonShinyPalette_Leavanny, + .iconSprite = gMonIcon_Leavanny, + .iconPalIndex = 1, FOOTPRINT(Leavanny) - LEARNSETS(Leavanny), + .levelUpLearnset = sLeavannyLevelUpLearnset, + .teachableLearnset = sLeavannyTeachableLearnset, }, #endif //P_FAMILY_SEWADDLE @@ -2539,11 +2825,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), - #if P_UPDATED_ABILITIES >= GEN_6 - .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_SPEED_BOOST }, - #else - .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_QUICK_FEET }, - #endif + #if P_UPDATED_ABILITIES >= GEN_6 + .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_SPEED_BOOST }, + #else + .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_QUICK_FEET }, + #endif .bodyColor = BODY_COLOR_RED, .speciesName = _("Venipede"), .cryId = CRY_VENIPEDE, @@ -2560,17 +2846,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 16, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Venipede, 48, 32), + .frontPic = gMonFrontPic_Venipede, + .frontPicSize = MON_COORDS_SIZE(48, 32), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Venipede, .frontAnimId = ANIM_H_SLIDE, - BACK_PIC(Venipede, 64, 40), + .backPic = gMonBackPic_Venipede, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 14, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Venipede), - ICON(Venipede, 1), + .palette = gMonPalette_Venipede, + .shinyPalette = gMonShinyPalette_Venipede, + .iconSprite = gMonIcon_Venipede, + .iconPalIndex = 1, FOOTPRINT(Venipede) - LEARNSETS(Venipede), + .levelUpLearnset = sVenipedeLevelUpLearnset, + .teachableLearnset = sVenipedeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_WHIRLIPEDE}), }, @@ -2592,11 +2883,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), - #if P_UPDATED_ABILITIES >= GEN_6 - .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_SPEED_BOOST }, - #else - .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_QUICK_FEET }, - #endif + #if P_UPDATED_ABILITIES >= GEN_6 + .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_SPEED_BOOST }, + #else + .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_QUICK_FEET }, + #endif .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Whirlipede"), .cryId = CRY_WHIRLIPEDE, @@ -2613,17 +2904,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Whirlipede, 56, 40), + .frontPic = gMonFrontPic_Whirlipede, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Whirlipede, .frontAnimId = ANIM_TIP_MOVE_FORWARD, - BACK_PIC(Whirlipede, 64, 40), + .backPic = gMonBackPic_Whirlipede, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 15, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Whirlipede), - ICON(Whirlipede, 2), + .palette = gMonPalette_Whirlipede, + .shinyPalette = gMonShinyPalette_Whirlipede, + .iconSprite = gMonIcon_Whirlipede, + .iconPalIndex = 2, FOOTPRINT(Whirlipede) - LEARNSETS(Whirlipede), + .levelUpLearnset = sWhirlipedeLevelUpLearnset, + .teachableLearnset = sWhirlipedeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_SCOLIPEDE}), }, @@ -2651,11 +2947,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), - #if P_UPDATED_ABILITIES >= GEN_6 - .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_SPEED_BOOST }, - #else - .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_QUICK_FEET }, - #endif + #if P_UPDATED_ABILITIES >= GEN_6 + .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_SPEED_BOOST }, + #else + .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_QUICK_FEET }, + #endif .bodyColor = BODY_COLOR_RED, .speciesName = _("Scolipede"), .cryId = CRY_SCOLIPEDE, @@ -2672,17 +2968,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 423, .trainerOffset = 8, - FRONT_PIC(Scolipede, 64, 64), + .frontPic = gMonFrontPic_Scolipede, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Scolipede, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Scolipede, 64, 64), + .backPic = gMonBackPic_Scolipede, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Scolipede), - ICON(Scolipede, 2), + .palette = gMonPalette_Scolipede, + .shinyPalette = gMonShinyPalette_Scolipede, + .iconSprite = gMonIcon_Scolipede, + .iconPalIndex = 2, FOOTPRINT(Scolipede) - LEARNSETS(Scolipede), + .levelUpLearnset = sScolipedeLevelUpLearnset, + .teachableLearnset = sScolipedeTeachableLearnset, }, #endif //P_FAMILY_VENIPEDE @@ -2728,17 +3029,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cottonee, 48, 32), + .frontPic = gMonFrontPic_Cottonee, + .frontPicSize = MON_COORDS_SIZE(48, 32), .frontPicYOffset = 18, .frontAnimFrames = sAnims_Cottonee, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Cottonee, 64, 32), + .backPic = gMonBackPic_Cottonee, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 18, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Cottonee), - ICON(Cottonee, 1), + .palette = gMonPalette_Cottonee, + .shinyPalette = gMonShinyPalette_Cottonee, + .iconSprite = gMonIcon_Cottonee, + .iconPalIndex = 1, FOOTPRINT(Cottonee) - LEARNSETS(Cottonee), + .levelUpLearnset = sCottoneeLevelUpLearnset, + .teachableLearnset = sCottoneeTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_WHIMSICOTT}), }, @@ -2777,17 +3083,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Whimsicott, 56, 56), + .frontPic = gMonFrontPic_Whimsicott, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Whimsicott, .frontAnimId = ANIM_SHRINK_GROW, - BACK_PIC(Whimsicott, 64, 48), + .backPic = gMonBackPic_Whimsicott, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Whimsicott), - ICON(Whimsicott, 1), + .palette = gMonPalette_Whimsicott, + .shinyPalette = gMonShinyPalette_Whimsicott, + .iconSprite = gMonIcon_Whimsicott, + .iconPalIndex = 1, FOOTPRINT(Whimsicott) - LEARNSETS(Whimsicott), + .levelUpLearnset = sWhimsicottLevelUpLearnset, + .teachableLearnset = sWhimsicottTeachableLearnset, }, #endif //P_FAMILY_COTTONEE @@ -2827,42 +3138,29 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Petilil, 32, 48), + .frontPic = gMonFrontPic_Petilil, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Petilil, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, .enemyMonElevation = 7, - BACK_PIC(Petilil, 40, 56), + .backPic = gMonBackPic_Petilil, + .backPicSize = MON_COORDS_SIZE(40, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Petilil), - ICON(Petilil, 1), + .palette = gMonPalette_Petilil, + .shinyPalette = gMonShinyPalette_Petilil, + .iconSprite = gMonIcon_Petilil, + .iconPalIndex = 1, FOOTPRINT(Petilil) - LEARNSETS(Petilil), + .levelUpLearnset = sPetililLevelUpLearnset, + .teachableLearnset = sPetililTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_LILLIGANT}, {EVO_NONE, 0, SPECIES_LILLIGANT_HISUIAN}), }, -#define LILLIGANT_MISC_INFO \ - .catchRate = 75, \ - .expYield = 168, \ - .itemRare = ITEM_ABSORB_BULB, \ - .genderRatio = MON_FEMALE, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS), \ - .bodyColor = BODY_COLOR_GREEN, \ - .noFlip = TRUE, \ - .speciesName = _("Lilligant"), \ - .cryId = CRY_LILLIGANT, \ - .natDexNum = NATIONAL_DEX_LILLIGANT, \ - FOOTPRINT(Lilligant) \ - .formSpeciesIdTable = sLilligantFormSpeciesIdTable - [SPECIES_LILLIGANT] = { - LILLIGANT_MISC_INFO, .baseHP = 70, .baseAttack = 60, .baseDefense = 75, @@ -2870,8 +3168,21 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 110, .baseSpDefense = 75, .types = MON_TYPES(TYPE_GRASS), + .catchRate = 75, + .expYield = 168, .evYield_SpAttack = 2, + .itemRare = ITEM_ABSORB_BULB, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS), .abilities = { ABILITY_CHLOROPHYLL, ABILITY_OWN_TEMPO, ABILITY_LEAF_GUARD }, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .speciesName = _("Lilligant"), + .cryId = CRY_LILLIGANT, + .natDexNum = NATIONAL_DEX_LILLIGANT, .categoryName = _("Flowering"), .height = 11, .weight = 163, @@ -2884,22 +3195,28 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Lilligant, 56, 64), + .frontPic = gMonFrontPic_Lilligant, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Lilligant, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Lilligant, 64, 56), + .backPic = gMonBackPic_Lilligant, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Lilligant), - ICON(Lilligant, 1), - LEARNSETS(Lilligant), + .palette = gMonPalette_Lilligant, + .shinyPalette = gMonShinyPalette_Lilligant, + .iconSprite = gMonIcon_Lilligant, + .iconPalIndex = 1, + FOOTPRINT(Lilligant) + .levelUpLearnset = sLilligantLevelUpLearnset, + .teachableLearnset = sLilligantTeachableLearnset, + .formSpeciesIdTable = sLilligantFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_LILLIGANT_HISUIAN] = { - LILLIGANT_MISC_INFO, .baseHP = 70, .baseAttack = 105, .baseDefense = 75, @@ -2907,9 +3224,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 50, .baseSpDefense = 75, .types = MON_TYPES(TYPE_GRASS, TYPE_FIGHTING), + .catchRate = 75, + .expYield = 168, .evYield_Attack = 1, .evYield_Speed = 1, + .itemRare = ITEM_ABSORB_BULB, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS), .abilities = { ABILITY_CHLOROPHYLL, ABILITY_HUSTLE, ABILITY_LEAF_GUARD }, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .speciesName = _("Lilligant"), + .cryId = CRY_LILLIGANT, + .natDexNum = NATIONAL_DEX_LILLIGANT, .categoryName = _("Spinning"), .height = 12, .weight = 192, @@ -2922,194 +3252,302 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(LilligantHisuian, 56, 64), + .frontPic = gMonFrontPic_LilligantHisuian, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_LilligantHisuian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(LilligantHisuian, 56, 56), + .backPic = gMonBackPic_LilligantHisuian, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(LilligantHisuian), - ICON(LilligantHisuian, 1), - LEARNSETS(LilligantHisuian), + .palette = gMonPalette_LilligantHisuian, + .shinyPalette = gMonShinyPalette_LilligantHisuian, + .iconSprite = gMonIcon_LilligantHisuian, + .iconPalIndex = 1, + FOOTPRINT(Lilligant) .isHisuianForm = TRUE, + .levelUpLearnset = sLilligantHisuianLevelUpLearnset, + .teachableLearnset = sLilligantHisuianTeachableLearnset, + .formSpeciesIdTable = sLilligantFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_PETILIL #if P_FAMILY_BASCULIN -#define BASCULIN_MISC_INFO \ - .baseHP = 70, \ - .baseAttack = 92, \ - .baseDefense = 65, \ - .baseSpeed = 98, \ - .baseSpAttack = 80, \ - .baseSpDefense = 55, \ - .types = MON_TYPES(TYPE_WATER), \ - .catchRate = 190, \ - .expYield = 161, \ - .evYield_Speed = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 40, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), \ - .bodyColor = BODY_COLOR_GREEN, \ - .speciesName = _("Basculin"), \ - .cryId = CRY_BASCULIN, \ - .natDexNum = NATIONAL_DEX_BASCULIN, \ - .height = 10, \ - .weight = 180, \ - .pokemonScale = 316, \ - .pokemonOffset = 7, \ - .trainerScale = 257, \ - .trainerOffset = 0, \ - .enemyMonElevation = 6, \ - FOOTPRINT(Basculin) \ - .formSpeciesIdTable = sBasculinFormSpeciesIdTable - [SPECIES_BASCULIN_RED_STRIPED] = { - BASCULIN_MISC_INFO, + .baseHP = 70, + .baseAttack = 92, + .baseDefense = 65, + .baseSpeed = 98, + .baseSpAttack = 80, + .baseSpDefense = 55, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 190, + .expYield = 161, + .evYield_Speed = 2, .itemRare = ITEM_DEEP_SEA_TOOTH, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), .abilities = { ABILITY_RECKLESS, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Basculin"), + .cryId = CRY_BASCULIN, + .natDexNum = NATIONAL_DEX_BASCULIN, .categoryName = _("Hostile"), + .height = 10, + .weight = 180, .description = COMPOUND_STRING( "It used to be a common food source. The\n" "meat of red Basculin is on the fatty side\n" "and it's more popular with the youth.\n" "Its temperament is vicious and aggressive."), - FRONT_PIC(BasculinRedStriped, 56, 40), + .pokemonScale = 316, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + .frontPic = gMonFrontPic_BasculinRedStriped, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Basculin, .frontAnimId = ANIM_TIP_MOVE_FORWARD, - BACK_PIC(BasculinRedStriped, 64, 48), + .enemyMonElevation = 6, + .backPic = gMonBackPic_BasculinRedStriped, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 16, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(BasculinRedStriped), - ICON(BasculinRedStriped, 1), - LEARNSETS(Basculin), + .palette = gMonPalette_BasculinRedStriped, + .shinyPalette = gMonShinyPalette_BasculinRedStriped, + .iconSprite = gMonIcon_BasculinRedStriped, + .iconPalIndex = 1, + FOOTPRINT(Basculin) + .levelUpLearnset = sBasculinLevelUpLearnset, + .teachableLearnset = sBasculinTeachableLearnset, + .formSpeciesIdTable = sBasculinFormSpeciesIdTable, }, [SPECIES_BASCULIN_BLUE_STRIPED] = { - BASCULIN_MISC_INFO, + .baseHP = 70, + .baseAttack = 92, + .baseDefense = 65, + .baseSpeed = 98, + .baseSpAttack = 80, + .baseSpDefense = 55, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 190, + .expYield = 161, + .evYield_Speed = 2, .itemRare = ITEM_DEEP_SEA_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), .abilities = { ABILITY_ROCK_HEAD, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Basculin"), + .cryId = CRY_BASCULIN, + .natDexNum = NATIONAL_DEX_BASCULIN, .categoryName = _("Hostile"), + .height = 10, + .weight = 180, .description = COMPOUND_STRING( "They form schools with others of the same\n" "color. The greatest foe of a school of blue\n" "Basculin is a school of red Basculin.\n" "Its flavor is light and inoffensive."), - FRONT_PIC(BasculinBlueStriped, 56, 40), + .pokemonScale = 316, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + .frontPic = gMonFrontPic_BasculinBlueStriped, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Basculin, .frontAnimId = ANIM_TIP_MOVE_FORWARD, - BACK_PIC(BasculinBlueStriped, 64, 48), + .enemyMonElevation = 6, + .backPic = gMonBackPic_BasculinBlueStriped, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 16, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(BasculinBlueStriped), - ICON(BasculinBlueStriped, 0), - LEARNSETS(Basculin), + .palette = gMonPalette_BasculinBlueStriped, + .shinyPalette = gMonShinyPalette_BasculinBlueStriped, + .iconSprite = gMonIcon_BasculinBlueStriped, + .iconPalIndex = 0, + FOOTPRINT(Basculin) + .levelUpLearnset = sBasculinLevelUpLearnset, + .teachableLearnset = sBasculinTeachableLearnset, + .formSpeciesIdTable = sBasculinFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_BASCULIN_WHITE_STRIPED] = { - BASCULIN_MISC_INFO, + .baseHP = 70, + .baseAttack = 92, + .baseDefense = 65, + .baseSpeed = 98, + .baseSpAttack = 80, + .baseSpDefense = 55, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 190, + .expYield = 161, + .evYield_Speed = 2, .itemRare = ITEM_DEEP_SEA_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), .abilities = { ABILITY_RATTLED, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Basculin"), + .cryId = CRY_BASCULIN, + .natDexNum = NATIONAL_DEX_BASCULIN, .categoryName = _("Mellow"), + .height = 10, + .weight = 180, .description = COMPOUND_STRING( "While this ancient form of Basculin shares\n" "a vast array of qualities with other forms,\n" "it differs in several respects, including\n" "demeanor, being much gentler than others."), - FRONT_PIC(BasculinWhiteStriped, 48, 40), + .pokemonScale = 316, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + .frontPic = gMonFrontPic_BasculinWhiteStriped, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Basculin, .frontAnimId = ANIM_TIP_MOVE_FORWARD, - BACK_PIC(BasculinWhiteStriped, 64, 40), + .enemyMonElevation = 6, + .backPic = gMonBackPic_BasculinWhiteStriped, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 16, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(BasculinWhiteStriped), - ICON(BasculinWhiteStriped, 0), - LEARNSETS(BasculinWhiteStriped), + .palette = gMonPalette_BasculinWhiteStriped, + .shinyPalette = gMonShinyPalette_BasculinWhiteStriped, + .iconSprite = gMonIcon_BasculinWhiteStriped, + .iconPalIndex = 0, + FOOTPRINT(Basculin) + .levelUpLearnset = sBasculinWhiteStripedLevelUpLearnset, + .teachableLearnset = sBasculinWhiteStripedTeachableLearnset, + .formSpeciesIdTable = sBasculinFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL_RECOIL_DAMAGE_MALE, 294, SPECIES_BASCULEGION_MALE}, {EVO_LEVEL_RECOIL_DAMAGE_FEMALE, 294, SPECIES_BASCULEGION_FEMALE}), }, -#define BASCULEGION_MISC_INFO \ - .types = MON_TYPES(TYPE_WATER, TYPE_GHOST), \ - .catchRate = 45, \ - .expYield = 265, \ - .evYield_HP = 3, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), \ - .abilities = { ABILITY_SWIFT_SWIM, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER }, \ - .bodyColor = BODY_COLOR_GREEN, \ - .speciesName = _("Bsculegion"), \ - .cryId = CRY_BASCULEGION, \ - .natDexNum = NATIONAL_DEX_BASCULEGION, \ - .categoryName = _("Big Fish"), \ - .height = 30, \ - .weight = 1100, \ - .pokemonScale = 275, \ - .pokemonOffset = 7, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .frontAnimFrames = sAnims_Basculegion, \ - .frontPicYOffset = 0, \ - .enemyMonElevation = 5, \ - .backPicYOffset = 8, \ - LEARNSETS(Basculegion), \ - .formSpeciesIdTable = sBasculegionFormSpeciesIdTable - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //.backAnimId = BACK_ANIM_NONE, - //FOOTPRINT(Basculegion) - [SPECIES_BASCULEGION_MALE] = { - BASCULEGION_MISC_INFO, .baseHP = 120, .baseAttack = 112, .baseDefense = 65, .baseSpeed = 78, .baseSpAttack = 80, .baseSpDefense = 75, + .types = MON_TYPES(TYPE_WATER, TYPE_GHOST), + .catchRate = 45, + .expYield = 265, + .evYield_HP = 3, .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Bsculegion"), + .cryId = CRY_BASCULEGION, + .natDexNum = NATIONAL_DEX_BASCULEGION, + .categoryName = _("Big Fish"), + .height = 30, + .weight = 1100, .description = COMPOUND_STRING( "Clads itself in the souls of comrades that\n" "perished before fulfilling their goals of\n" "journeying upstream. No other species in\n" "all Hisui's rivers is Basculegion's equal."), - FRONT_PIC(BasculegionMale, 64, 64), - BACK_PIC(BasculegionMale, 64, 64), - PALETTES(BasculegionMale), - ICON(BasculegionMale, 1), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_BasculegionMale, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Basculegion, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 5, + .backPic = gMonBackPic_BasculegionMale, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_BasculegionMale, + .shinyPalette = gMonShinyPalette_BasculegionMale, + .iconSprite = gMonIcon_BasculegionMale, + .iconPalIndex = 1, + //FOOTPRINT(Basculegion), + .levelUpLearnset = sBasculegionLevelUpLearnset, + .teachableLearnset = sBasculegionTeachableLearnset, + .formSpeciesIdTable = sBasculegionFormSpeciesIdTable, }, [SPECIES_BASCULEGION_FEMALE] = { - BASCULEGION_MISC_INFO, .baseHP = 120, .baseAttack = 92, .baseDefense = 65, .baseSpeed = 78, .baseSpAttack = 100, .baseSpDefense = 75, + .types = MON_TYPES(TYPE_WATER, TYPE_GHOST), + .catchRate = 45, + .expYield = 265, + .evYield_HP = 3, .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Bsculegion"), + .cryId = CRY_BASCULEGION, + .natDexNum = NATIONAL_DEX_BASCULEGION, + .categoryName = _("Big Fish"), + .height = 30, + .weight = 1100, .description = COMPOUND_STRING( "The souls of its comrades cloak its\n" "body and propel it effortlessly\n" "through even raging rapids."), - FRONT_PIC(BasculegionFemale, 64, 64), - BACK_PIC(BasculegionFemale, 64, 64), - PALETTES(BasculegionFemale), - ICON(BasculegionFemale, 0), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_BasculegionFemale, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Basculegion, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 5, + .backPic = gMonBackPic_BasculegionFemale, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_BasculegionFemale, + .shinyPalette = gMonShinyPalette_BasculegionFemale, + .iconSprite = gMonIcon_BasculegionFemale, + .iconPalIndex = 0, + //FOOTPRINT(Basculegion), + .levelUpLearnset = sBasculegionLevelUpLearnset, + .teachableLearnset = sBasculegionTeachableLearnset, + .formSpeciesIdTable = sBasculegionFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_BASCULIN @@ -3150,17 +3588,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Sandile, 48, 32), + .frontPic = gMonFrontPic_Sandile, + .frontPicSize = MON_COORDS_SIZE(48, 32), .frontPicYOffset = 18, .frontAnimFrames = sAnims_Sandile, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Sandile, 64, 32), + .backPic = gMonBackPic_Sandile, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 18, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Sandile), - ICON(Sandile, 1), + .palette = gMonPalette_Sandile, + .shinyPalette = gMonShinyPalette_Sandile, + .iconSprite = gMonIcon_Sandile, + .iconPalIndex = 1, FOOTPRINT(Sandile) - LEARNSETS(Sandile), + .levelUpLearnset = sSandileLevelUpLearnset, + .teachableLearnset = sSandileTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 29, SPECIES_KROKOROK}), }, @@ -3199,17 +3642,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Krokorok, 64, 56), + .frontPic = gMonFrontPic_Krokorok, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Krokorok, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Krokorok, 56, 64), + .backPic = gMonBackPic_Krokorok, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Krokorok), - ICON(Krokorok, 1), + .palette = gMonPalette_Krokorok, + .shinyPalette = gMonShinyPalette_Krokorok, + .iconSprite = gMonIcon_Krokorok, + .iconPalIndex = 1, FOOTPRINT(Krokorok) - LEARNSETS(Krokorok), + .levelUpLearnset = sKrokorokLevelUpLearnset, + .teachableLearnset = sKrokorokTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_KROOKODILE}), }, @@ -3254,49 +3702,49 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Krookodile, 64, 64), + .frontPic = gMonFrontPic_Krookodile, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Krookodile, .frontAnimId = ANIM_SWING_CONCAVE_FAST_SHORT, - BACK_PIC(Krookodile, 64, 56), + .backPic = gMonBackPic_Krookodile, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Krookodile), - ICON(Krookodile, 0), + .palette = gMonPalette_Krookodile, + .shinyPalette = gMonShinyPalette_Krookodile, + .iconSprite = gMonIcon_Krookodile, + .iconPalIndex = 0, FOOTPRINT(Krookodile) - LEARNSETS(Krookodile), + .levelUpLearnset = sKrookodileLevelUpLearnset, + .teachableLearnset = sKrookodileTeachableLearnset, }, #endif //P_FAMILY_SANDILE #if P_FAMILY_DARUMAKA -#define DARUMAKA_MISC_INFO \ - .baseHP = 70, \ - .baseAttack = 90, \ - .baseDefense = 45, \ - .baseSpeed = 50, \ - .baseSpAttack = 15, \ - .baseSpDefense = 45, \ - .catchRate = 120, \ - .expYield = 63, \ - .evYield_Attack = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .abilities = { ABILITY_HUSTLE, ABILITY_NONE, ABILITY_INNER_FOCUS }, \ - .speciesName = _("Darumaka"), \ - .cryId = CRY_DARUMAKA, \ - .natDexNum = NATIONAL_DEX_DARUMAKA, \ - .categoryName = _("Zen Charm"), \ - FOOTPRINT(Darumaka) \ - .formSpeciesIdTable = sDarumakaFormSpeciesIdTable - [SPECIES_DARUMAKA] = { - DARUMAKA_MISC_INFO, + .baseHP = 70, + .baseAttack = 90, + .baseDefense = 45, + .baseSpeed = 50, + .baseSpAttack = 15, + .baseSpDefense = 45, .types = MON_TYPES(TYPE_FIRE), + .catchRate = 120, + .expYield = 63, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_HUSTLE, ABILITY_NONE, ABILITY_INNER_FOCUS }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Darumaka"), + .cryId = CRY_DARUMAKA, + .natDexNum = NATIONAL_DEX_DARUMAKA, + .categoryName = _("Zen Charm"), .height = 6, .weight = 375, .description = COMPOUND_STRING( @@ -3308,87 +3756,82 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Darumaka, 40, 40), + .frontPic = gMonFrontPic_Darumaka, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Darumaka, .frontAnimId = ANIM_SWING_CONCAVE, - BACK_PIC(Darumaka, 56, 48), + .backPic = gMonBackPic_Darumaka, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 12, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Darumaka), - ICON(Darumaka, 0), - LEARNSETS(Darumaka), + .palette = gMonPalette_Darumaka, + .shinyPalette = gMonShinyPalette_Darumaka, + .iconSprite = gMonIcon_Darumaka, + .iconPalIndex = 0, + FOOTPRINT(Darumaka) + .levelUpLearnset = sDarumakaLevelUpLearnset, + .teachableLearnset = sDarumakaTeachableLearnset, + .formSpeciesIdTable = sDarumakaFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_DARMANITAN_STANDARD_MODE}), }, -#define DARMANITAN_MISC_INFO \ - .catchRate = 60, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .speciesName = _("Darmanitan"), \ - .cryId = CRY_DARMANITAN, \ - .natDexNum = NATIONAL_DEX_DARMANITAN, \ - FOOTPRINT(Darmanitan) \ - .formSpeciesIdTable = sDarmanitanFormSpeciesIdTable - -#define DARMANITAN_STANDARD_MISC_INFO \ - .baseHP = 105, \ - .baseAttack = 140, \ - .baseDefense = 55, \ - .baseSpeed = 95, \ - .baseSpAttack = 30, \ - .baseSpDefense = 55, \ - .expYield = 168, \ - .evYield_Attack = 2, \ - DARMANITAN_MISC_INFO - -#define DARMANITAN_ZEN_MODE_MISC_INFO \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_7) ? 189 : 168,\ - .evYield_SpAttack = 2, \ - .categoryName = _("Blazing"), \ - DARMANITAN_MISC_INFO - -#define DARMANITAN_UNOVAN_MISC_INFO \ - .abilities = { ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_ZEN_MODE },\ - .height = 13, \ - .weight = 929, \ - .pokemonScale = 272, \ - .pokemonOffset = 3, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - LEARNSETS(Darmanitan), \ - .formChangeTable = sDarmanitanFormChangeTable - [SPECIES_DARMANITAN_STANDARD_MODE] = { - DARMANITAN_STANDARD_MISC_INFO, - DARMANITAN_UNOVAN_MISC_INFO, + .baseHP = 105, + .baseAttack = 140, + .baseDefense = 55, + .baseSpeed = 95, + .baseSpAttack = 30, + .baseSpDefense = 55, .types = MON_TYPES(TYPE_FIRE), + .catchRate = 60, + .expYield = 168, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_ZEN_MODE }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Darmanitan"), + .cryId = CRY_DARMANITAN, + .natDexNum = NATIONAL_DEX_DARMANITAN, .categoryName = _("Blazing"), + .height = 13, + .weight = 929, .description = COMPOUND_STRING( "When one is injured in a fierce battle,\n" "it transforms into a stone statue.\n" "Then it meditates and sharpens its\n" "mind and fights on mentally."), - FRONT_PIC(DarmanitanStandardMode, 56, 64), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_DarmanitanStandardMode, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_DarmanitanStandardMode, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, - BACK_PIC(DarmanitanStandardMode, 64, 64), + .backPic = gMonBackPic_DarmanitanStandardMode, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(DarmanitanStandardMode), - ICON(DarmanitanStandardMode, 0), + .palette = gMonPalette_DarmanitanStandardMode, + .shinyPalette = gMonShinyPalette_DarmanitanStandardMode, + .iconSprite = gMonIcon_DarmanitanStandardMode, + .iconPalIndex = 0, + FOOTPRINT(Darmanitan) + .levelUpLearnset = sDarmanitanLevelUpLearnset, + .teachableLearnset = sDarmanitanTeachableLearnset, + .formSpeciesIdTable = sDarmanitanFormSpeciesIdTable, + .formChangeTable = sDarmanitanFormChangeTable, }, [SPECIES_DARMANITAN_ZEN_MODE] = { - DARMANITAN_ZEN_MODE_MISC_INFO, - DARMANITAN_UNOVAN_MISC_INFO, .baseHP = 105, .baseAttack = 30, .baseDefense = 105, @@ -3396,28 +3839,74 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 140, .baseSpDefense = 105, .types = MON_TYPES(TYPE_FIRE, TYPE_PSYCHIC), + .catchRate = 60, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_7) ? 189 : 168, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_ZEN_MODE }, .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Darmanitan"), + .cryId = CRY_DARMANITAN, + .natDexNum = NATIONAL_DEX_DARMANITAN, + .categoryName = _("Blazing"), + .height = 13, + .weight = 929, .description = COMPOUND_STRING( "When wounded, it stops moving. It\n" "goes as still as stone to meditate,\n" "sharpening its mind and spirit."), - FRONT_PIC(DarmanitanZenMode, 40, 40), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_DarmanitanZenMode, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_DarmanitanZenMode, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(DarmanitanZenMode, 56, 48), + .backPic = gMonBackPic_DarmanitanZenMode, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(DarmanitanZenMode), - ICON(DarmanitanZenMode, 0), + .palette = gMonPalette_DarmanitanZenMode, + .shinyPalette = gMonShinyPalette_DarmanitanZenMode, + .iconSprite = gMonIcon_DarmanitanZenMode, + .iconPalIndex = 0, + FOOTPRINT(Darmanitan) + .levelUpLearnset = sDarmanitanLevelUpLearnset, + .teachableLearnset = sDarmanitanTeachableLearnset, + .formSpeciesIdTable = sDarmanitanFormSpeciesIdTable, + .formChangeTable = sDarmanitanFormChangeTable, }, #if P_GALARIAN_FORMS [SPECIES_DARUMAKA_GALARIAN] = { - DARUMAKA_MISC_INFO, + .baseHP = 70, + .baseAttack = 90, + .baseDefense = 45, + .baseSpeed = 50, + .baseSpAttack = 15, + .baseSpDefense = 45, .types = MON_TYPES(TYPE_ICE), + .catchRate = 120, + .expYield = 63, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_HUSTLE, ABILITY_NONE, ABILITY_INNER_FOCUS }, .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Darumaka"), + .cryId = CRY_DARUMAKA, + .natDexNum = NATIONAL_DEX_DARUMAKA, + .categoryName = _("Zen Charm"), .height = 7, .weight = 400, .description = COMPOUND_STRING( @@ -3429,59 +3918,84 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(DarumakaGalarian, 40, 40), + .frontPic = gMonFrontPic_DarumakaGalarian, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_DarumakaGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(DarumakaGalarian, 56, 48), + .backPic = gMonBackPic_DarumakaGalarian, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(DarumakaGalarian), - ICON(DarumakaGalarian, 0), - LEARNSETS(DarumakaGalarian), + .palette = gMonPalette_DarumakaGalarian, + .shinyPalette = gMonShinyPalette_DarumakaGalarian, + .iconSprite = gMonIcon_DarumakaGalarian, + .iconPalIndex = 0, + FOOTPRINT(Darumaka) .isGalarianForm = TRUE, + .levelUpLearnset = sDarumakaGalarianLevelUpLearnset, + .teachableLearnset = sDarumakaGalarianTeachableLearnset, + .formSpeciesIdTable = sDarumakaFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE}), }, -#define DARMANITAN_GALARIAN_MISC_INFO \ - .abilities = { ABILITY_GORILLA_TACTICS, ABILITY_NONE, ABILITY_ZEN_MODE },\ - .bodyColor = BODY_COLOR_WHITE, \ - .height = 17, \ - .weight = 1200, \ - .pokemonScale = 272, \ - .pokemonOffset = 3, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - LEARNSETS(DarmanitanGalarian), \ - .formChangeTable = sDarmanitanGalarianFormChangeTable, \ - .isGalarianForm = TRUE - [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = { - DARMANITAN_GALARIAN_MISC_INFO, - DARMANITAN_STANDARD_MISC_INFO, + .baseHP = 105, + .baseAttack = 140, + .baseDefense = 55, + .baseSpeed = 95, + .baseSpAttack = 30, + .baseSpDefense = 55, .types = MON_TYPES(TYPE_ICE), + .catchRate = 60, + .expYield = 168, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_GORILLA_TACTICS, ABILITY_NONE, ABILITY_ZEN_MODE }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Darmanitan"), + .cryId = CRY_DARMANITAN, + .natDexNum = NATIONAL_DEX_DARMANITAN, .categoryName = _("Zen Charm"), + .height = 17, + .weight = 1200, .description = COMPOUND_STRING( "On days when blizzards blow\n" "through, it comes down to where people\n" "live. It stashes food in the snowball on\n" "its head, taking it home for later."), - FRONT_PIC(DarmanitanGalarianStandardMode, 56, 64), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_DarmanitanGalarianStandardMode, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_DarmanitanGalarianStandardMode, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(DarmanitanGalarianStandardMode, 56, 64), + .backPic = gMonBackPic_DarmanitanGalarianStandardMode, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(DarmanitanGalarianStandardMode), - ICON(DarmanitanGalarianStandardMode, 0), + .palette = gMonPalette_DarmanitanGalarianStandardMode, + .shinyPalette = gMonShinyPalette_DarmanitanGalarianStandardMode, + .iconSprite = gMonIcon_DarmanitanGalarianStandardMode, + .iconPalIndex = 0, + FOOTPRINT(Darmanitan) + .isGalarianForm = TRUE, + .levelUpLearnset = sDarmanitanGalarianLevelUpLearnset, + .teachableLearnset = sDarmanitanGalarianTeachableLearnset, + .formSpeciesIdTable = sDarmanitanFormSpeciesIdTable, + .formChangeTable = sDarmanitanGalarianFormChangeTable, }, [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = { - DARMANITAN_GALARIAN_MISC_INFO, - DARMANITAN_ZEN_MODE_MISC_INFO, .baseHP = 105, .baseAttack = 160, .baseDefense = 55, @@ -3489,20 +4003,50 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 30, .baseSpDefense = 55, .types = MON_TYPES(TYPE_ICE, TYPE_FIRE), + .catchRate = 60, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_7) ? 189 : 168, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_GORILLA_TACTICS, ABILITY_NONE, ABILITY_ZEN_MODE }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Darmanitan"), + .cryId = CRY_DARMANITAN, + .natDexNum = NATIONAL_DEX_DARMANITAN, + .categoryName = _("Blazing"), + .height = 17, + .weight = 1200, .description = COMPOUND_STRING( "Darmanitan takes this form when\n" "enraged. It won't stop spewing flames\n" "until its rage has settled, even if\n" "its body starts to melt."), - FRONT_PIC(DarmanitanGalarianZenMode, 48, 64), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_DarmanitanGalarianZenMode, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_DarmanitanGalarianZenMode, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(DarmanitanGalarianZenMode, 64, 64), + .backPic = gMonBackPic_DarmanitanGalarianZenMode, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(DarmanitanGalarianZenMode), - ICON(DarmanitanGalarianZenMode, 0), + .palette = gMonPalette_DarmanitanGalarianZenMode, + .shinyPalette = gMonShinyPalette_DarmanitanGalarianZenMode, + .iconSprite = gMonIcon_DarmanitanGalarianZenMode, + .iconPalIndex = 0, + FOOTPRINT(Darmanitan) + .isGalarianForm = TRUE, + .levelUpLearnset = sDarmanitanGalarianLevelUpLearnset, + .teachableLearnset = sDarmanitanGalarianTeachableLearnset, + .formSpeciesIdTable = sDarmanitanFormSpeciesIdTable, + .formChangeTable = sDarmanitanGalarianFormChangeTable, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_DARUMAKA @@ -3543,17 +4087,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 6, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Maractus, 56, 64), + .frontPic = gMonFrontPic_Maractus, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Maractus, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(Maractus, 64, 64), + .backPic = gMonBackPic_Maractus, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Maractus), - ICON(Maractus, 1), + .palette = gMonPalette_Maractus, + .shinyPalette = gMonShinyPalette_Maractus, + .iconSprite = gMonIcon_Maractus, + .iconPalIndex = 1, FOOTPRINT(Maractus) - LEARNSETS(Maractus), + .levelUpLearnset = sMaractusLevelUpLearnset, + .teachableLearnset = sMaractusTeachableLearnset, }, #endif //P_FAMILY_MARACTUS @@ -3593,17 +4142,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Dwebble, 40, 40), + .frontPic = gMonFrontPic_Dwebble, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Dwebble, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Dwebble, 56, 32), + .backPic = gMonBackPic_Dwebble, + .backPicSize = MON_COORDS_SIZE(56, 32), .backPicYOffset = 17, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Dwebble), - ICON(Dwebble, 0), + .palette = gMonPalette_Dwebble, + .shinyPalette = gMonShinyPalette_Dwebble, + .iconSprite = gMonIcon_Dwebble, + .iconPalIndex = 0, FOOTPRINT(Dwebble) - LEARNSETS(Dwebble), + .levelUpLearnset = sDwebbleLevelUpLearnset, + .teachableLearnset = sDwebbleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_CRUSTLE}), }, @@ -3642,17 +4196,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 262, .trainerOffset = 0, - FRONT_PIC(Crustle, 64, 64), + .frontPic = gMonFrontPic_Crustle, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Crustle, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(Crustle, 64, 56), + .backPic = gMonBackPic_Crustle, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Crustle), - ICON(Crustle, 2), + .palette = gMonPalette_Crustle, + .shinyPalette = gMonShinyPalette_Crustle, + .iconSprite = gMonIcon_Crustle, + .iconPalIndex = 2, FOOTPRINT(Crustle) - LEARNSETS(Crustle), + .levelUpLearnset = sCrustleLevelUpLearnset, + .teachableLearnset = sCrustleTeachableLearnset, }, #endif //P_FAMILY_DWEBBLE @@ -3692,17 +4251,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Scraggy, 40, 48), + .frontPic = gMonFrontPic_Scraggy, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Scraggy, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Scraggy, 48, 56), + .backPic = gMonBackPic_Scraggy, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Scraggy), - ICON(Scraggy, 2), + .palette = gMonPalette_Scraggy, + .shinyPalette = gMonShinyPalette_Scraggy, + .iconSprite = gMonIcon_Scraggy, + .iconPalIndex = 2, FOOTPRINT(Scraggy) - LEARNSETS(Scraggy), + .levelUpLearnset = sScraggyLevelUpLearnset, + .teachableLearnset = sScraggyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_SCRAFTY}), }, @@ -3742,17 +4306,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Scrafty, 48, 56), + .frontPic = gMonFrontPic_Scrafty, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Scrafty, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Scrafty, 48, 64), + .backPic = gMonBackPic_Scrafty, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 5, .backAnimId = BACK_ANIM_GROW, - PALETTES(Scrafty), - ICON(Scrafty, 0), + .palette = gMonPalette_Scrafty, + .shinyPalette = gMonShinyPalette_Scrafty, + .iconSprite = gMonIcon_Scrafty, + .iconPalIndex = 0, FOOTPRINT(Scrafty) - LEARNSETS(Scrafty), + .levelUpLearnset = sScraftyLevelUpLearnset, + .teachableLearnset = sScraftyTeachableLearnset, }, #endif //P_FAMILY_SCRAGGY @@ -3791,48 +4360,29 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 262, .trainerOffset = 0, - FRONT_PIC(Sigilyph, 64, 64), + .frontPic = gMonFrontPic_Sigilyph, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Sigilyph, .frontAnimId = ANIM_FIGURE_8, .enemyMonElevation = 7, - BACK_PIC(Sigilyph, 64, 64), + .backPic = gMonBackPic_Sigilyph, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Sigilyph), - ICON(Sigilyph, 0), + .palette = gMonPalette_Sigilyph, + .shinyPalette = gMonShinyPalette_Sigilyph, + .iconSprite = gMonIcon_Sigilyph, + .iconPalIndex = 0, FOOTPRINT(Sigilyph) - LEARNSETS(Sigilyph), + .levelUpLearnset = sSigilyphLevelUpLearnset, + .teachableLearnset = sSigilyphTeachableLearnset, }, #endif //P_FAMILY_SIGILYPH #if P_FAMILY_YAMASK -#define YAMASK_MISC_INFO \ - .catchRate = 190, \ - .expYield = 61, \ - .evYield_Defense = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS),\ - .bodyColor = BODY_COLOR_BLACK, \ - .speciesName = _("Yamask"), \ - .cryId = CRY_YAMASK, \ - .natDexNum = NATIONAL_DEX_YAMASK, \ - .categoryName = _("Spirit"), \ - .height = 5, \ - .weight = 15, \ - .pokemonScale = 432, \ - .pokemonOffset = 13, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Yamask) \ - .formSpeciesIdTable = sYamaskFormSpeciesIdTable - [SPECIES_YAMASK] = { - YAMASK_MISC_INFO, .baseHP = 38, .baseAttack = 30, .baseDefense = 85, @@ -3840,24 +4390,50 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 55, .baseSpDefense = 65, .types = MON_TYPES(TYPE_GHOST), + .catchRate = 190, + .expYield = 61, + .evYield_Defense = 1, .itemRare = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), .abilities = { ABILITY_MUMMY, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Yamask"), + .cryId = CRY_YAMASK, + .natDexNum = NATIONAL_DEX_YAMASK, + .categoryName = _("Spirit"), + .height = 5, + .weight = 15, .description = COMPOUND_STRING( "These Pokémon arose from the spirits\n" "of people interred in graves in past ages.\n" "Each of them carries a mask that used\n" "to be its face when it was human."), - FRONT_PIC(Yamask, 48, 40), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Yamask, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Yamask, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 10, - BACK_PIC(Yamask, 40, 40), + .backPic = gMonBackPic_Yamask, + .backPicSize = MON_COORDS_SIZE(40, 40), .backPicYOffset = 14, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Yamask), - ICON(Yamask, 0), - LEARNSETS(Yamask), + .palette = gMonPalette_Yamask, + .shinyPalette = gMonShinyPalette_Yamask, + .iconSprite = gMonIcon_Yamask, + .iconPalIndex = 0, + FOOTPRINT(Yamask) + .levelUpLearnset = sYamaskLevelUpLearnset, + .teachableLearnset = sYamaskTeachableLearnset, + .formSpeciesIdTable = sYamaskFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_COFAGRIGUS}), }, @@ -3896,23 +4472,27 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 0, .trainerScale = 290, .trainerOffset = 1, - FRONT_PIC(Cofagrigus, 64, 64), + .frontPic = gMonFrontPic_Cofagrigus, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Cofagrigus, .frontAnimId = ANIM_GLOW_BLACK, - BACK_PIC(Cofagrigus, 56, 56), + .backPic = gMonBackPic_Cofagrigus, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Cofagrigus), - ICON(Cofagrigus, 0), + .palette = gMonPalette_Cofagrigus, + .shinyPalette = gMonShinyPalette_Cofagrigus, + .iconSprite = gMonIcon_Cofagrigus, + .iconPalIndex = 0, FOOTPRINT(Cofagrigus) - LEARNSETS(Cofagrigus), + .levelUpLearnset = sCofagrigusLevelUpLearnset, + .teachableLearnset = sCofagrigusTeachableLearnset, }, #if P_GALARIAN_FORMS [SPECIES_YAMASK_GALARIAN] = { - YAMASK_MISC_INFO, .baseHP = 38, .baseAttack = 55, .baseDefense = 85, @@ -3920,24 +4500,50 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 30, .baseSpDefense = 65, .types = MON_TYPES(TYPE_GROUND, TYPE_GHOST), + .catchRate = 190, + .expYield = 61, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), .abilities = { ABILITY_WANDERING_SPIRIT, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Yamask"), + .cryId = CRY_YAMASK, + .natDexNum = NATIONAL_DEX_YAMASK, + .categoryName = _("Spirit"), + .height = 5, + .weight = 15, .description = COMPOUND_STRING( "A clay slab with cursed engravings\n" "took possession of a Yamask. The\n" "slab is said to be absorbing the\n" "Yamask's dark power."), - FRONT_PIC(YamaskGalarian, 48, 40), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_YamaskGalarian, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_YamaskGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 4, - BACK_PIC(YamaskGalarian, 40, 40), + .backPic = gMonBackPic_YamaskGalarian, + .backPicSize = MON_COORDS_SIZE(40, 40), .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, - PALETTES(YamaskGalarian), - ICON(YamaskGalarian, 2), - LEARNSETS(YamaskGalarian), + .palette = gMonPalette_YamaskGalarian, + .shinyPalette = gMonShinyPalette_YamaskGalarian, + .iconSprite = gMonIcon_YamaskGalarian, + .iconPalIndex = 2, + FOOTPRINT(Yamask) .isGalarianForm = TRUE, + .levelUpLearnset = sYamaskGalarianLevelUpLearnset, + .teachableLearnset = sYamaskGalarianTeachableLearnset, + .formSpeciesIdTable = sYamaskFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_SCRIPT_TRIGGER_DMG, 49, SPECIES_RUNERIGUS}), }, @@ -3974,18 +4580,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(Runerigus, 64, 64), + .frontPic = gMonFrontPic_Runerigus, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Runerigus, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 5, - BACK_PIC(Runerigus, 64, 48), + .backPic = gMonBackPic_Runerigus, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Runerigus), - ICON(Runerigus, 2), + .palette = gMonPalette_Runerigus, + .shinyPalette = gMonShinyPalette_Runerigus, + .iconSprite = gMonIcon_Runerigus, + .iconPalIndex = 2, FOOTPRINT(Runerigus) - LEARNSETS(Runerigus), + .levelUpLearnset = sRunerigusLevelUpLearnset, + .teachableLearnset = sRunerigusTeachableLearnset, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_YAMASK @@ -4025,17 +4636,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Tirtouga, 56, 40), + .frontPic = gMonFrontPic_Tirtouga, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Tirtouga, .frontAnimId = ANIM_RISING_WOBBLE, - BACK_PIC(Tirtouga, 64, 32), + .backPic = gMonBackPic_Tirtouga, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 16, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Tirtouga), - ICON(Tirtouga, 2), + .palette = gMonPalette_Tirtouga, + .shinyPalette = gMonShinyPalette_Tirtouga, + .iconSprite = gMonIcon_Tirtouga, + .iconPalIndex = 2, FOOTPRINT(Tirtouga) - LEARNSETS(Tirtouga), + .levelUpLearnset = sTirtougaLevelUpLearnset, + .teachableLearnset = sTirtougaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_CARRACOSTA}), }, @@ -4073,17 +4689,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Carracosta, 64, 56), + .frontPic = gMonFrontPic_Carracosta, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Carracosta, .frontAnimId = ANIM_H_SHAKE_SLOW, - BACK_PIC(Carracosta, 64, 40), + .backPic = gMonBackPic_Carracosta, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Carracosta), - ICON(Carracosta, 2), + .palette = gMonPalette_Carracosta, + .shinyPalette = gMonShinyPalette_Carracosta, + .iconSprite = gMonIcon_Carracosta, + .iconPalIndex = 2, FOOTPRINT(Carracosta) - LEARNSETS(Carracosta), + .levelUpLearnset = sCarracostaLevelUpLearnset, + .teachableLearnset = sCarracostaTeachableLearnset, }, #endif //P_FAMILY_TIRTOUGA @@ -4122,17 +4743,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Archen, 56, 40), + .frontPic = gMonFrontPic_Archen, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Archen, .frontAnimId = ANIM_V_JUMPS_SMALL, - BACK_PIC(Archen, 64, 32), + .backPic = gMonBackPic_Archen, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 16, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Archen), - ICON(Archen, 0), + .palette = gMonPalette_Archen, + .shinyPalette = gMonShinyPalette_Archen, + .iconSprite = gMonIcon_Archen, + .iconPalIndex = 0, FOOTPRINT(Archen) - LEARNSETS(Archen), + .levelUpLearnset = sArchenLevelUpLearnset, + .teachableLearnset = sArchenTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_ARCHEOPS}), }, @@ -4170,18 +4796,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 262, .trainerOffset = 0, - FRONT_PIC(Archeops, 64, 64), + .frontPic = gMonFrontPic_Archeops, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Archeops, .frontAnimId = ANIM_RISING_WOBBLE, .enemyMonElevation = 11, - BACK_PIC(Archeops, 64, 40), + .backPic = gMonBackPic_Archeops, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Archeops), - ICON(Archeops, 0), + .palette = gMonPalette_Archeops, + .shinyPalette = gMonShinyPalette_Archeops, + .iconSprite = gMonIcon_Archeops, + .iconPalIndex = 0, FOOTPRINT(Archeops) - LEARNSETS(Archeops), + .levelUpLearnset = sArcheopsLevelUpLearnset, + .teachableLearnset = sArcheopsTeachableLearnset, }, #endif //P_FAMILY_ARCHEN @@ -4221,53 +4852,51 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Trubbish, 48, 40), + .frontPic = gMonFrontPic_Trubbish, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Trubbish, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Trubbish, 48, 48), + .backPic = gMonBackPic_Trubbish, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 13, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Trubbish), - ICON(Trubbish, 1), + .palette = gMonPalette_Trubbish, + .shinyPalette = gMonShinyPalette_Trubbish, + .iconSprite = gMonIcon_Trubbish, + .iconPalIndex = 1, FOOTPRINT(Trubbish) - LEARNSETS(Trubbish), + .levelUpLearnset = sTrubbishLevelUpLearnset, + .teachableLearnset = sTrubbishTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_GARBODOR}), }, -#define GARBODOR_MISC_INFO \ - .baseHP = 80, \ - .baseAttack = 95, \ - .baseDefense = 82, \ - .baseSpeed = 75, \ - .baseSpAttack = 60, \ - .baseSpDefense = 82, \ - .types = MON_TYPES(TYPE_POISON), \ - .catchRate = 60, \ - .expYield = 166, \ - .evYield_Attack = 2, \ - .itemCommon = ITEM_SILK_SCARF, \ - .itemRare = ITEM_BLACK_SLUDGE, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), \ - .abilities = { ABILITY_STENCH, ABILITY_WEAK_ARMOR, ABILITY_AFTERMATH }, \ - .bodyColor = BODY_COLOR_GREEN, \ - .noFlip = TRUE, \ - .speciesName = _("Garbodor"), \ - .cryId = CRY_GARBODOR, \ - .natDexNum = NATIONAL_DEX_GARBODOR, \ - .categoryName = _("Trash Heap"), \ - FOOTPRINT(Garbodor) \ - LEARNSETS(Garbodor), \ - .formSpeciesIdTable = sGarbodorFormSpeciesIdTable, \ - .formChangeTable = sGarbodorFormChangeTable - [SPECIES_GARBODOR] = { - GARBODOR_MISC_INFO, + .baseHP = 80, + .baseAttack = 95, + .baseDefense = 82, + .baseSpeed = 75, + .baseSpAttack = 60, + .baseSpDefense = 82, + .types = MON_TYPES(TYPE_POISON), + .catchRate = 60, + .expYield = 166, + .evYield_Attack = 2, + .itemCommon = ITEM_SILK_SCARF, + .itemRare = ITEM_BLACK_SLUDGE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + .abilities = { ABILITY_STENCH, ABILITY_WEAK_ARMOR, ABILITY_AFTERMATH }, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .speciesName = _("Garbodor"), + .cryId = CRY_GARBODOR, + .natDexNum = NATIONAL_DEX_GARBODOR, + .categoryName = _("Trash Heap"), .height = 19, .weight = 1073, .description = COMPOUND_STRING( @@ -4279,21 +4908,53 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 1, .trainerScale = 326, .trainerOffset = 4, - FRONT_PIC(Garbodor, 64, 64), + .frontPic = gMonFrontPic_Garbodor, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Garbodor, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Garbodor, 64, 64), + .backPic = gMonBackPic_Garbodor, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, .backAnimId = BACK_ANIM_H_STRETCH, - PALETTES(Garbodor), - ICON(Garbodor, 1), + .palette = gMonPalette_Garbodor, + .shinyPalette = gMonShinyPalette_Garbodor, + .iconSprite = gMonIcon_Garbodor, + .iconPalIndex = 1, + FOOTPRINT(Garbodor) + .levelUpLearnset = sGarbodorLevelUpLearnset, + .teachableLearnset = sGarbodorTeachableLearnset, + .formSpeciesIdTable = sGarbodorFormSpeciesIdTable, + .formChangeTable = sGarbodorFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_GARBODOR_GIGANTAMAX] = { - GARBODOR_MISC_INFO, + .baseHP = 80, + .baseAttack = 95, + .baseDefense = 82, + .baseSpeed = 75, + .baseSpAttack = 60, + .baseSpDefense = 82, + .types = MON_TYPES(TYPE_POISON), + .catchRate = 60, + .expYield = 166, + .evYield_Attack = 2, + .itemCommon = ITEM_SILK_SCARF, + .itemRare = ITEM_BLACK_SLUDGE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + .abilities = { ABILITY_STENCH, ABILITY_WEAK_ARMOR, ABILITY_AFTERMATH }, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .speciesName = _("Garbodor"), + .cryId = CRY_GARBODOR, + .natDexNum = NATIONAL_DEX_GARBODOR, + .categoryName = _("Trash Heap"), .height = 210, .weight = 0, .description = COMPOUND_STRING( @@ -4305,69 +4966,32 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 1, .trainerScale = 326, .trainerOffset = 4, - FRONT_PIC(GarbodorGigantamax, 64, 64), + .frontPic = gMonFrontPic_GarbodorGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_GarbodorGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(GarbodorGigantamax, 64, 64), + .backPic = gMonBackPic_GarbodorGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(GarbodorGigantamax), - ICON(GarbodorGigantamax, 0), + .palette = gMonPalette_GarbodorGigantamax, + .shinyPalette = gMonShinyPalette_GarbodorGigantamax, + .iconSprite = gMonIcon_GarbodorGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Garbodor) .isGigantamax = TRUE, + .levelUpLearnset = sGarbodorLevelUpLearnset, + .teachableLearnset = sGarbodorTeachableLearnset, + .formSpeciesIdTable = sGarbodorFormSpeciesIdTable, + .formChangeTable = sGarbodorFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_TRUBBISH #if P_FAMILY_ZORUA -#define ZORUA_MISC_INFO \ - .catchRate = 75, \ - .expYield = 66, \ - .evYield_SpAttack = 1, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .abilities = { ABILITY_ILLUSION, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_GRAY, \ - .speciesName = _("Zorua"), \ - .cryId = CRY_ZORUA, \ - .natDexNum = NATIONAL_DEX_ZORUA, \ - .height = 7, \ - .weight = 125, \ - .pokemonScale = 365, \ - .pokemonOffset = 12, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Zorua) \ - .formSpeciesIdTable = sZoruaFormSpeciesIdTable - -#define ZOROARK_MISC_INFO \ - .catchRate = 45, \ - .expYield = 179, \ - .evYield_SpAttack = 2, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .abilities = { ABILITY_ILLUSION, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_GRAY, \ - .speciesName = _("Zoroark"), \ - .cryId = CRY_ZOROARK, \ - .natDexNum = NATIONAL_DEX_ZOROARK, \ - .height = 16, \ - .pokemonScale = 259, \ - .pokemonOffset = 1, \ - .trainerScale = 296, \ - .trainerOffset = 1, \ - FOOTPRINT(Zoroark) \ - .formSpeciesIdTable = sZoroarkFormSpeciesIdTable - [SPECIES_ZORUA] = { - ZORUA_MISC_INFO, .baseHP = 40, .baseAttack = 65, .baseDefense = 40, @@ -4375,28 +4999,53 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 80, .baseSpDefense = 40, .types = MON_TYPES(TYPE_DARK), + .catchRate = 75, + .expYield = 66, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_ILLUSION, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Zorua"), + .cryId = CRY_ZORUA, + .natDexNum = NATIONAL_DEX_ZORUA, .categoryName = _("Tricky Fox"), + .height = 7, + .weight = 125, .description = COMPOUND_STRING( "To protect themselves from danger, they\n" "hide their true identities by transforming\n" "into people and Pokémon. Apparently, it\n" "often transforms into a silent child."), - FRONT_PIC(Zorua, 40, 48), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Zorua, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Zorua, .frontAnimId = ANIM_CIRCULAR_VIBRATE, - BACK_PIC(Zorua, 64, 56), + .backPic = gMonBackPic_Zorua, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Zorua), - ICON(Zorua, 0), - LEARNSETS(Zorua), + .palette = gMonPalette_Zorua, + .shinyPalette = gMonShinyPalette_Zorua, + .iconSprite = gMonIcon_Zorua, + .iconPalIndex = 0, + FOOTPRINT(Zorua) + .levelUpLearnset = sZoruaLevelUpLearnset, + .teachableLearnset = sZoruaTeachableLearnset, + .formSpeciesIdTable = sZoruaFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ZOROARK}), }, [SPECIES_ZOROARK] = { - ZOROARK_MISC_INFO, .baseHP = 60, .baseAttack = 105, .baseDefense = 60, @@ -4404,29 +5053,53 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 120, .baseSpDefense = 60, .types = MON_TYPES(TYPE_DARK), + .catchRate = 45, + .expYield = 179, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_ILLUSION, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Zoroark"), + .cryId = CRY_ZOROARK, + .natDexNum = NATIONAL_DEX_ZOROARK, .categoryName = _("Illusion Fox"), + .height = 16, .weight = 811, .description = COMPOUND_STRING( "Bonds between these Pokémon are very\n" "strong. It protects the safety of its\n" "pack by tricking its opponents. They\n" "defend their lair with illusory scenery."), - FRONT_PIC(Zoroark, 64, 64), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + .frontPic = gMonFrontPic_Zoroark, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Zoroark, .frontAnimId = ANIM_FLICKER_INCREASING, - BACK_PIC(Zoroark, 64, 56), + .backPic = gMonBackPic_Zoroark, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 10, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Zoroark), - ICON(Zoroark, 0), - LEARNSETS(Zoroark), + .palette = gMonPalette_Zoroark, + .shinyPalette = gMonShinyPalette_Zoroark, + .iconSprite = gMonIcon_Zoroark, + .iconPalIndex = 0, + FOOTPRINT(Zoroark) + .levelUpLearnset = sZoroarkLevelUpLearnset, + .teachableLearnset = sZoroarkTeachableLearnset, + .formSpeciesIdTable = sZoroarkFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_ZORUA_HISUIAN] = { - ZORUA_MISC_INFO, .baseHP = 35, .baseAttack = 60, .baseDefense = 40, @@ -4434,29 +5107,54 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 85, .baseSpDefense = 40, .types = MON_TYPES(TYPE_NORMAL, TYPE_GHOST), + .catchRate = 75, + .expYield = 66, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_ILLUSION, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Zorua"), + .cryId = CRY_ZORUA, + .natDexNum = NATIONAL_DEX_ZORUA, .categoryName = _("Spiteful Fox"), + .height = 7, + .weight = 125, .description = COMPOUND_STRING( "Derives power from resentment,\n" "which rises as energy atop its head and\n" "takes on the forms of foes. In this\n" "way, Zorua vents lingering malice."), - FRONT_PIC(ZoruaHisuian, 48, 64), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_ZoruaHisuian, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_ZoruaHisuian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ZoruaHisuian, 56, 64), + .backPic = gMonBackPic_ZoruaHisuian, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ZoruaHisuian), - ICON(ZoruaHisuian, 0), - LEARNSETS(ZoruaHisuian), + .palette = gMonPalette_ZoruaHisuian, + .shinyPalette = gMonShinyPalette_ZoruaHisuian, + .iconSprite = gMonIcon_ZoruaHisuian, + .iconPalIndex = 0, + FOOTPRINT(Zorua) .isHisuianForm = TRUE, + .levelUpLearnset = sZoruaHisuianLevelUpLearnset, + .teachableLearnset = sZoruaHisuianTeachableLearnset, + .formSpeciesIdTable = sZoruaFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ZOROARK_HISUIAN}), }, [SPECIES_ZOROARK_HISUIAN] = { - ZOROARK_MISC_INFO, .baseHP = 55, .baseAttack = 100, .baseDefense = 60, @@ -4464,24 +5162,49 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 125, .baseSpDefense = 60, .types = MON_TYPES(TYPE_NORMAL, TYPE_GHOST), + .catchRate = 45, + .expYield = 179, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_ILLUSION, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Zoroark"), + .cryId = CRY_ZOROARK, + .natDexNum = NATIONAL_DEX_ZOROARK, .categoryName = _("Baneful Fox"), + .height = 16, .weight = 730, .description = COMPOUND_STRING( "Heedless of its own safety,\n" "Zoroark attacks its nemeses with a bitter\n" "energy so intense, it lacerates\n" "Zoroark's own body."), - FRONT_PIC(ZoroarkHisuian, 64, 64), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + .frontPic = gMonFrontPic_ZoroarkHisuian, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_ZoroarkHisuian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ZoroarkHisuian, 64, 64), + .backPic = gMonBackPic_ZoroarkHisuian, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ZoroarkHisuian), - ICON(ZoroarkHisuian, 0), - LEARNSETS(ZoroarkHisuian), + .palette = gMonPalette_ZoroarkHisuian, + .shinyPalette = gMonShinyPalette_ZoroarkHisuian, + .iconSprite = gMonIcon_ZoroarkHisuian, + .iconPalIndex = 0, + FOOTPRINT(Zoroark) .isHisuianForm = TRUE, + .levelUpLearnset = sZoroarkHisuianLevelUpLearnset, + .teachableLearnset = sZoroarkHisuianTeachableLearnset, + .formSpeciesIdTable = sZoroarkFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_ZORUA @@ -4521,17 +5244,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Minccino, 56, 48), + .frontPic = gMonFrontPic_Minccino, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Minccino, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Minccino, 56, 56), + .backPic = gMonBackPic_Minccino, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Minccino), - ICON(Minccino, 0), + .palette = gMonPalette_Minccino, + .shinyPalette = gMonShinyPalette_Minccino, + .iconSprite = gMonIcon_Minccino, + .iconPalIndex = 0, FOOTPRINT(Minccino) - LEARNSETS(Minccino), + .levelUpLearnset = sMinccinoLevelUpLearnset, + .teachableLearnset = sMinccinoTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_CINCCINO}), }, @@ -4570,17 +5298,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cinccino, 56, 56), + .frontPic = gMonFrontPic_Cinccino, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Cinccino, .frontAnimId = ANIM_V_SLIDE, - BACK_PIC(Cinccino, 64, 56), + .backPic = gMonBackPic_Cinccino, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Cinccino), - ICON(Cinccino, 0), + .palette = gMonPalette_Cinccino, + .shinyPalette = gMonShinyPalette_Cinccino, + .iconSprite = gMonIcon_Cinccino, + .iconPalIndex = 0, FOOTPRINT(Cinccino) - LEARNSETS(Cinccino), + .levelUpLearnset = sCinccinoLevelUpLearnset, + .teachableLearnset = sCinccinoTeachableLearnset, }, #endif //P_FAMILY_MINCCINO @@ -4619,17 +5352,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Gothita, 40, 40), + .frontPic = gMonFrontPic_Gothita, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Gothita, .frontAnimId = ANIM_V_JUMPS_SMALL, - BACK_PIC(Gothita, 48, 48), + .backPic = gMonBackPic_Gothita, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Gothita), - ICON(Gothita, 2), + .palette = gMonPalette_Gothita, + .shinyPalette = gMonShinyPalette_Gothita, + .iconSprite = gMonIcon_Gothita, + .iconPalIndex = 2, FOOTPRINT(Gothita) - LEARNSETS(Gothita), + .levelUpLearnset = sGothitaLevelUpLearnset, + .teachableLearnset = sGothitaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_GOTHORITA}), }, @@ -4667,17 +5405,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Gothorita, 48, 56), + .frontPic = gMonFrontPic_Gothorita, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Gothorita, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Gothorita, 64, 56), + .backPic = gMonBackPic_Gothorita, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Gothorita), - ICON(Gothorita, 2), + .palette = gMonPalette_Gothorita, + .shinyPalette = gMonShinyPalette_Gothorita, + .iconSprite = gMonIcon_Gothorita, + .iconPalIndex = 2, FOOTPRINT(Gothorita) - LEARNSETS(Gothorita), + .levelUpLearnset = sGothoritaLevelUpLearnset, + .teachableLearnset = sGothoritaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 41, SPECIES_GOTHITELLE}), }, @@ -4715,17 +5458,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Gothitelle, 48, 64), + .frontPic = gMonFrontPic_Gothitelle, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Gothitelle, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Gothitelle, 64, 64), + .backPic = gMonBackPic_Gothitelle, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_H_STRETCH, - PALETTES(Gothitelle), - ICON(Gothitelle, 2), + .palette = gMonPalette_Gothitelle, + .shinyPalette = gMonShinyPalette_Gothitelle, + .iconSprite = gMonIcon_Gothitelle, + .iconPalIndex = 2, FOOTPRINT(Gothitelle) - LEARNSETS(Gothitelle), + .levelUpLearnset = sGothitelleLevelUpLearnset, + .teachableLearnset = sGothitelleTeachableLearnset, }, #endif //P_FAMILY_GOTHITA @@ -4765,18 +5513,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Solosis, 32, 32), + .frontPic = gMonFrontPic_Solosis, + .frontPicSize = MON_COORDS_SIZE(32, 32), .frontPicYOffset = 17, .frontAnimFrames = sAnims_Solosis, .frontAnimId = ANIM_TWIST, .enemyMonElevation = 14, - BACK_PIC(Solosis, 48, 32), + .backPic = gMonBackPic_Solosis, + .backPicSize = MON_COORDS_SIZE(48, 32), .backPicYOffset = 19, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Solosis), - ICON(Solosis, 1), + .palette = gMonPalette_Solosis, + .shinyPalette = gMonShinyPalette_Solosis, + .iconSprite = gMonIcon_Solosis, + .iconPalIndex = 1, FOOTPRINT(Solosis) - LEARNSETS(Solosis), + .levelUpLearnset = sSolosisLevelUpLearnset, + .teachableLearnset = sSolosisTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_DUOSION}), }, @@ -4814,18 +5567,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Duosion, 40, 48), + .frontPic = gMonFrontPic_Duosion, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Duosion, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, .enemyMonElevation = 7, - BACK_PIC(Duosion, 56, 48), + .backPic = gMonBackPic_Duosion, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 13, .backAnimId = BACK_ANIM_GROW, - PALETTES(Duosion), - ICON(Duosion, 1), + .palette = gMonPalette_Duosion, + .shinyPalette = gMonShinyPalette_Duosion, + .iconSprite = gMonIcon_Duosion, + .iconPalIndex = 1, FOOTPRINT(Duosion) - LEARNSETS(Duosion), + .levelUpLearnset = sDuosionLevelUpLearnset, + .teachableLearnset = sDuosionTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 41, SPECIES_REUNICLUS}), }, @@ -4863,18 +5621,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Reuniclus, 64, 48), + .frontPic = gMonFrontPic_Reuniclus, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Reuniclus, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 8, - BACK_PIC(Reuniclus, 64, 48), + .backPic = gMonBackPic_Reuniclus, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 13, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Reuniclus), - ICON(Reuniclus, 1), + .palette = gMonPalette_Reuniclus, + .shinyPalette = gMonShinyPalette_Reuniclus, + .iconSprite = gMonIcon_Reuniclus, + .iconPalIndex = 1, FOOTPRINT(Reuniclus) - LEARNSETS(Reuniclus), + .levelUpLearnset = sReuniclusLevelUpLearnset, + .teachableLearnset = sReuniclusTeachableLearnset, }, #endif //P_FAMILY_SOLOSIS @@ -4913,17 +5676,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Ducklett, 32, 40), + .frontPic = gMonFrontPic_Ducklett, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Ducklett, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Ducklett, 48, 48), + .backPic = gMonBackPic_Ducklett, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Ducklett), - ICON(Ducklett, 0), + .palette = gMonPalette_Ducklett, + .shinyPalette = gMonShinyPalette_Ducklett, + .iconSprite = gMonIcon_Ducklett, + .iconPalIndex = 0, FOOTPRINT(Ducklett) - LEARNSETS(Ducklett), + .levelUpLearnset = sDucklettLevelUpLearnset, + .teachableLearnset = sDucklettTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_SWANNA}), }, @@ -4961,17 +5729,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Swanna, 56, 64), + .frontPic = gMonFrontPic_Swanna, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Swanna, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Swanna, 64, 64), + .backPic = gMonBackPic_Swanna, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, .backAnimId = BACK_ANIM_H_STRETCH, - PALETTES(Swanna), - ICON(Swanna, 2), + .palette = gMonPalette_Swanna, + .shinyPalette = gMonShinyPalette_Swanna, + .iconSprite = gMonIcon_Swanna, + .iconPalIndex = 2, FOOTPRINT(Swanna) - LEARNSETS(Swanna), + .levelUpLearnset = sSwannaLevelUpLearnset, + .teachableLearnset = sSwannaTeachableLearnset, }, #endif //P_FAMILY_DUCKLETT @@ -5011,17 +5784,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Vanillite, 32, 40), + .frontPic = gMonFrontPic_Vanillite, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Vanillite, .frontAnimId = ANIM_H_SLIDE, - BACK_PIC(Vanillite, 40, 48), + .backPic = gMonBackPic_Vanillite, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Vanillite), - ICON(Vanillite, 0), + .palette = gMonPalette_Vanillite, + .shinyPalette = gMonShinyPalette_Vanillite, + .iconSprite = gMonIcon_Vanillite, + .iconPalIndex = 0, FOOTPRINT(Vanillite) - LEARNSETS(Vanillite), + .levelUpLearnset = sVanilliteLevelUpLearnset, + .teachableLearnset = sVanilliteTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_VANILLISH}), }, @@ -5060,17 +5838,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Vanillish, 32, 56), + .frontPic = gMonFrontPic_Vanillish, + .frontPicSize = MON_COORDS_SIZE(32, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Vanillish, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Vanillish, 48, 56), + .backPic = gMonBackPic_Vanillish, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Vanillish), - ICON(Vanillish, 2), + .palette = gMonPalette_Vanillish, + .shinyPalette = gMonShinyPalette_Vanillish, + .iconSprite = gMonIcon_Vanillish, + .iconPalIndex = 2, FOOTPRINT(Vanillish) - LEARNSETS(Vanillish), + .levelUpLearnset = sVanillishLevelUpLearnset, + .teachableLearnset = sVanillishTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 47, SPECIES_VANILLUXE}), }, @@ -5109,203 +5892,452 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Vanilluxe, 56, 56), + .frontPic = gMonFrontPic_Vanilluxe, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Vanilluxe, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Vanilluxe, 64, 64), + .backPic = gMonBackPic_Vanilluxe, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Vanilluxe), - ICON(Vanilluxe, 2), + .palette = gMonPalette_Vanilluxe, + .shinyPalette = gMonShinyPalette_Vanilluxe, + .iconSprite = gMonIcon_Vanilluxe, + .iconPalIndex = 2, FOOTPRINT(Vanilluxe) - LEARNSETS(Vanilluxe), + .levelUpLearnset = sVanilluxeLevelUpLearnset, + .teachableLearnset = sVanilluxeTeachableLearnset, }, #endif //P_FAMILY_VANILLITE #if P_FAMILY_DEERLING -#define DEERLING_MISC_INFO \ - .baseHP = 60, \ - .baseAttack = 60, \ - .baseDefense = 50, \ - .baseSpeed = 75, \ - .baseSpAttack = 40, \ - .baseSpDefense = 50, \ - .types = MON_TYPES(TYPE_NORMAL, TYPE_GRASS), \ - .catchRate = 190, \ - .expYield = 67, \ - .evYield_Speed = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE }, \ - .speciesName = _("Deerling"), \ - .cryId = CRY_DEERLING, \ - .natDexNum = NATIONAL_DEX_DEERLING, \ - .categoryName = _("Season"), \ - .height = 6, \ - .weight = 195, \ - .pokemonScale = 422, \ - .pokemonOffset = 14, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FRONT_PIC(Deerling, 32, 48), \ - .frontPicYOffset = 11, \ - .frontAnimFrames = sAnims_Deerling, \ - .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, \ - BACK_PIC(Deerling, 48, 56), \ - .backPicYOffset = 9, \ - .backAnimId = BACK_ANIM_H_SLIDE, \ - FOOTPRINT(Deerling) \ - LEARNSETS(Deerling), \ - .formSpeciesIdTable = sDeerlingFormSpeciesIdTable - [SPECIES_DEERLING_SPRING] = { - DEERLING_MISC_INFO, + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 50, + .baseSpeed = 75, + .baseSpAttack = 40, + .baseSpDefense = 50, + .types = MON_TYPES(TYPE_NORMAL, TYPE_GRASS), + .catchRate = 190, + .expYield = 67, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE }, .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Deerling"), + .cryId = CRY_DEERLING, + .natDexNum = NATIONAL_DEX_DEERLING, + .categoryName = _("Season"), + .height = 6, + .weight = 195, .description = COMPOUND_STRING( "Deerling have different scents\n" "depending on the season. In early\n" "spring, these Pokémon give off a\n" "delicate, sweet, and calming scent."), - PALETTES(DeerlingSpring), - ICON(DeerlingSpring, 1), + .pokemonScale = 422, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Deerling, + .frontPicSize = MON_COORDS_SIZE(32, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Deerling, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_Deerling, + .backPicSize = MON_COORDS_SIZE(48, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_SLIDE, + .palette = gMonPalette_DeerlingSpring, + .shinyPalette = gMonShinyPalette_DeerlingSpring, + .iconSprite = gMonIcon_DeerlingSpring, + .iconPalIndex = 1, + FOOTPRINT(Deerling) + .levelUpLearnset = sDeerlingLevelUpLearnset, + .teachableLearnset = sDeerlingTeachableLearnset, + .formSpeciesIdTable = sDeerlingFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SAWSBUCK_SPRING}), }, + [SPECIES_DEERLING_SUMMER] = { - DEERLING_MISC_INFO, + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 50, + .baseSpeed = 75, + .baseSpAttack = 40, + .baseSpDefense = 50, + .types = MON_TYPES(TYPE_NORMAL, TYPE_GRASS), + .catchRate = 190, + .expYield = 67, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE }, .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Deerling"), + .cryId = CRY_DEERLING, + .natDexNum = NATIONAL_DEX_DEERLING, + .categoryName = _("Season"), + .height = 6, + .weight = 195, .description = COMPOUND_STRING( "To prevent Deerling from entering\n" "their fields, many farmers will have\n" "several Lycanroc stand guard, as\n" "they are its natural enemy."), - PALETTES(DeerlingSummer), - ICON(DeerlingSummer, 1), + .pokemonScale = 422, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Deerling, + .frontPicSize = MON_COORDS_SIZE(32, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Deerling, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_Deerling, + .backPicSize = MON_COORDS_SIZE(48, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_SLIDE, + .palette = gMonPalette_DeerlingSummer, + .shinyPalette = gMonShinyPalette_DeerlingSummer, + .iconSprite = gMonIcon_DeerlingSummer, + .iconPalIndex = 1, + FOOTPRINT(Deerling) + .levelUpLearnset = sDeerlingLevelUpLearnset, + .teachableLearnset = sDeerlingTeachableLearnset, + .formSpeciesIdTable = sDeerlingFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SAWSBUCK_SUMMER}), }, + [SPECIES_DEERLING_AUTUMN] = { - DEERLING_MISC_INFO, + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 50, + .baseSpeed = 75, + .baseSpAttack = 40, + .baseSpDefense = 50, + .types = MON_TYPES(TYPE_NORMAL, TYPE_GRASS), + .catchRate = 190, + .expYield = 67, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Deerling"), + .cryId = CRY_DEERLING, + .natDexNum = NATIONAL_DEX_DEERLING, + .categoryName = _("Season"), + .height = 6, + .weight = 195, .description = COMPOUND_STRING( "Deerling have different scents\n" "depending on the season. In this form,\n" "Deerling have a softly sweet scent\n" "that lingers in the nose."), - PALETTES(DeerlingAutumn), - ICON(DeerlingAutumn, 0), + .pokemonScale = 422, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Deerling, + .frontPicSize = MON_COORDS_SIZE(32, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Deerling, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_Deerling, + .backPicSize = MON_COORDS_SIZE(48, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_SLIDE, + .palette = gMonPalette_DeerlingAutumn, + .shinyPalette = gMonShinyPalette_DeerlingAutumn, + .iconSprite = gMonIcon_DeerlingAutumn, + .iconPalIndex = 0, + FOOTPRINT(Deerling) + .levelUpLearnset = sDeerlingLevelUpLearnset, + .teachableLearnset = sDeerlingTeachableLearnset, + .formSpeciesIdTable = sDeerlingFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SAWSBUCK_AUTUMN}), }, + [SPECIES_DEERLING_WINTER] = { - DEERLING_MISC_INFO, + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 50, + .baseSpeed = 75, + .baseSpAttack = 40, + .baseSpDefense = 50, + .types = MON_TYPES(TYPE_NORMAL, TYPE_GRASS), + .catchRate = 190, + .expYield = 67, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE }, .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Deerling"), + .cryId = CRY_DEERLING, + .natDexNum = NATIONAL_DEX_DEERLING, + .categoryName = _("Season"), + .height = 6, + .weight = 195, .description = COMPOUND_STRING( "Deerling's scent changes with the\n" "seasons, but when the Pokémon is in\n" "its Winter Form, it has hardly any\n" "scent at all."), - PALETTES(DeerlingWinter), - ICON(DeerlingWinter, 2), + .pokemonScale = 422, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Deerling, + .frontPicSize = MON_COORDS_SIZE(32, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Deerling, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_Deerling, + .backPicSize = MON_COORDS_SIZE(48, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_SLIDE, + .palette = gMonPalette_DeerlingWinter, + .shinyPalette = gMonShinyPalette_DeerlingWinter, + .iconSprite = gMonIcon_DeerlingWinter, + .iconPalIndex = 2, + FOOTPRINT(Deerling) + .levelUpLearnset = sDeerlingLevelUpLearnset, + .teachableLearnset = sDeerlingTeachableLearnset, + .formSpeciesIdTable = sDeerlingFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SAWSBUCK_WINTER}), }, -#define SAWSBUCK_MISC_INFO \ - .baseHP = 80, \ - .baseAttack = 100, \ - .baseDefense = 70, \ - .baseSpeed = 95, \ - .baseSpAttack = 60, \ - .baseSpDefense = 70, \ - .types = MON_TYPES(TYPE_NORMAL, TYPE_GRASS), \ - .catchRate = 75, \ - .expYield = 166, \ - .evYield_Attack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE }, \ - .bodyColor = BODY_COLOR_BROWN, \ - .speciesName = _("Sawsbuck"), \ - .cryId = CRY_SAWSBUCK, \ - .natDexNum = NATIONAL_DEX_SAWSBUCK, \ - .categoryName = _("Season"), \ - .height = 19, \ - .weight = 925, \ - .pokemonScale = 256, \ - .pokemonOffset = 1, \ - .trainerScale = 326, \ - .trainerOffset = 4, \ - .frontPicYOffset = 0, \ - .frontAnimFrames = sAnims_Sawsbuck, \ - .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, \ - .backPicYOffset = 5, \ - .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, \ - FOOTPRINT(Sawsbuck) \ - LEARNSETS(Sawsbuck), \ - .formSpeciesIdTable = sSawsbuckFormSpeciesIdTable - [SPECIES_SAWSBUCK_SPRING] = { - SAWSBUCK_MISC_INFO, + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 95, + .baseSpAttack = 60, + .baseSpDefense = 70, + .types = MON_TYPES(TYPE_NORMAL, TYPE_GRASS), + .catchRate = 75, + .expYield = 166, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Sawsbuck"), + .cryId = CRY_SAWSBUCK, + .natDexNum = NATIONAL_DEX_SAWSBUCK, + .categoryName = _("Season"), + .height = 19, + .weight = 925, .description = COMPOUND_STRING( "Some people call Sawsbuck the harbingers\n" "of spring because the plants growing on\n" "its horns change according to the season.\n" "The leader possesses magnificent horns."), - FRONT_PIC(SawsbuckSpring, 56, 64), - BACK_PIC(SawsbuckSpring, 48, 64), - PALETTES(SawsbuckSpring), - ICON(SawsbuckSpring, 1), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + .frontPic = gMonFrontPic_SawsbuckSpring, + .frontPicSize = MON_COORDS_SIZE(56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Sawsbuck, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_SawsbuckSpring, + .backPicSize = MON_COORDS_SIZE(48, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + .palette = gMonPalette_SawsbuckSpring, + .shinyPalette = gMonShinyPalette_SawsbuckSpring, + .iconSprite = gMonIcon_SawsbuckSpring, + .iconPalIndex = 1, + FOOTPRINT(Sawsbuck) + .levelUpLearnset = sSawsbuckLevelUpLearnset, + .teachableLearnset = sSawsbuckTeachableLearnset, + .formSpeciesIdTable = sSawsbuckFormSpeciesIdTable, }, [SPECIES_SAWSBUCK_SUMMER] = { - SAWSBUCK_MISC_INFO, + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 95, + .baseSpAttack = 60, + .baseSpDefense = 70, + .types = MON_TYPES(TYPE_NORMAL, TYPE_GRASS), + .catchRate = 75, + .expYield = 166, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Sawsbuck"), + .cryId = CRY_SAWSBUCK, + .natDexNum = NATIONAL_DEX_SAWSBUCK, + .categoryName = _("Season"), + .height = 19, + .weight = 925, .description = COMPOUND_STRING( "The thicker and larger the\n" "branches and leaves on its antlers, the\n" "more majestic the Sawsbuck is thought\n" "to be."), - FRONT_PIC(SawsbuckSummer, 64, 64), - BACK_PIC(SawsbuckSummer, 64, 64), - PALETTES(SawsbuckSummer), - ICON(SawsbuckSummer, 1), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + .frontPic = gMonFrontPic_SawsbuckSummer, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Sawsbuck, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_SawsbuckSummer, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + .palette = gMonPalette_SawsbuckSummer, + .shinyPalette = gMonShinyPalette_SawsbuckSummer, + .iconSprite = gMonIcon_SawsbuckSummer, + .iconPalIndex = 1, + FOOTPRINT(Sawsbuck) + .levelUpLearnset = sSawsbuckLevelUpLearnset, + .teachableLearnset = sSawsbuckTeachableLearnset, + .formSpeciesIdTable = sSawsbuckFormSpeciesIdTable, }, [SPECIES_SAWSBUCK_AUTUMN] = { - SAWSBUCK_MISC_INFO, + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 95, + .baseSpAttack = 60, + .baseSpDefense = 70, + .types = MON_TYPES(TYPE_NORMAL, TYPE_GRASS), + .catchRate = 75, + .expYield = 166, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Sawsbuck"), + .cryId = CRY_SAWSBUCK, + .natDexNum = NATIONAL_DEX_SAWSBUCK, + .categoryName = _("Season"), + .height = 19, + .weight = 925, .description = COMPOUND_STRING( "Sawsbuck in their Autumn Form are\n" "known for having very short\n" "tempers. The males fight each other\n" "incessantly."), - FRONT_PIC(SawsbuckAutumn, 64, 64), - BACK_PIC(SawsbuckAutumn, 64, 64), - PALETTES(SawsbuckAutumn), - ICON(SawsbuckAutumn, 1), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + .frontPic = gMonFrontPic_SawsbuckAutumn, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Sawsbuck, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_SawsbuckAutumn, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + .palette = gMonPalette_SawsbuckAutumn, + .shinyPalette = gMonShinyPalette_SawsbuckAutumn, + .iconSprite = gMonIcon_SawsbuckAutumn, + .iconPalIndex = 1, + FOOTPRINT(Sawsbuck) + .levelUpLearnset = sSawsbuckLevelUpLearnset, + .teachableLearnset = sSawsbuckTeachableLearnset, + .formSpeciesIdTable = sSawsbuckFormSpeciesIdTable, }, [SPECIES_SAWSBUCK_WINTER] = { - SAWSBUCK_MISC_INFO, + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 95, + .baseSpAttack = 60, + .baseSpDefense = 70, + .types = MON_TYPES(TYPE_NORMAL, TYPE_GRASS), + .catchRate = 75, + .expYield = 166, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Sawsbuck"), + .cryId = CRY_SAWSBUCK, + .natDexNum = NATIONAL_DEX_SAWSBUCK, + .categoryName = _("Season"), + .height = 19, + .weight = 925, .description = COMPOUND_STRING( "Though there are many enthusiasts\n" "for Sawsbuck as a species, this\n" "seasonal form in particular is not\n" "very popular."), - FRONT_PIC(SawsbuckWinter, 56, 64), - BACK_PIC(SawsbuckWinter, 48, 64), - PALETTES(SawsbuckWinter), - ICON(SawsbuckWinter, 1), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + .frontPic = gMonFrontPic_SawsbuckWinter, + .frontPicSize = MON_COORDS_SIZE(56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Sawsbuck, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_SawsbuckWinter, + .backPicSize = MON_COORDS_SIZE(48, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + .palette = gMonPalette_SawsbuckWinter, + .shinyPalette = gMonShinyPalette_SawsbuckWinter, + .iconSprite = gMonIcon_SawsbuckWinter, + .iconPalIndex = 1, + FOOTPRINT(Sawsbuck) + .levelUpLearnset = sSawsbuckLevelUpLearnset, + .teachableLearnset = sSawsbuckTeachableLearnset, + .formSpeciesIdTable = sSawsbuckFormSpeciesIdTable, }, #endif //P_FAMILY_DEERLING @@ -5345,18 +6377,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Emolga, 64, 48), + .frontPic = gMonFrontPic_Emolga, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 17, .frontAnimFrames = sAnims_Emolga, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, .enemyMonElevation = 19, - BACK_PIC(Emolga, 56, 40), + .backPic = gMonBackPic_Emolga, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 16, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Emolga), - ICON(Emolga, 2), + .palette = gMonPalette_Emolga, + .shinyPalette = gMonShinyPalette_Emolga, + .iconSprite = gMonIcon_Emolga, + .iconPalIndex = 2, FOOTPRINT(Emolga) - LEARNSETS(Emolga), + .levelUpLearnset = sEmolgaLevelUpLearnset, + .teachableLearnset = sEmolgaTeachableLearnset, }, #endif //P_FAMILY_EMOLGA @@ -5395,17 +6432,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Karrablast, 40, 48), + .frontPic = gMonFrontPic_Karrablast, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Karrablast, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Karrablast, 48, 48), + .backPic = gMonBackPic_Karrablast, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 14, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Karrablast), - ICON(Karrablast, 0), + .palette = gMonPalette_Karrablast, + .shinyPalette = gMonShinyPalette_Karrablast, + .iconSprite = gMonIcon_Karrablast, + .iconPalIndex = 0, FOOTPRINT(Karrablast) - LEARNSETS(Karrablast), + .levelUpLearnset = sKarrablastLevelUpLearnset, + .teachableLearnset = sKarrablastTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_SPECIFIC_MON, SPECIES_SHELMET, SPECIES_ESCAVALIER}), }, @@ -5443,17 +6485,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Escavalier, 64, 64), + .frontPic = gMonFrontPic_Escavalier, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Escavalier, .frontAnimId = ANIM_BACK_AND_LUNGE, - BACK_PIC(Escavalier, 64, 56), + .backPic = gMonBackPic_Escavalier, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Escavalier), - ICON(Escavalier, 0), + .palette = gMonPalette_Escavalier, + .shinyPalette = gMonShinyPalette_Escavalier, + .iconSprite = gMonIcon_Escavalier, + .iconPalIndex = 0, FOOTPRINT(Escavalier) - LEARNSETS(Escavalier), + .levelUpLearnset = sEscavalierLevelUpLearnset, + .teachableLearnset = sEscavalierTeachableLearnset, }, #endif //P_FAMILY_KARRABLAST @@ -5494,17 +6541,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Foongus, 32, 32), + .frontPic = gMonFrontPic_Foongus, + .frontPicSize = MON_COORDS_SIZE(32, 32), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Foongus, .frontAnimId = ANIM_SWING_CONCAVE_FAST, - BACK_PIC(Foongus, 48, 40), + .backPic = gMonBackPic_Foongus, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 13, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Foongus), - ICON(Foongus, 0), + .palette = gMonPalette_Foongus, + .shinyPalette = gMonShinyPalette_Foongus, + .iconSprite = gMonIcon_Foongus, + .iconPalIndex = 0, FOOTPRINT(Foongus) - LEARNSETS(Foongus), + .levelUpLearnset = sFoongusLevelUpLearnset, + .teachableLearnset = sFoongusTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_AMOONGUSS}), }, @@ -5545,17 +6597,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Amoonguss, 56, 56), + .frontPic = gMonFrontPic_Amoonguss, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Amoonguss, .frontAnimId = ANIM_H_SLIDE, - BACK_PIC(Amoonguss, 64, 48), + .backPic = gMonBackPic_Amoonguss, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 12, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(Amoonguss), - ICON(Amoonguss, 1), + .palette = gMonPalette_Amoonguss, + .shinyPalette = gMonShinyPalette_Amoonguss, + .iconSprite = gMonIcon_Amoonguss, + .iconPalIndex = 1, FOOTPRINT(Amoonguss) - LEARNSETS(Amoonguss), + .levelUpLearnset = sAmoongussLevelUpLearnset, + .teachableLearnset = sAmoongussTeachableLearnset, }, #endif //P_FAMILY_FOONGUS @@ -5594,21 +6651,30 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Frillish, 56, 56), - FRONT_PIC_FEMALE(Frillish, 56, 56), + .frontPic = gMonFrontPic_Frillish, + .frontPicFemale = gMonFrontPic_FrillishF, + .frontPicSize = MON_COORDS_SIZE(56, 56), + .frontPicSizeFemale = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Frillish, .frontAnimId = ANIM_RISING_WOBBLE, - BACK_PIC(Frillish, 40, 56), - BACK_PIC_FEMALE(Frillish, 40, 56), + .backPic = gMonBackPic_Frillish, + .backPicFemale = gMonBackPic_FrillishF, + .backPicSize = MON_COORDS_SIZE(40, 56), + .backPicSizeFemale = MON_COORDS_SIZE(40, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Frillish), - PALETTE_FEMALE(Frillish), - ICON(Frillish, 0), - ICON_FEMALE(Frillish, 1), + .palette = gMonPalette_Frillish, + .paletteFemale = gMonPalette_FrillishF, + .shinyPalette = gMonShinyPalette_Frillish, + .shinyPaletteFemale = gMonShinyPalette_FrillishF, + .iconSprite = gMonIcon_Frillish, + .iconSpriteFemale = gMonIcon_FrillishF, + .iconPalIndex = 0, + .iconPalIndexFemale = 1, FOOTPRINT(Frillish) - LEARNSETS(Frillish), + .levelUpLearnset = sFrillishLevelUpLearnset, + .teachableLearnset = sFrillishTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_JELLICENT}), }, @@ -5646,21 +6712,30 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 0, .trainerScale = 348, .trainerOffset = 6, - FRONT_PIC(Jellicent, 64, 64), - FRONT_PIC_FEMALE(Jellicent, 64, 64), + .frontPic = gMonFrontPic_Jellicent, + .frontPicFemale = gMonFrontPic_JellicentF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Jellicent, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Jellicent, 64, 48), - BACK_PIC_FEMALE(Jellicent, 64, 48), + .backPic = gMonBackPic_Jellicent, + .backPicFemale = gMonBackPic_JellicentF, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicSizeFemale = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(Jellicent), - PALETTE_FEMALE(Jellicent), - ICON(Jellicent, 0), - ICON_FEMALE(Jellicent, 1), + .palette = gMonPalette_Jellicent, + .paletteFemale = gMonPalette_JellicentF, + .shinyPalette = gMonShinyPalette_Jellicent, + .shinyPaletteFemale = gMonShinyPalette_JellicentF, + .iconSprite = gMonIcon_Jellicent, + .iconSpriteFemale = gMonIcon_JellicentF, + .iconPalIndex = 0, + .iconPalIndexFemale = 1, FOOTPRINT(Jellicent) - LEARNSETS(Jellicent), + .levelUpLearnset = sJellicentLevelUpLearnset, + .teachableLearnset = sJellicentTeachableLearnset, }, #endif //P_FAMILY_FRILLISH @@ -5699,17 +6774,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Alomomola, 32, 64), + .frontPic = gMonFrontPic_Alomomola, + .frontPicSize = MON_COORDS_SIZE(32, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Alomomola, .frontAnimId = ANIM_SWING_CONCAVE, - BACK_PIC(Alomomola, 48, 64), + .backPic = gMonBackPic_Alomomola, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Alomomola), - ICON(Alomomola, 0), + .palette = gMonPalette_Alomomola, + .shinyPalette = gMonShinyPalette_Alomomola, + .iconSprite = gMonIcon_Alomomola, + .iconPalIndex = 0, FOOTPRINT(Alomomola) - LEARNSETS(Alomomola), + .levelUpLearnset = sAlomomolaLevelUpLearnset, + .teachableLearnset = sAlomomolaTeachableLearnset, }, #endif //P_FAMILY_ALOMOMOLA @@ -5748,17 +6828,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Joltik, 32, 32), + .frontPic = gMonFrontPic_Joltik, + .frontPicSize = MON_COORDS_SIZE(32, 32), .frontPicYOffset = 17, .frontAnimFrames = sAnims_Joltik, .frontAnimId = ANIM_H_SLIDE, - BACK_PIC(Joltik, 48, 32), + .backPic = gMonBackPic_Joltik, + .backPicSize = MON_COORDS_SIZE(48, 32), .backPicYOffset = 19, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Joltik), - ICON(Joltik, 0), + .palette = gMonPalette_Joltik, + .shinyPalette = gMonShinyPalette_Joltik, + .iconSprite = gMonIcon_Joltik, + .iconPalIndex = 0, FOOTPRINT(Joltik) - LEARNSETS(Joltik), + .levelUpLearnset = sJoltikLevelUpLearnset, + .teachableLearnset = sJoltikTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_GALVANTULA}), }, @@ -5796,17 +6881,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 10, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Galvantula, 56, 48), + .frontPic = gMonFrontPic_Galvantula, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Galvantula, .frontAnimId = ANIM_CIRCLE_C_CLOCKWISE_SLOW, - BACK_PIC(Galvantula, 64, 40), + .backPic = gMonBackPic_Galvantula, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 18, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(Galvantula), - ICON(Galvantula, 2), + .palette = gMonPalette_Galvantula, + .shinyPalette = gMonShinyPalette_Galvantula, + .iconSprite = gMonIcon_Galvantula, + .iconPalIndex = 2, FOOTPRINT(Galvantula) - LEARNSETS(Galvantula), + .levelUpLearnset = sGalvantulaLevelUpLearnset, + .teachableLearnset = sGalvantulaTeachableLearnset, }, #endif //P_FAMILY_JOLTIK @@ -5846,17 +6936,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 14, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Ferroseed, 32, 40), + .frontPic = gMonFrontPic_Ferroseed, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Ferroseed, .frontAnimId = ANIM_H_VIBRATE, - BACK_PIC(Ferroseed, 48, 40), + .backPic = gMonBackPic_Ferroseed, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 15, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Ferroseed), - ICON(Ferroseed, 1), + .palette = gMonPalette_Ferroseed, + .shinyPalette = gMonShinyPalette_Ferroseed, + .iconSprite = gMonIcon_Ferroseed, + .iconPalIndex = 1, FOOTPRINT(Ferroseed) - LEARNSETS(Ferroseed), + .levelUpLearnset = sFerroseedLevelUpLearnset, + .teachableLearnset = sFerroseedTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_FERROTHORN}), }, @@ -5895,18 +6990,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Ferrothorn, 64, 64), + .frontPic = gMonFrontPic_Ferrothorn, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Ferrothorn, .frontAnimId = ANIM_V_SHAKE, .enemyMonElevation = 10, - BACK_PIC(Ferrothorn, 64, 40), + .backPic = gMonBackPic_Ferrothorn, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 14, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Ferrothorn), - ICON(Ferrothorn, 1), + .palette = gMonPalette_Ferrothorn, + .shinyPalette = gMonShinyPalette_Ferrothorn, + .iconSprite = gMonIcon_Ferrothorn, + .iconPalIndex = 1, FOOTPRINT(Ferrothorn) - LEARNSETS(Ferrothorn), + .levelUpLearnset = sFerrothornLevelUpLearnset, + .teachableLearnset = sFerrothornTeachableLearnset, }, #endif //P_FAMILY_FERROSEED @@ -5946,18 +7046,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Klink, 48, 40), + .frontPic = gMonFrontPic_Klink, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Klink, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, .enemyMonElevation = 12, - BACK_PIC(Klink, 64, 64), + .backPic = gMonBackPic_Klink, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 17, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Klink), - ICON(Klink, 0), + .palette = gMonPalette_Klink, + .shinyPalette = gMonShinyPalette_Klink, + .iconSprite = gMonIcon_Klink, + .iconPalIndex = 0, FOOTPRINT(Klink) - LEARNSETS(Klink), + .levelUpLearnset = sKlinkLevelUpLearnset, + .teachableLearnset = sKlinkTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_KLANG}), }, @@ -5996,18 +7101,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Klang, 64, 56), + .frontPic = gMonFrontPic_Klang, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Klang, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, .enemyMonElevation = 8, - BACK_PIC(Klang, 64, 64), + .backPic = gMonBackPic_Klang, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Klang), - ICON(Klang, 0), + .palette = gMonPalette_Klang, + .shinyPalette = gMonShinyPalette_Klang, + .iconSprite = gMonIcon_Klang, + .iconPalIndex = 0, FOOTPRINT(Klang) - LEARNSETS(Klang), + .levelUpLearnset = sKlangLevelUpLearnset, + .teachableLearnset = sKlangTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 49, SPECIES_KLINKLANG}), }, @@ -6046,18 +7156,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Klinklang, 64, 64), + .frontPic = gMonFrontPic_Klinklang, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Klinklang, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, .enemyMonElevation = 4, - BACK_PIC(Klinklang, 64, 64), + .backPic = gMonBackPic_Klinklang, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - PALETTES(Klinklang), - ICON(Klinklang, 0), + .palette = gMonPalette_Klinklang, + .shinyPalette = gMonShinyPalette_Klinklang, + .iconSprite = gMonIcon_Klinklang, + .iconPalIndex = 0, FOOTPRINT(Klinklang) - LEARNSETS(Klinklang), + .levelUpLearnset = sKlinklangLevelUpLearnset, + .teachableLearnset = sKlinklangTeachableLearnset, }, #endif //P_FAMILY_KLINK @@ -6096,19 +7211,24 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Tynamo, 40, 24), + .frontPic = gMonFrontPic_Tynamo, + .frontPicSize = MON_COORDS_SIZE(40, 24), .frontPicYOffset = 22, .frontAnimFrames = sAnims_Tynamo, .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, .enemyMonElevation = 16, - BACK_PIC(Tynamo, 64, 24), + .backPic = gMonBackPic_Tynamo, + .backPicSize = MON_COORDS_SIZE(64, 24), .backPicYOffset = 21, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Tynamo), - ICON(Tynamo, 0), + .palette = gMonPalette_Tynamo, + .shinyPalette = gMonShinyPalette_Tynamo, + .iconSprite = gMonIcon_Tynamo, + .iconPalIndex = 0, FOOTPRINT(Tynamo) - LEARNSETS(Tynamo), .tmIlliterate = TRUE, + .levelUpLearnset = sTynamoLevelUpLearnset, + .teachableLearnset = sTynamoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_EELEKTRIK}), }, @@ -6146,18 +7266,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Eelektrik, 48, 64), + .frontPic = gMonFrontPic_Eelektrik, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Eelektrik, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 8, - BACK_PIC(Eelektrik, 56, 64), + .backPic = gMonBackPic_Eelektrik, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Eelektrik), - ICON(Eelektrik, 0), + .palette = gMonPalette_Eelektrik, + .shinyPalette = gMonShinyPalette_Eelektrik, + .iconSprite = gMonIcon_Eelektrik, + .iconPalIndex = 0, FOOTPRINT(Eelektrik) - LEARNSETS(Eelektrik), + .levelUpLearnset = sEelektrikLevelUpLearnset, + .teachableLearnset = sEelektrikTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_EELEKTROSS}), }, @@ -6195,18 +7320,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 1, .trainerScale = 365, .trainerOffset = 7, - FRONT_PIC(Eelektross, 64, 56), + .frontPic = gMonFrontPic_Eelektross, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Eelektross, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW, .enemyMonElevation = 8, - BACK_PIC(Eelektross, 64, 64), + .backPic = gMonBackPic_Eelektross, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(Eelektross), - ICON(Eelektross, 0), + .palette = gMonPalette_Eelektross, + .shinyPalette = gMonShinyPalette_Eelektross, + .iconSprite = gMonIcon_Eelektross, + .iconPalIndex = 0, FOOTPRINT(Eelektross) - LEARNSETS(Eelektross), + .levelUpLearnset = sEelektrossLevelUpLearnset, + .teachableLearnset = sEelektrossTeachableLearnset, }, #endif //P_FAMILY_TYNAMO @@ -6245,17 +7375,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Elgyem, 32, 48), + .frontPic = gMonFrontPic_Elgyem, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Elgyem, .frontAnimId = ANIM_RISING_WOBBLE, - BACK_PIC(Elgyem, 48, 56), + .backPic = gMonBackPic_Elgyem, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 10, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Elgyem), - ICON(Elgyem, 0), + .palette = gMonPalette_Elgyem, + .shinyPalette = gMonShinyPalette_Elgyem, + .iconSprite = gMonIcon_Elgyem, + .iconPalIndex = 0, FOOTPRINT(Elgyem) - LEARNSETS(Elgyem), + .levelUpLearnset = sElgyemLevelUpLearnset, + .teachableLearnset = sElgyemTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_BEHEEYEM}), }, @@ -6293,17 +7428,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Beheeyem, 48, 56), + .frontPic = gMonFrontPic_Beheeyem, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Beheeyem, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Beheeyem, 64, 64), + .backPic = gMonBackPic_Beheeyem, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Beheeyem), - ICON(Beheeyem, 2), + .palette = gMonPalette_Beheeyem, + .shinyPalette = gMonShinyPalette_Beheeyem, + .iconSprite = gMonIcon_Beheeyem, + .iconPalIndex = 2, FOOTPRINT(Beheeyem) - LEARNSETS(Beheeyem), + .levelUpLearnset = sBeheeyemLevelUpLearnset, + .teachableLearnset = sBeheeyemTeachableLearnset, }, #endif //P_FAMILY_ELGYEM @@ -6325,11 +7465,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - #if P_UPDATED_ABILITIES >= GEN_6 - .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_INFILTRATOR }, - #else - .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_SHADOW_TAG }, - #endif + #if P_UPDATED_ABILITIES >= GEN_6 + .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_INFILTRATOR }, + #else + .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_SHADOW_TAG }, + #endif .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, .speciesName = _("Litwick"), @@ -6347,17 +7487,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Litwick, 32, 40), + .frontPic = gMonFrontPic_Litwick, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Litwick, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Litwick, 40, 40), + .backPic = gMonBackPic_Litwick, + .backPicSize = MON_COORDS_SIZE(40, 40), .backPicYOffset = 14, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Litwick), - ICON(Litwick, 2), + .palette = gMonPalette_Litwick, + .shinyPalette = gMonShinyPalette_Litwick, + .iconSprite = gMonIcon_Litwick, + .iconPalIndex = 2, FOOTPRINT(Litwick) - LEARNSETS(Litwick), + .levelUpLearnset = sLitwickLevelUpLearnset, + .teachableLearnset = sLitwickTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 41, SPECIES_LAMPENT}), }, @@ -6378,11 +7523,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - #if P_UPDATED_ABILITIES >= GEN_6 - .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_INFILTRATOR }, - #else - .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_SHADOW_TAG }, - #endif + #if P_UPDATED_ABILITIES >= GEN_6 + .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_INFILTRATOR }, + #else + .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_SHADOW_TAG }, + #endif .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Lampent"), .cryId = CRY_LAMPENT, @@ -6399,18 +7544,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Lampent, 56, 48), + .frontPic = gMonFrontPic_Lampent, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Lampent, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 6, - BACK_PIC(Lampent, 56, 48), + .backPic = gMonBackPic_Lampent, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 12, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Lampent), - ICON(Lampent, 2), + .palette = gMonPalette_Lampent, + .shinyPalette = gMonShinyPalette_Lampent, + .iconSprite = gMonIcon_Lampent, + .iconPalIndex = 2, FOOTPRINT(Lampent) - LEARNSETS(Lampent), + .levelUpLearnset = sLampentLevelUpLearnset, + .teachableLearnset = sLampentTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_CHANDELURE}), }, @@ -6431,11 +7581,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - #if P_UPDATED_ABILITIES >= GEN_6 - .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_INFILTRATOR }, - #else - .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_SHADOW_TAG }, - #endif + #if P_UPDATED_ABILITIES >= GEN_6 + .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_INFILTRATOR }, + #else + .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_SHADOW_TAG }, + #endif .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Chandelure"), .cryId = CRY_CHANDELURE, @@ -6452,18 +7602,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Chandelure, 64, 64), + .frontPic = gMonFrontPic_Chandelure, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Chandelure, .frontAnimId = ANIM_H_SLIDE_WOBBLE, .enemyMonElevation = 6, - BACK_PIC(Chandelure, 64, 64), + .backPic = gMonBackPic_Chandelure, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Chandelure), - ICON(Chandelure, 2), + .palette = gMonPalette_Chandelure, + .shinyPalette = gMonShinyPalette_Chandelure, + .iconSprite = gMonIcon_Chandelure, + .iconPalIndex = 2, FOOTPRINT(Chandelure) - LEARNSETS(Chandelure), + .levelUpLearnset = sChandelureLevelUpLearnset, + .teachableLearnset = sChandelureTeachableLearnset, }, #endif //P_FAMILY_LITWICK @@ -6502,17 +7657,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Axew, 40, 48), + .frontPic = gMonFrontPic_Axew, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Axew, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Axew, 48, 56), + .backPic = gMonBackPic_Axew, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Axew), - ICON(Axew, 1), + .palette = gMonPalette_Axew, + .shinyPalette = gMonShinyPalette_Axew, + .iconSprite = gMonIcon_Axew, + .iconPalIndex = 1, FOOTPRINT(Axew) - LEARNSETS(Axew), + .levelUpLearnset = sAxewLevelUpLearnset, + .teachableLearnset = sAxewTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_FRAXURE}), }, @@ -6550,17 +7710,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Fraxure, 56, 56), + .frontPic = gMonFrontPic_Fraxure, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Fraxure, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Fraxure, 64, 48), + .backPic = gMonBackPic_Fraxure, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 13, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Fraxure), - ICON(Fraxure, 1), + .palette = gMonPalette_Fraxure, + .shinyPalette = gMonShinyPalette_Fraxure, + .iconSprite = gMonIcon_Fraxure, + .iconPalIndex = 1, FOOTPRINT(Fraxure) - LEARNSETS(Fraxure), + .levelUpLearnset = sFraxureLevelUpLearnset, + .teachableLearnset = sFraxureTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_HAXORUS}), }, @@ -6598,17 +7763,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 286, .trainerOffset = 1, - FRONT_PIC(Haxorus, 64, 64), + .frontPic = gMonFrontPic_Haxorus, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Haxorus, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Haxorus, 64, 56), + .backPic = gMonBackPic_Haxorus, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Haxorus), - ICON(Haxorus, 2), + .palette = gMonPalette_Haxorus, + .shinyPalette = gMonShinyPalette_Haxorus, + .iconSprite = gMonIcon_Haxorus, + .iconPalIndex = 2, FOOTPRINT(Haxorus) - LEARNSETS(Haxorus), + .levelUpLearnset = sHaxorusLevelUpLearnset, + .teachableLearnset = sHaxorusTeachableLearnset, }, #endif //P_FAMILY_AXEW @@ -6647,17 +7817,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cubchoo, 32, 40), + .frontPic = gMonFrontPic_Cubchoo, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Cubchoo, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Cubchoo, 40, 40), + .backPic = gMonBackPic_Cubchoo, + .backPicSize = MON_COORDS_SIZE(40, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Cubchoo), - ICON(Cubchoo, 0), + .palette = gMonPalette_Cubchoo, + .shinyPalette = gMonShinyPalette_Cubchoo, + .iconSprite = gMonIcon_Cubchoo, + .iconPalIndex = 0, FOOTPRINT(Cubchoo) - LEARNSETS(Cubchoo), + .levelUpLearnset = sCubchooLevelUpLearnset, + .teachableLearnset = sCubchooTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_BEARTIC}), }, @@ -6695,34 +7870,34 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 3, .trainerScale = 399, .trainerOffset = 4, - FRONT_PIC(Beartic, 64, 64), + .frontPic = gMonFrontPic_Beartic, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Beartic, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Beartic, 64, 64), + .backPic = gMonBackPic_Beartic, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Beartic), - ICON(Beartic, 0), + .palette = gMonPalette_Beartic, + .shinyPalette = gMonShinyPalette_Beartic, + .iconSprite = gMonIcon_Beartic, + .iconPalIndex = 0, FOOTPRINT(Beartic) - LEARNSETS(Beartic), + .levelUpLearnset = sBearticLevelUpLearnset, + .teachableLearnset = sBearticTeachableLearnset, }, #endif //P_FAMILY_CUBCHOO #if P_FAMILY_CRYOGONAL [SPECIES_CRYOGONAL] = { + .baseHP = P_UPDATED_STATS >= GEN_7 ? 80 : 70, .baseAttack = 50, + .baseDefense = P_UPDATED_STATS >= GEN_7 ? 50 : 30, .baseSpeed = 105, .baseSpAttack = 95, .baseSpDefense = 135, - #if P_UPDATED_STATS >= GEN_7 - .baseHP = 80, - .baseDefense = 50, - #else - .baseHP = 70, - .baseDefense = 30, - #endif .types = MON_TYPES(TYPE_ICE), .catchRate = 25, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_7) ? 180 : 170, @@ -6750,18 +7925,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cryogonal, 56, 64), + .frontPic = gMonFrontPic_Cryogonal, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Cryogonal, .frontAnimId = ANIM_SHRINK_GROW, .enemyMonElevation = 3, - BACK_PIC(Cryogonal, 56, 64), + .backPic = gMonBackPic_Cryogonal, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Cryogonal), - ICON(Cryogonal, 0), + .palette = gMonPalette_Cryogonal, + .shinyPalette = gMonShinyPalette_Cryogonal, + .iconSprite = gMonIcon_Cryogonal, + .iconPalIndex = 0, FOOTPRINT(Cryogonal) - LEARNSETS(Cryogonal), + .levelUpLearnset = sCryogonalLevelUpLearnset, + .teachableLearnset = sCryogonalTeachableLearnset, }, #endif //P_FAMILY_CRYOGONAL @@ -6800,17 +7980,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Shelmet, 40, 40), + .frontPic = gMonFrontPic_Shelmet, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Shelmet, .frontAnimId = ANIM_TWIST, - BACK_PIC(Shelmet, 64, 32), + .backPic = gMonBackPic_Shelmet, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 19, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Shelmet), - ICON(Shelmet, 1), + .palette = gMonPalette_Shelmet, + .shinyPalette = gMonShinyPalette_Shelmet, + .iconSprite = gMonIcon_Shelmet, + .iconPalIndex = 1, FOOTPRINT(Shelmet) - LEARNSETS(Shelmet), + .levelUpLearnset = sShelmetLevelUpLearnset, + .teachableLearnset = sShelmetTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_SPECIFIC_MON, SPECIES_KARRABLAST, SPECIES_ACCELGOR}), }, @@ -6848,44 +8033,28 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 9, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Accelgor, 64, 56), + .frontPic = gMonFrontPic_Accelgor, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Accelgor, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(Accelgor, 64, 64), + .backPic = gMonBackPic_Accelgor, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_H_SPRING_REPEATED, - PALETTES(Accelgor), - ICON(Accelgor, 1), + .palette = gMonPalette_Accelgor, + .shinyPalette = gMonShinyPalette_Accelgor, + .iconSprite = gMonIcon_Accelgor, + .iconPalIndex = 1, FOOTPRINT(Accelgor) - LEARNSETS(Accelgor), + .levelUpLearnset = sAccelgorLevelUpLearnset, + .teachableLearnset = sAccelgorTeachableLearnset, }, #endif //P_FAMILY_SHELMET #if P_FAMILY_STUNFISK -#define STUNFISK_MISC_INFO \ - .catchRate = 75, \ - .expYield = 165, \ - .evYield_HP = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS),\ - .speciesName = _("Stunfisk"), \ - .cryId = CRY_STUNFISK, \ - .natDexNum = NATIONAL_DEX_STUNFISK, \ - .categoryName = _("Trap"), \ - .height = 7, \ - .pokemonScale = 365, \ - .pokemonOffset = 14, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Stunfisk) \ - .formSpeciesIdTable = sStunfiskFormSpeciesIdTable - [SPECIES_STUNFISK] = { - STUNFISK_MISC_INFO, .baseHP = 109, .baseAttack = 66, .baseDefense = 84, @@ -6893,32 +8062,54 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 81, .baseSpDefense = 99, .types = MON_TYPES(TYPE_GROUND, TYPE_ELECTRIC), + .catchRate = 75, + .expYield = 165, + .evYield_HP = 2, .itemRare = ITEM_SOFT_SAND, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS), .abilities = { ABILITY_STATIC, ABILITY_LIMBER, ABILITY_SAND_VEIL }, .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Stunfisk"), + .cryId = CRY_STUNFISK, + .natDexNum = NATIONAL_DEX_STUNFISK, + .categoryName = _("Trap"), + .height = 7, .weight = 110, .description = COMPOUND_STRING( "It conceals itself in the mud of the\n" "seashore. Then it waits. When prey touch\n" "it, it delivers a jolt of electricity.\n" "It smiles when transmitting electricity."), - FRONT_PIC(Stunfisk, 56, 48), + .pokemonScale = 365, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Stunfisk, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Stunfisk, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Stunfisk, 64, 24), + .backPic = gMonBackPic_Stunfisk, + .backPicSize = MON_COORDS_SIZE(64, 24), .backPicYOffset = 22, .backAnimId = BACK_ANIM_H_STRETCH, - PALETTES(Stunfisk), - ICON(Stunfisk, 2), - LEARNSETS(Stunfisk), + .palette = gMonPalette_Stunfisk, + .shinyPalette = gMonShinyPalette_Stunfisk, + .iconSprite = gMonIcon_Stunfisk, + .iconPalIndex = 2, + FOOTPRINT(Stunfisk) + .levelUpLearnset = sStunfiskLevelUpLearnset, + .teachableLearnset = sStunfiskTeachableLearnset, + .formSpeciesIdTable = sStunfiskFormSpeciesIdTable, }, #if P_GALARIAN_FORMS [SPECIES_STUNFISK_GALARIAN] = { - STUNFISK_MISC_INFO, .baseHP = 109, .baseAttack = 81, .baseDefense = 99, @@ -6926,26 +8117,49 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 66, .baseSpDefense = 84, .types = MON_TYPES(TYPE_GROUND, TYPE_STEEL), + .catchRate = 75, + .expYield = 165, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS), .abilities = { ABILITY_MIMICRY, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Stunfisk"), + .cryId = CRY_STUNFISK, + .natDexNum = NATIONAL_DEX_STUNFISK, + .categoryName = _("Trap"), + .height = 7, .weight = 205, .description = COMPOUND_STRING( "Its conspicuous lips lure prey in\n" "as it lies in wait in the mud. When\n" "prey gets close, Stunfisk clamps its\n" "jagged steel fins down on them."), - FRONT_PIC(StunfiskGalarian, 48, 40), + .pokemonScale = 365, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_StunfiskGalarian, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_StunfiskGalarian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(StunfiskGalarian, 64, 24), + .backPic = gMonBackPic_StunfiskGalarian, + .backPicSize = MON_COORDS_SIZE(64, 24), .backPicYOffset = 23, //.backAnimId = BACK_ANIM_NONE, - PALETTES(StunfiskGalarian), - ICON(StunfiskGalarian, 1), - LEARNSETS(StunfiskGalarian), + .palette = gMonPalette_StunfiskGalarian, + .shinyPalette = gMonShinyPalette_StunfiskGalarian, + .iconSprite = gMonIcon_StunfiskGalarian, + .iconPalIndex = 1, + FOOTPRINT(Stunfisk) .isGalarianForm = TRUE, + .levelUpLearnset = sStunfiskGalarianLevelUpLearnset, + .teachableLearnset = sStunfiskGalarianTeachableLearnset, + .formSpeciesIdTable = sStunfiskFormSpeciesIdTable, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_STUNFISK @@ -6985,17 +8199,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Mienfoo, 40, 48), + .frontPic = gMonFrontPic_Mienfoo, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Mienfoo, .frontAnimId = ANIM_H_VIBRATE, - BACK_PIC(Mienfoo, 56, 40), + .backPic = gMonBackPic_Mienfoo, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 14, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Mienfoo), - ICON(Mienfoo, 1), + .palette = gMonPalette_Mienfoo, + .shinyPalette = gMonShinyPalette_Mienfoo, + .iconSprite = gMonIcon_Mienfoo, + .iconPalIndex = 1, FOOTPRINT(Mienfoo) - LEARNSETS(Mienfoo), + .levelUpLearnset = sMienfooLevelUpLearnset, + .teachableLearnset = sMienfooTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_MIENSHAO}), }, @@ -7033,17 +8252,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 262, .trainerOffset = 0, - FRONT_PIC(Mienshao, 64, 56), + .frontPic = gMonFrontPic_Mienshao, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Mienshao, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Mienshao, 56, 56), + .backPic = gMonBackPic_Mienshao, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Mienshao), - ICON(Mienshao, 2), + .palette = gMonPalette_Mienshao, + .shinyPalette = gMonShinyPalette_Mienshao, + .iconSprite = gMonIcon_Mienshao, + .iconPalIndex = 2, FOOTPRINT(Mienshao) - LEARNSETS(Mienshao), + .levelUpLearnset = sMienshaoLevelUpLearnset, + .teachableLearnset = sMienshaoTeachableLearnset, }, #endif //P_FAMILY_MIENFOO @@ -7083,17 +8307,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(Druddigon, 64, 64), + .frontPic = gMonFrontPic_Druddigon, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Druddigon, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW, - BACK_PIC(Druddigon, 64, 56), + .backPic = gMonBackPic_Druddigon, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Druddigon), - ICON(Druddigon, 0), + .palette = gMonPalette_Druddigon, + .shinyPalette = gMonShinyPalette_Druddigon, + .iconSprite = gMonIcon_Druddigon, + .iconPalIndex = 0, FOOTPRINT(Druddigon) - LEARNSETS(Druddigon), + .levelUpLearnset = sDruddigonLevelUpLearnset, + .teachableLearnset = sDruddigonTeachableLearnset, }, #endif //P_FAMILY_DRUDDIGON @@ -7134,17 +8363,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Golett, 56, 56), + .frontPic = gMonFrontPic_Golett, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Golett, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Golett, 64, 56), + .backPic = gMonBackPic_Golett, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Golett), - ICON(Golett, 0), + .palette = gMonPalette_Golett, + .shinyPalette = gMonShinyPalette_Golett, + .iconSprite = gMonIcon_Golett, + .iconPalIndex = 0, FOOTPRINT(Golett) - LEARNSETS(Golett), + .levelUpLearnset = sGolettLevelUpLearnset, + .teachableLearnset = sGolettTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 43, SPECIES_GOLURK}), }, @@ -7184,17 +8418,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 3, .trainerScale = 300, .trainerOffset = 0, - FRONT_PIC(Golurk, 64, 64), + .frontPic = gMonFrontPic_Golurk, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Golurk, .frontAnimId = ANIM_V_SHAKE_TWICE, - BACK_PIC(Golurk, 64, 56), + .backPic = gMonBackPic_Golurk, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Golurk), - ICON(Golurk, 0), + .palette = gMonPalette_Golurk, + .shinyPalette = gMonShinyPalette_Golurk, + .iconSprite = gMonIcon_Golurk, + .iconPalIndex = 0, FOOTPRINT(Golurk) - LEARNSETS(Golurk), + .levelUpLearnset = sGolurkLevelUpLearnset, + .teachableLearnset = sGolurkTeachableLearnset, }, #endif //P_FAMILY_GOLETT @@ -7233,17 +8472,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 15, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pawniard, 56, 48), + .frontPic = gMonFrontPic_Pawniard, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Pawniard, .frontAnimId = ANIM_H_VIBRATE, - BACK_PIC(Pawniard, 64, 48), + .backPic = gMonBackPic_Pawniard, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Pawniard), - ICON(Pawniard, 0), + .palette = gMonPalette_Pawniard, + .shinyPalette = gMonShinyPalette_Pawniard, + .iconSprite = gMonIcon_Pawniard, + .iconPalIndex = 0, FOOTPRINT(Pawniard) - LEARNSETS(Pawniard), + .levelUpLearnset = sPawniardLevelUpLearnset, + .teachableLearnset = sPawniardTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 52, SPECIES_BISHARP}), }, @@ -7281,17 +8525,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(Bisharp, 48, 64), + .frontPic = gMonFrontPic_Bisharp, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Bisharp, .frontAnimId = ANIM_H_STRETCH, - BACK_PIC(Bisharp, 64, 64), + .backPic = gMonBackPic_Bisharp, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(Bisharp), - ICON(Bisharp, 0), + .palette = gMonPalette_Bisharp, + .shinyPalette = gMonShinyPalette_Bisharp, + .iconSprite = gMonIcon_Bisharp, + .iconPalIndex = 0, FOOTPRINT(Bisharp) - LEARNSETS(Bisharp), + .levelUpLearnset = sBisharpLevelUpLearnset, + .teachableLearnset = sBisharpTeachableLearnset, .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_KINGAMBIT}), }, @@ -7330,17 +8579,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Kingambit, 64, 64), + .frontPic = gMonFrontPic_Kingambit, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Kingambit, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Kingambit, 64, 64), + .backPic = gMonBackPic_Kingambit, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Kingambit), - ICON(Kingambit, 3), + .palette = gMonPalette_Kingambit, + .shinyPalette = gMonShinyPalette_Kingambit, + .iconSprite = gMonIcon_Kingambit, + .iconPalIndex = 3, //FOOTPRINT(Kingambit) - LEARNSETS(Kingambit), + .levelUpLearnset = sKingambitLevelUpLearnset, + .teachableLearnset = sKingambitTeachableLearnset, }, #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_PAWNIARD @@ -7380,17 +8634,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(Bouffalant, 64, 56), + .frontPic = gMonFrontPic_Bouffalant, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Bouffalant, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Bouffalant, 64, 56), + .backPic = gMonBackPic_Bouffalant, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Bouffalant), - ICON(Bouffalant, 2), + .palette = gMonPalette_Bouffalant, + .shinyPalette = gMonShinyPalette_Bouffalant, + .iconSprite = gMonIcon_Bouffalant, + .iconPalIndex = 2, FOOTPRINT(Bouffalant) - LEARNSETS(Bouffalant), + .levelUpLearnset = sBouffalantLevelUpLearnset, + .teachableLearnset = sBouffalantTeachableLearnset, }, #endif //P_FAMILY_BOUFFALANT @@ -7429,38 +8688,28 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Rufflet, 32, 48), + .frontPic = gMonFrontPic_Rufflet, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Rufflet, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Rufflet, 48, 56), + .backPic = gMonBackPic_Rufflet, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Rufflet), - ICON(Rufflet, 2), + .palette = gMonPalette_Rufflet, + .shinyPalette = gMonShinyPalette_Rufflet, + .iconSprite = gMonIcon_Rufflet, + .iconPalIndex = 2, FOOTPRINT(Rufflet) - LEARNSETS(Rufflet), + .levelUpLearnset = sRuffletLevelUpLearnset, + .teachableLearnset = sRuffletTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 54, SPECIES_BRAVIARY}, {EVO_NONE, 0, SPECIES_BRAVIARY_HISUIAN}), }, -#define BRAVIARY_MISC_INFO \ - .catchRate = 60, \ - .expYield = 179, \ - .genderRatio = MON_MALE, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), \ - .speciesName = _("Braviary"), \ - .cryId = CRY_BRAVIARY, \ - .natDexNum = NATIONAL_DEX_BRAVIARY, \ - FOOTPRINT(Braviary) \ - .formSpeciesIdTable = sBraviaryFormSpeciesIdTable - [SPECIES_BRAVIARY] = { - BRAVIARY_MISC_INFO, .baseHP = 100, .baseAttack = 123, .baseDefense = 75, @@ -7468,9 +8717,19 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 57, .baseSpDefense = 75, .types = MON_TYPES(TYPE_NORMAL, TYPE_FLYING), + .catchRate = 60, + .expYield = 179, .evYield_Attack = 2, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_KEEN_EYE, ABILITY_SHEER_FORCE, ABILITY_DEFIANT }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Braviary"), + .cryId = CRY_BRAVIARY, + .natDexNum = NATIONAL_DEX_BRAVIARY, .categoryName = _("Valiant"), .height = 15, .weight = 410, @@ -7483,23 +8742,29 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Braviary, 64, 64), + .frontPic = gMonFrontPic_Braviary, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Braviary, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 6, - BACK_PIC(Braviary, 64, 48), + .backPic = gMonBackPic_Braviary, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Braviary), - ICON(Braviary, 0), - LEARNSETS(Braviary), + .palette = gMonPalette_Braviary, + .shinyPalette = gMonShinyPalette_Braviary, + .iconSprite = gMonIcon_Braviary, + .iconPalIndex = 0, + FOOTPRINT(Braviary) + .levelUpLearnset = sBraviaryLevelUpLearnset, + .teachableLearnset = sBraviaryTeachableLearnset, + .formSpeciesIdTable = sBraviaryFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_BRAVIARY_HISUIAN] = { - BRAVIARY_MISC_INFO, .baseHP = 110, .baseAttack = 83, .baseDefense = 70, @@ -7507,9 +8772,19 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 112, .baseSpDefense = 70, .types = MON_TYPES(TYPE_PSYCHIC, TYPE_FLYING), + .catchRate = 60, + .expYield = 179, .evYield_SpAttack = 2, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_KEEN_EYE, ABILITY_SHEER_FORCE, ABILITY_TINTED_LENS }, .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Braviary"), + .cryId = CRY_BRAVIARY, + .natDexNum = NATIONAL_DEX_BRAVIARY, .categoryName = _("Battle Cry"), .height = 17, .weight = 434, @@ -7521,18 +8796,25 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(BraviaryHisuian, 64, 64), + .frontPic = gMonFrontPic_BraviaryHisuian, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_BraviaryHisuian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 3, - BACK_PIC(BraviaryHisuian, 64, 56), + .backPic = gMonBackPic_BraviaryHisuian, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(BraviaryHisuian), - ICON(BraviaryHisuian, 2), - LEARNSETS(BraviaryHisuian), + .palette = gMonPalette_BraviaryHisuian, + .shinyPalette = gMonShinyPalette_BraviaryHisuian, + .iconSprite = gMonIcon_BraviaryHisuian, + .iconPalIndex = 2, + FOOTPRINT(Braviary) .isHisuianForm = TRUE, + .levelUpLearnset = sBraviaryHisuianLevelUpLearnset, + .teachableLearnset = sBraviaryHisuianTeachableLearnset, + .formSpeciesIdTable = sBraviaryFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_RUFFLET @@ -7572,17 +8854,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Vullaby, 56, 56), + .frontPic = gMonFrontPic_Vullaby, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Vullaby, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Vullaby, 64, 48), + .backPic = gMonBackPic_Vullaby, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 14, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Vullaby), - ICON(Vullaby, 0), + .palette = gMonPalette_Vullaby, + .shinyPalette = gMonShinyPalette_Vullaby, + .iconSprite = gMonIcon_Vullaby, + .iconPalIndex = 0, FOOTPRINT(Vullaby) - LEARNSETS(Vullaby), + .levelUpLearnset = sVullabyLevelUpLearnset, + .teachableLearnset = sVullabyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 54, SPECIES_MANDIBUZZ}), }, @@ -7620,17 +8907,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Mandibuzz, 48, 64), + .frontPic = gMonFrontPic_Mandibuzz, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Mandibuzz, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Mandibuzz, 64, 48), + .backPic = gMonBackPic_Mandibuzz, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Mandibuzz), - ICON(Mandibuzz, 1), + .palette = gMonPalette_Mandibuzz, + .shinyPalette = gMonShinyPalette_Mandibuzz, + .iconSprite = gMonIcon_Mandibuzz, + .iconPalIndex = 1, FOOTPRINT(Mandibuzz) - LEARNSETS(Mandibuzz), + .levelUpLearnset = sMandibuzzLevelUpLearnset, + .teachableLearnset = sMandibuzzTeachableLearnset, }, #endif //P_FAMILY_VULLABY @@ -7669,17 +8961,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 262, .trainerOffset = 0, - FRONT_PIC(Heatmor, 64, 56), + .frontPic = gMonFrontPic_Heatmor, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Heatmor, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Heatmor, 64, 24), + .backPic = gMonBackPic_Heatmor, + .backPicSize = MON_COORDS_SIZE(64, 24), .backPicYOffset = 21, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Heatmor), - ICON(Heatmor, 2), + .palette = gMonPalette_Heatmor, + .shinyPalette = gMonShinyPalette_Heatmor, + .iconSprite = gMonIcon_Heatmor, + .iconPalIndex = 2, FOOTPRINT(Heatmor) - LEARNSETS(Heatmor), + .levelUpLearnset = sHeatmorLevelUpLearnset, + .teachableLearnset = sHeatmorTeachableLearnset, }, #endif //P_FAMILY_HEATMOR @@ -7718,17 +9015,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 19, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Durant, 48, 32), + .frontPic = gMonFrontPic_Durant, + .frontPicSize = MON_COORDS_SIZE(48, 32), .frontPicYOffset = 17, .frontAnimFrames = sAnims_Durant, .frontAnimId = ANIM_RAPID_H_HOPS, - BACK_PIC(Durant, 64, 32), + .backPic = gMonBackPic_Durant, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 17, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Durant), - ICON(Durant, 0), + .palette = gMonPalette_Durant, + .shinyPalette = gMonShinyPalette_Durant, + .iconSprite = gMonIcon_Durant, + .iconPalIndex = 0, FOOTPRINT(Durant) - LEARNSETS(Durant), + .levelUpLearnset = sDurantLevelUpLearnset, + .teachableLearnset = sDurantTeachableLearnset, }, #endif //P_FAMILY_DURANT @@ -7767,17 +9069,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Deino, 40, 48), + .frontPic = gMonFrontPic_Deino, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Deino, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Deino, 48, 48), + .backPic = gMonBackPic_Deino, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 14, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Deino), - ICON(Deino, 2), + .palette = gMonPalette_Deino, + .shinyPalette = gMonShinyPalette_Deino, + .iconSprite = gMonIcon_Deino, + .iconPalIndex = 2, FOOTPRINT(Deino) - LEARNSETS(Deino), + .levelUpLearnset = sDeinoLevelUpLearnset, + .teachableLearnset = sDeinoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_ZWEILOUS}), }, @@ -7815,17 +9122,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 3, .trainerScale = 262, .trainerOffset = 0, - FRONT_PIC(Zweilous, 64, 56), + .frontPic = gMonFrontPic_Zweilous, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Zweilous, .frontAnimId = ANIM_H_STRETCH, - BACK_PIC(Zweilous, 64, 56), + .backPic = gMonBackPic_Zweilous, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Zweilous), - ICON(Zweilous, 2), + .palette = gMonPalette_Zweilous, + .shinyPalette = gMonShinyPalette_Zweilous, + .iconSprite = gMonIcon_Zweilous, + .iconPalIndex = 2, FOOTPRINT(Zweilous) - LEARNSETS(Zweilous), + .levelUpLearnset = sZweilousLevelUpLearnset, + .teachableLearnset = sZweilousTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 64, SPECIES_HYDREIGON}), }, @@ -7863,18 +9175,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 286, .trainerOffset = 1, - FRONT_PIC(Hydreigon, 64, 64), + .frontPic = gMonFrontPic_Hydreigon, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Hydreigon, .frontAnimId = ANIM_RISING_WOBBLE, .enemyMonElevation = 3, - BACK_PIC(Hydreigon, 64, 56), + .backPic = gMonBackPic_Hydreigon, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 11, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(Hydreigon), - ICON(Hydreigon, 2), + .palette = gMonPalette_Hydreigon, + .shinyPalette = gMonShinyPalette_Hydreigon, + .iconSprite = gMonIcon_Hydreigon, + .iconPalIndex = 2, FOOTPRINT(Hydreigon) - LEARNSETS(Hydreigon), + .levelUpLearnset = sHydreigonLevelUpLearnset, + .teachableLearnset = sHydreigonTeachableLearnset, }, #endif //P_FAMILY_DEINO @@ -7913,17 +9230,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 10, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Larvesta, 40, 48), + .frontPic = gMonFrontPic_Larvesta, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Larvesta, .frontAnimId = ANIM_GLOW_ORANGE, - BACK_PIC(Larvesta, 64, 48), + .backPic = gMonBackPic_Larvesta, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 12, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Larvesta), - ICON(Larvesta, 0), + .palette = gMonPalette_Larvesta, + .shinyPalette = gMonShinyPalette_Larvesta, + .iconSprite = gMonIcon_Larvesta, + .iconPalIndex = 0, FOOTPRINT(Larvesta) - LEARNSETS(Larvesta), + .levelUpLearnset = sLarvestaLevelUpLearnset, + .teachableLearnset = sLarvestaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 59, SPECIES_VOLCARONA}), }, @@ -7963,18 +9285,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(Volcarona, 64, 56), + .frontPic = gMonFrontPic_Volcarona, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Volcarona, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 6, - BACK_PIC(Volcarona, 64, 64), + .backPic = gMonBackPic_Volcarona, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Volcarona), - ICON(Volcarona, 0), + .palette = gMonPalette_Volcarona, + .shinyPalette = gMonShinyPalette_Volcarona, + .iconSprite = gMonIcon_Volcarona, + .iconPalIndex = 0, FOOTPRINT(Volcarona) - LEARNSETS(Volcarona), + .levelUpLearnset = sVolcaronaLevelUpLearnset, + .teachableLearnset = sVolcaronaTeachableLearnset, }, #endif //P_FAMILY_LARVESTA @@ -7998,7 +9325,6 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, - .isLegendary = TRUE, .speciesName = _("Cobalion"), .cryId = CRY_COBALION, .natDexNum = NATIONAL_DEX_COBALION, @@ -8014,17 +9340,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 0, .trainerScale = 365, .trainerOffset = 7, - FRONT_PIC(Cobalion, 48, 64), + .frontPic = gMonFrontPic_Cobalion, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Cobalion, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Cobalion, 48, 64), + .backPic = gMonBackPic_Cobalion, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Cobalion), - ICON(Cobalion, 0), + .palette = gMonPalette_Cobalion, + .shinyPalette = gMonShinyPalette_Cobalion, + .iconSprite = gMonIcon_Cobalion, + .iconPalIndex = 0, FOOTPRINT(Cobalion) - LEARNSETS(Cobalion), + .isLegendary = TRUE, + .levelUpLearnset = sCobalionLevelUpLearnset, + .teachableLearnset = sCobalionTeachableLearnset, }, #endif //P_FAMILY_COBALION @@ -8048,7 +9380,6 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, - .isLegendary = TRUE, .speciesName = _("Terrakion"), .cryId = CRY_TERRAKION, .natDexNum = NATIONAL_DEX_TERRAKION, @@ -8064,17 +9395,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 1, .trainerScale = 336, .trainerOffset = 4, - FRONT_PIC(Terrakion, 64, 56), + .frontPic = gMonFrontPic_Terrakion, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Terrakion, .frontAnimId = ANIM_V_SHAKE_TWICE, - BACK_PIC(Terrakion, 64, 48), + .backPic = gMonBackPic_Terrakion, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Terrakion), - ICON(Terrakion, 2), + .palette = gMonPalette_Terrakion, + .shinyPalette = gMonShinyPalette_Terrakion, + .iconSprite = gMonIcon_Terrakion, + .iconPalIndex = 2, FOOTPRINT(Terrakion) - LEARNSETS(Terrakion), + .isLegendary = TRUE, + .levelUpLearnset = sTerrakionLevelUpLearnset, + .teachableLearnset = sTerrakionTeachableLearnset, }, #endif //P_FAMILY_TERRAKION @@ -8098,7 +9435,6 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, - .isLegendary = TRUE, .speciesName = _("Virizion"), .cryId = CRY_VIRIZION, .natDexNum = NATIONAL_DEX_VIRIZION, @@ -8114,54 +9450,52 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 1, .trainerScale = 344, .trainerOffset = 4, - FRONT_PIC(Virizion, 48, 64), + .frontPic = gMonFrontPic_Virizion, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Virizion, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Virizion, 64, 56), + .backPic = gMonBackPic_Virizion, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Virizion), - ICON(Virizion, 1), + .palette = gMonPalette_Virizion, + .shinyPalette = gMonShinyPalette_Virizion, + .iconSprite = gMonIcon_Virizion, + .iconPalIndex = 1, FOOTPRINT(Virizion) - LEARNSETS(Virizion), + .isLegendary = TRUE, + .levelUpLearnset = sVirizionLevelUpLearnset, + .teachableLearnset = sVirizionTeachableLearnset, }, #endif //P_FAMILY_VIRIZION #if P_FAMILY_TORNADUS -#define TORNADUS_MISC_INFO \ - .types = MON_TYPES(TYPE_FLYING), \ - .catchRate = 3, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 290 : 261, \ - .evYield_Attack = 3, \ - .genderRatio = MON_MALE, \ - .eggCycles = 120, \ - .friendship = 90, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .bodyColor = BODY_COLOR_GREEN, \ - .isLegendary = TRUE, \ - .speciesName = _("Tornadus"), \ - .natDexNum = NATIONAL_DEX_TORNADUS, \ - .categoryName = _("Cyclone"), \ - .weight = 630, \ - FOOTPRINT(Tornadus) \ - LEARNSETS(Tornadus), \ - .formSpeciesIdTable = sTornadusFormSpeciesIdTable, \ - .formChangeTable = sTornadusFormChangeTable - [SPECIES_TORNADUS_INCARNATE] = { - TORNADUS_MISC_INFO, .baseHP = 79, .baseAttack = 115, .baseDefense = 70, .baseSpeed = 111, .baseSpAttack = 125, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_FLYING), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 290 : 261, + .evYield_Attack = 3, + .genderRatio = MON_MALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PRANKSTER, ABILITY_NONE, ABILITY_DEFIANT }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Tornadus"), .cryId = CRY_TORNADUS_INCARNATE, + .natDexNum = NATIONAL_DEX_TORNADUS, + .categoryName = _("Cyclone"), .height = 15, + .weight = 630, .description = COMPOUND_STRING( "Tornadus expels massive energy from\n" "its tail, causing severe storms.\n" @@ -8171,30 +9505,53 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(TornadusIncarnate, 64, 64), + .frontPic = gMonFrontPic_TornadusIncarnate, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_TornadusIncarnate, .frontAnimId = ANIM_FIGURE_8, .enemyMonElevation = 7, - BACK_PIC(TornadusIncarnate, 64, 64), + .backPic = gMonBackPic_TornadusIncarnate, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(TornadusIncarnate), - ICON(TornadusIncarnate, 1), + .palette = gMonPalette_TornadusIncarnate, + .shinyPalette = gMonShinyPalette_TornadusIncarnate, + .iconSprite = gMonIcon_TornadusIncarnate, + .iconPalIndex = 1, + FOOTPRINT(Tornadus) + .isLegendary = TRUE, + .levelUpLearnset = sTornadusLevelUpLearnset, + .teachableLearnset = sTornadusTeachableLearnset, + .formSpeciesIdTable = sTornadusFormSpeciesIdTable, + .formChangeTable = sTornadusFormChangeTable, }, [SPECIES_TORNADUS_THERIAN] = { - TORNADUS_MISC_INFO, .baseHP = 79, .baseAttack = 100, .baseDefense = 80, .baseSpeed = 121, .baseSpAttack = 110, .baseSpDefense = 90, + .types = MON_TYPES(TYPE_FLYING), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 290 : 261, + .evYield_Attack = 3, + .genderRatio = MON_MALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_REGENERATOR, ABILITY_NONE, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Tornadus"), .cryId = CRY_TORNADUS_THERIAN, + .natDexNum = NATIONAL_DEX_TORNADUS, + .categoryName = _("Cyclone"), .height = 14, + .weight = 630, .description = COMPOUND_STRING( "An example of what is known as a\n" "“form change”. Tornadus has been\n" @@ -8204,52 +9561,54 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(TornadusTherian, 64, 64), + .frontPic = gMonFrontPic_TornadusTherian, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_TornadusTherian, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(TornadusTherian, 56, 64), + .backPic = gMonBackPic_TornadusTherian, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(TornadusTherian), - ICON(TornadusTherian, 1), + .palette = gMonPalette_TornadusTherian, + .shinyPalette = gMonShinyPalette_TornadusTherian, + .iconSprite = gMonIcon_TornadusTherian, + .iconPalIndex = 1, + FOOTPRINT(Tornadus) + .isLegendary = TRUE, + .levelUpLearnset = sTornadusLevelUpLearnset, + .teachableLearnset = sTornadusTeachableLearnset, + .formSpeciesIdTable = sTornadusFormSpeciesIdTable, + .formChangeTable = sTornadusFormChangeTable, }, #endif //P_FAMILY_TORNADUS #if P_FAMILY_THUNDURUS -#define THUNDURUS_MISC_INFO \ - .types = MON_TYPES(TYPE_ELECTRIC, TYPE_FLYING), \ - .catchRate = 3, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 290 : 261, \ - .genderRatio = MON_MALE, \ - .eggCycles = 120, \ - .friendship = 90, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .bodyColor = BODY_COLOR_BLUE, \ - .isLegendary = TRUE, \ - .speciesName = _("Thundurus"), \ - .natDexNum = NATIONAL_DEX_THUNDURUS, \ - .categoryName = _("Bolt Strike"), \ - .weight = 610, \ - FOOTPRINT(Thundurus) \ - LEARNSETS(Thundurus), \ - .formSpeciesIdTable = sThundurusFormSpeciesIdTable, \ - .formChangeTable = sThundurusFormChangeTable - [SPECIES_THUNDURUS_INCARNATE] = { - THUNDURUS_MISC_INFO, .baseHP = 79, .baseAttack = 115, .baseDefense = 70, .baseSpeed = 111, .baseSpAttack = 125, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_ELECTRIC, TYPE_FLYING), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 290 : 261, .evYield_Attack = 3, + .genderRatio = MON_MALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PRANKSTER, ABILITY_NONE, ABILITY_DEFIANT }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Thundurus"), .cryId = CRY_THUNDURUS_INCARNATE, + .natDexNum = NATIONAL_DEX_THUNDURUS, + .categoryName = _("Bolt Strike"), .height = 15, + .weight = 610, .description = COMPOUND_STRING( "The spikes on its tail discharge immense\n" "bolts of lightning. Countless charred\n" @@ -8259,31 +9618,53 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(ThundurusIncarnate, 64, 64), + .frontPic = gMonFrontPic_ThundurusIncarnate, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_ThundurusIncarnate, .frontAnimId = ANIM_FIGURE_8, .enemyMonElevation = 7, - BACK_PIC(ThundurusIncarnate, 64, 64), + .backPic = gMonBackPic_ThundurusIncarnate, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(ThundurusIncarnate), - ICON(ThundurusIncarnate, 0), + .palette = gMonPalette_ThundurusIncarnate, + .shinyPalette = gMonShinyPalette_ThundurusIncarnate, + .iconSprite = gMonIcon_ThundurusIncarnate, + .iconPalIndex = 0, + FOOTPRINT(Thundurus) + .isLegendary = TRUE, + .levelUpLearnset = sThundurusLevelUpLearnset, + .teachableLearnset = sThundurusTeachableLearnset, + .formSpeciesIdTable = sThundurusFormSpeciesIdTable, + .formChangeTable = sThundurusFormChangeTable, }, [SPECIES_THUNDURUS_THERIAN] = { - THUNDURUS_MISC_INFO, .baseHP = 79, .baseAttack = 105, .baseDefense = 70, .baseSpeed = 101, .baseSpAttack = 145, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_ELECTRIC, TYPE_FLYING), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 290 : 261, .evYield_SpAttack = 3, + .genderRatio = MON_MALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_VOLT_ABSORB, ABILITY_NONE, ABILITY_VOLT_ABSORB }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Thundurus"), .cryId = CRY_THUNDURUS_THERIAN, + .natDexNum = NATIONAL_DEX_THUNDURUS, + .categoryName = _("Bolt Strike"), .height = 30, + .weight = 610, .description = COMPOUND_STRING( "It pulverizes foes into\n" "nothingness with showers of devastatingly\n" @@ -8293,16 +9674,26 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(ThundurusTherian, 64, 64), + .frontPic = gMonFrontPic_ThundurusTherian, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_ThundurusTherian, .frontAnimId = ANIM_RISING_WOBBLE, .enemyMonElevation = 7, - BACK_PIC(ThundurusTherian, 64, 64), + .backPic = gMonBackPic_ThundurusTherian, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(ThundurusTherian), - ICON(ThundurusTherian, 0), + .palette = gMonPalette_ThundurusTherian, + .shinyPalette = gMonShinyPalette_ThundurusTherian, + .iconSprite = gMonIcon_ThundurusTherian, + .iconPalIndex = 0, + FOOTPRINT(Thundurus) + .isLegendary = TRUE, + .levelUpLearnset = sThundurusLevelUpLearnset, + .teachableLearnset = sThundurusTeachableLearnset, + .formSpeciesIdTable = sThundurusFormSpeciesIdTable, + .formChangeTable = sThundurusFormChangeTable, }, #endif //P_FAMILY_THUNDURUS @@ -8326,7 +9717,6 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_TURBOBLAZE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, - .isLegendary = TRUE, .speciesName = _("Reshiram"), .cryId = CRY_RESHIRAM, .natDexNum = NATIONAL_DEX_RESHIRAM, @@ -8342,17 +9732,23 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 0, .trainerScale = 445, .trainerOffset = 8, - FRONT_PIC(Reshiram, 64, 64), + .frontPic = gMonFrontPic_Reshiram, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Reshiram, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Reshiram, 64, 64), + .backPic = gMonBackPic_Reshiram, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Reshiram), - ICON(Reshiram, 0), + .palette = gMonPalette_Reshiram, + .shinyPalette = gMonShinyPalette_Reshiram, + .iconSprite = gMonIcon_Reshiram, + .iconPalIndex = 0, FOOTPRINT(Reshiram) - LEARNSETS(Reshiram), + .isLegendary = TRUE, + .levelUpLearnset = sReshiramLevelUpLearnset, + .teachableLearnset = sReshiramTeachableLearnset, }, #endif //P_FAMILY_RESHIRAM @@ -8376,7 +9772,6 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_TERAVOLT, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, - .isLegendary = TRUE, .speciesName = _("Zekrom"), .cryId = CRY_ZEKROM, .natDexNum = NATIONAL_DEX_ZEKROM, @@ -8392,54 +9787,52 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 412, .trainerOffset = 10, - FRONT_PIC(Zekrom, 64, 64), + .frontPic = gMonFrontPic_Zekrom, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Zekrom, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Zekrom, 64, 64), + .backPic = gMonBackPic_Zekrom, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(Zekrom), - ICON(Zekrom, 2), + .palette = gMonPalette_Zekrom, + .shinyPalette = gMonShinyPalette_Zekrom, + .iconSprite = gMonIcon_Zekrom, + .iconPalIndex = 2, FOOTPRINT(Zekrom) - LEARNSETS(Zekrom), + .isLegendary = TRUE, + .levelUpLearnset = sZekromLevelUpLearnset, + .teachableLearnset = sZekromTeachableLearnset, }, #endif //P_FAMILY_ZEKROM #if P_FAMILY_LANDORUS -#define LANDORUS_MISC_INFO \ - .types = MON_TYPES(TYPE_GROUND, TYPE_FLYING), \ - .catchRate = 3, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, \ - .genderRatio = MON_MALE, \ - .eggCycles = 120, \ - .friendship = 90, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .bodyColor = BODY_COLOR_BROWN, \ - .isLegendary = TRUE, \ - .speciesName = _("Landorus"), \ - .natDexNum = NATIONAL_DEX_LANDORUS, \ - .categoryName = _("Abundance"), \ - .weight = 680, \ - FOOTPRINT(Landorus) \ - LEARNSETS(Landorus), \ - .formSpeciesIdTable = sLandorusFormSpeciesIdTable, \ - .formChangeTable = sLandorusFormChangeTable - [SPECIES_LANDORUS_INCARNATE] = { - LANDORUS_MISC_INFO, .baseHP = 89, .baseAttack = 125, .baseDefense = 90, .baseSpeed = 101, .baseSpAttack = 115, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_GROUND, TYPE_FLYING), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, .evYield_SpAttack = 3, + .genderRatio = MON_MALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_SAND_FORCE, ABILITY_NONE, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Landorus"), .cryId = CRY_LANDORUS_INCARNATE, + .natDexNum = NATIONAL_DEX_LANDORUS, + .categoryName = _("Abundance"), .height = 15, + .weight = 680, .description = COMPOUND_STRING( "The energy that comes pouring from its tail\n" "increases the nutrition in the soil, making\n" @@ -8449,31 +9842,53 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(LandorusIncarnate, 64, 64), + .frontPic = gMonFrontPic_LandorusIncarnate, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_LandorusIncarnate, .frontAnimId = ANIM_FIGURE_8, .enemyMonElevation = 7, - BACK_PIC(LandorusIncarnate, 64, 64), + .backPic = gMonBackPic_LandorusIncarnate, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(LandorusIncarnate), - ICON(LandorusIncarnate, 0), + .palette = gMonPalette_LandorusIncarnate, + .shinyPalette = gMonShinyPalette_LandorusIncarnate, + .iconSprite = gMonIcon_LandorusIncarnate, + .iconPalIndex = 0, + FOOTPRINT(Landorus) + .isLegendary = TRUE, + .levelUpLearnset = sLandorusLevelUpLearnset, + .teachableLearnset = sLandorusTeachableLearnset, + .formSpeciesIdTable = sLandorusFormSpeciesIdTable, + .formChangeTable = sLandorusFormChangeTable, }, [SPECIES_LANDORUS_THERIAN] = { - LANDORUS_MISC_INFO, .baseHP = 89, .baseAttack = 145, .baseDefense = 90, .baseSpeed = 91, .baseSpAttack = 105, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_GROUND, TYPE_FLYING), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, .evYield_Attack = 3, + .genderRatio = MON_MALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Landorus"), .cryId = CRY_LANDORUS_THERIAN, + .natDexNum = NATIONAL_DEX_LANDORUS, + .categoryName = _("Abundance"), .height = 13, + .weight = 680, .description = COMPOUND_STRING( "Landorus soars through the sky in\n" "this form, bestowing plentiful\n" @@ -8483,53 +9898,57 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(LandorusTherian, 64, 64), + .frontPic = gMonFrontPic_LandorusTherian, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_LandorusTherian, .frontAnimId = ANIM_CIRCULAR_VIBRATE, - BACK_PIC(LandorusTherian, 64, 56), + .backPic = gMonBackPic_LandorusTherian, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(LandorusTherian), - ICON(LandorusTherian, 0), + .palette = gMonPalette_LandorusTherian, + .shinyPalette = gMonShinyPalette_LandorusTherian, + .iconSprite = gMonIcon_LandorusTherian, + .iconPalIndex = 0, + FOOTPRINT(Landorus) + .isLegendary = TRUE, + .levelUpLearnset = sLandorusLevelUpLearnset, + .teachableLearnset = sLandorusTeachableLearnset, + .formSpeciesIdTable = sLandorusFormSpeciesIdTable, + .formChangeTable = sLandorusFormChangeTable, }, #endif //P_FAMILY_LANDORUS #if P_FAMILY_KYUREM -#define KYUREM_MISC_INFO \ - .types = MON_TYPES(TYPE_DRAGON, TYPE_ICE), \ - .catchRate = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .bodyColor = BODY_COLOR_GRAY, \ - .noFlip = TRUE, \ - .speciesName = _("Kyurem"), \ - .natDexNum = NATIONAL_DEX_KYUREM, \ - .categoryName = _("Boundary"), \ - .weight = 3250, \ - FOOTPRINT(Kyurem) \ - .formSpeciesIdTable = sKyuremFormSpeciesIdTable, \ - .isLegendary = TRUE - [SPECIES_KYUREM] = { - KYUREM_MISC_INFO, .baseHP = 125, .baseAttack = 130, .baseDefense = 90, .baseSpeed = 95, .baseSpAttack = 130, .baseSpDefense = 90, + .types = MON_TYPES(TYPE_DRAGON, TYPE_ICE), + .catchRate = 3, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 330 : 297, .evYield_HP = 1, .evYield_Attack = 1, .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = TRUE, + .speciesName = _("Kyurem"), .cryId = CRY_KYUREM, + .natDexNum = NATIONAL_DEX_KYUREM, + .categoryName = _("Boundary"), .height = 30, + .weight = 3250, .description = COMPOUND_STRING( "This legendary ice Pokémon waits for a\n" "hero to fill in the missing parts of its\n" @@ -8539,28 +9958,37 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 356, .trainerOffset = 0, - FRONT_PIC(Kyurem, 64, 64), + .frontPic = gMonFrontPic_Kyurem, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Kyurem, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Kyurem, 64, 40), + .backPic = gMonBackPic_Kyurem, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Kyurem), - ICON(Kyurem, 0), - LEARNSETS(Kyurem), + .palette = gMonPalette_Kyurem, + .shinyPalette = gMonShinyPalette_Kyurem, + .iconSprite = gMonIcon_Kyurem, + .iconPalIndex = 0, + FOOTPRINT(Kyurem) + .isLegendary = TRUE, + .levelUpLearnset = sKyuremLevelUpLearnset, + .teachableLearnset = sKyuremTeachableLearnset, + .formSpeciesIdTable = sKyuremFormSpeciesIdTable, }, #if P_FUSION_FORMS [SPECIES_KYUREM_WHITE] = { - KYUREM_MISC_INFO, .baseHP = 125, .baseAttack = 120, .baseDefense = 90, .baseSpeed = 95, .baseSpAttack = 170, .baseSpDefense = 100, + .types = MON_TYPES(TYPE_DRAGON, TYPE_ICE), + .catchRate = 3, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 350, #elif P_UPDATED_EXP_YIELDS >= GEN_7 @@ -8569,9 +9997,20 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .expYield = 297, #endif .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_TURBOBLAZE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = TRUE, + .speciesName = _("Kyurem"), .cryId = CRY_KYUREM_WHITE, + .natDexNum = NATIONAL_DEX_KYUREM, + .categoryName = _("Boundary"), .height = 36, + .weight = 3250, .description = COMPOUND_STRING( "The sameness of Reshiram's and\n" "Kyurem's genes allowed Kyurem to\n" @@ -8581,29 +10020,37 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 356, .trainerOffset = 0, - FRONT_PIC(KyuremWhite, 64, 64), + .frontPic = gMonFrontPic_KyuremWhite, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_KyuremWhite, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(KyuremWhite, 64, 64), + .backPic = gMonBackPic_KyuremWhite, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(KyuremWhite), - ICON(KyuremWhite, 0), + .palette = gMonPalette_KyuremWhite, + .shinyPalette = gMonShinyPalette_KyuremWhite, + .iconSprite = gMonIcon_KyuremWhite, + .iconPalIndex = 0, + FOOTPRINT(Kyurem) + .isLegendary = TRUE, + .cannotBeTraded = TRUE, .levelUpLearnset = sKyuremWhiteLevelUpLearnset, .teachableLearnset = sKyuremTeachableLearnset, - .cannotBeTraded = TRUE, + .formSpeciesIdTable = sKyuremFormSpeciesIdTable, }, [SPECIES_KYUREM_BLACK] = { - KYUREM_MISC_INFO, .baseHP = 125, .baseAttack = 170, .baseDefense = 100, .baseSpeed = 95, .baseSpAttack = 120, .baseSpDefense = 90, + .types = MON_TYPES(TYPE_DRAGON, TYPE_ICE), + .catchRate = 3, #if P_UPDATED_EXP_YIELDS >= GEN_8 .expYield = 350, #elif P_UPDATED_EXP_YIELDS >= GEN_7 @@ -8612,9 +10059,20 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .expYield = 297, #endif .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_TERAVOLT, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = TRUE, + .speciesName = _("Kyurem"), .cryId = CRY_KYUREM_BLACK, + .natDexNum = NATIONAL_DEX_KYUREM, + .categoryName = _("Boundary"), .height = 33, + .weight = 3250, .description = COMPOUND_STRING( "The sameness of Zekrom's and\n" "Kyurem's genes allowed Kyurem to absorb\n" @@ -8624,131 +10082,145 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 7, .trainerScale = 356, .trainerOffset = 0, - FRONT_PIC(KyuremBlack, 64, 64), + .frontPic = gMonFrontPic_KyuremBlack, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_KyuremBlack, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(KyuremBlack, 64, 64), + .backPic = gMonBackPic_KyuremBlack, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, - PALETTES(KyuremBlack), - ICON(KyuremBlack, 0), + .palette = gMonPalette_KyuremBlack, + .shinyPalette = gMonShinyPalette_KyuremBlack, + .iconSprite = gMonIcon_KyuremBlack, + .iconPalIndex = 0, + FOOTPRINT(Kyurem) + .isLegendary = TRUE, + .cannotBeTraded = TRUE, .levelUpLearnset = sKyuremBlackLevelUpLearnset, .teachableLearnset = sKyuremTeachableLearnset, - .cannotBeTraded = TRUE, + .formSpeciesIdTable = sKyuremFormSpeciesIdTable, }, #endif //P_FUSION_FORMS #endif //P_FAMILY_KYUREM #if P_FAMILY_KELDEO -#define KELDEO_MISC_INFO \ - .baseHP = 91, \ - .baseAttack = 72, \ - .baseDefense = 90, \ - .baseSpeed = 108, \ - .baseSpAttack = 129, \ - .baseSpDefense = 90, \ - .types = MON_TYPES(TYPE_WATER, TYPE_FIGHTING), \ - .catchRate = 3, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 290 : 261, \ - .evYield_SpAttack = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 80, \ - .friendship = 35, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_YELLOW, \ - .isMythical = TRUE, \ - .speciesName = _("Keldeo"), \ - .cryId = CRY_KELDEO, \ - .natDexNum = NATIONAL_DEX_KELDEO, \ - .categoryName = _("Colt"), \ - .height = 14, \ - .weight = 485, \ - .pokemonScale = 265, \ - .pokemonOffset = 2, \ - .trainerScale = 262, \ - .trainerOffset = 0, \ - FOOTPRINT(Keldeo) \ - LEARNSETS(Keldeo), \ - .formSpeciesIdTable = sKeldeoFormSpeciesIdTable, \ - .formChangeTable = sKeldeoFormChangeTable - [SPECIES_KELDEO_ORDINARY] = { - KELDEO_MISC_INFO, + .baseHP = 91, + .baseAttack = 72, + .baseDefense = 90, + .baseSpeed = 108, + .baseSpAttack = 129, + .baseSpDefense = 90, + .types = MON_TYPES(TYPE_WATER, TYPE_FIGHTING), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 290 : 261, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Keldeo"), + .cryId = CRY_KELDEO, + .natDexNum = NATIONAL_DEX_KELDEO, + .categoryName = _("Colt"), + .height = 14, + .weight = 485, .description = COMPOUND_STRING( "When it is resolute, its body fills with\n" "power and it becomes swifter. It crosses\n" "the world, running over the surfaces of\n" "oceans and rivers."), - FRONT_PIC(KeldeoOrdinary, 56, 56), + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, + .trainerOffset = 0, + .frontPic = gMonFrontPic_KeldeoOrdinary, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_KeldeoOrdinary, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(KeldeoOrdinary, 56, 64), + .backPic = gMonBackPic_KeldeoOrdinary, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(KeldeoOrdinary), - ICON(KeldeoOrdinary, 0), + .palette = gMonPalette_KeldeoOrdinary, + .shinyPalette = gMonShinyPalette_KeldeoOrdinary, + .iconSprite = gMonIcon_KeldeoOrdinary, + .iconPalIndex = 0, + FOOTPRINT(Keldeo) + .isMythical = TRUE, + .levelUpLearnset = sKeldeoLevelUpLearnset, + .teachableLearnset = sKeldeoTeachableLearnset, + .formSpeciesIdTable = sKeldeoFormSpeciesIdTable, + .formChangeTable = sKeldeoFormChangeTable, }, [SPECIES_KELDEO_RESOLUTE] = { - KELDEO_MISC_INFO, + .baseHP = 91, + .baseAttack = 72, + .baseDefense = 90, + .baseSpeed = 108, + .baseSpAttack = 129, + .baseSpDefense = 90, + .types = MON_TYPES(TYPE_WATER, TYPE_FIGHTING), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 290 : 261, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, + .speciesName = _("Keldeo"), + .cryId = CRY_KELDEO, + .natDexNum = NATIONAL_DEX_KELDEO, + .categoryName = _("Colt"), + .height = 14, + .weight = 485, .description = COMPOUND_STRING( "The power that lay hidden in its\n" "body now covers its horn, turning it\n" "into a sword that can slice through\n" "anything."), - FRONT_PIC(KeldeoResolute, 64, 64), + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, + .trainerOffset = 0, + .frontPic = gMonFrontPic_KeldeoResolute, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_KeldeoResolute, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(KeldeoResolute, 64, 64), + .backPic = gMonBackPic_KeldeoResolute, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(KeldeoResolute), - ICON(KeldeoResolute, 0), + .palette = gMonPalette_KeldeoResolute, + .shinyPalette = gMonShinyPalette_KeldeoResolute, + .iconSprite = gMonIcon_KeldeoResolute, + .iconPalIndex = 0, + FOOTPRINT(Keldeo) + .isMythical = TRUE, + .levelUpLearnset = sKeldeoLevelUpLearnset, + .teachableLearnset = sKeldeoTeachableLearnset, + .formSpeciesIdTable = sKeldeoFormSpeciesIdTable, + .formChangeTable = sKeldeoFormChangeTable, }, #endif //P_FAMILY_KELDEO #if P_FAMILY_MELOETTA -#define MELOETTA_MISC_INFO \ - .catchRate = 3, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, \ - .evYield_Speed = 1, \ - .itemCommon = ITEM_STAR_PIECE, \ - .itemRare = ITEM_STAR_PIECE, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 100, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_WHITE, \ - .noFlip = TRUE, \ - .isMythical = TRUE, \ - .speciesName = _("Meloetta"), \ - .cryId = CRY_MELOETTA, \ - .natDexNum = NATIONAL_DEX_MELOETTA, \ - .categoryName = _("Melody"), \ - .height = 6, \ - .weight = 65, \ - .pokemonScale = 422, \ - .pokemonOffset = 12, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Meloetta) \ - LEARNSETS(Meloetta), \ - .formSpeciesIdTable = sMeloettaFormSpeciesIdTable, \ - .formChangeTable = sMeloettaFormChangeTable - [SPECIES_MELOETTA_ARIA] = { - MELOETTA_MISC_INFO, .baseHP = 100, .baseAttack = 77, .baseDefense = 77, @@ -8756,28 +10228,60 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 128, .baseSpDefense = 128, .types = MON_TYPES(TYPE_NORMAL, TYPE_PSYCHIC), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, + .evYield_Speed = 1, .evYield_SpAttack = 1, .evYield_SpDefense = 1, + .itemCommon = ITEM_STAR_PIECE, + .itemRare = ITEM_STAR_PIECE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = TRUE, + .speciesName = _("Meloetta"), + .cryId = CRY_MELOETTA, + .natDexNum = NATIONAL_DEX_MELOETTA, + .categoryName = _("Melody"), + .height = 6, + .weight = 65, .description = COMPOUND_STRING( "The melodies sung by Meloetta have the\n" "power to make Pokémon that hear them\n" "happy or sad. Many famous songs have been\n" "inspired by the tunes that Meloetta plays."), - FRONT_PIC(MeloettaAria, 32, 48), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_MeloettaAria, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_MeloettaAria, .frontAnimId = ANIM_GROW_VIBRATE, .enemyMonElevation = 8, - BACK_PIC(MeloettaAria, 48, 56), + .backPic = gMonBackPic_MeloettaAria, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(MeloettaAria), - ICON(MeloettaAria, 4), + .palette = gMonPalette_MeloettaAria, + .shinyPalette = gMonShinyPalette_MeloettaAria, + .iconSprite = gMonIcon_MeloettaAria, + .iconPalIndex = 4, + FOOTPRINT(Meloetta) + .isMythical = TRUE, + .levelUpLearnset = sMeloettaLevelUpLearnset, + .teachableLearnset = sMeloettaTeachableLearnset, + .formSpeciesIdTable = sMeloettaFormSpeciesIdTable, + .formChangeTable = sMeloettaFormChangeTable, }, [SPECIES_MELOETTA_PIROUETTE] = { - MELOETTA_MISC_INFO, .baseHP = 100, .baseAttack = 128, .baseDefense = 90, @@ -8785,22 +10289,55 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 77, .baseSpDefense = 77, .types = MON_TYPES(TYPE_NORMAL, TYPE_FIGHTING), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, .evYield_Attack = 1, .evYield_Defense = 1, + .evYield_Speed = 1, + .itemCommon = ITEM_STAR_PIECE, + .itemRare = ITEM_STAR_PIECE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = TRUE, + .speciesName = _("Meloetta"), + .cryId = CRY_MELOETTA, + .natDexNum = NATIONAL_DEX_MELOETTA, + .categoryName = _("Melody"), + .height = 6, + .weight = 65, .description = COMPOUND_STRING( "Meloetta's melodies are sung with\n" "a special vocalization method that can\n" "control the feelings of those who hear it."), - FRONT_PIC(MeloettaPirouette, 40, 64), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_MeloettaPirouette, + .frontPicSize = MON_COORDS_SIZE(40, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_MeloettaPirouette, .frontAnimId = ANIM_H_SLIDE_SLOW, .enemyMonElevation = 5, - BACK_PIC(MeloettaPirouette, 56, 64), + .backPic = gMonBackPic_MeloettaPirouette, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(MeloettaPirouette), - ICON(MeloettaPirouette, 0), + .palette = gMonPalette_MeloettaPirouette, + .shinyPalette = gMonShinyPalette_MeloettaPirouette, + .iconSprite = gMonIcon_MeloettaPirouette, + .iconPalIndex = 0, + FOOTPRINT(Meloetta) + .isMythical = TRUE, + .levelUpLearnset = sMeloettaLevelUpLearnset, + .teachableLearnset = sMeloettaTeachableLearnset, + .formSpeciesIdTable = sMeloettaFormSpeciesIdTable, + .formChangeTable = sMeloettaFormChangeTable, }, #endif //P_FAMILY_MELOETTA @@ -8837,17 +10374,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, \ .trainerScale = 271, \ .trainerOffset = 0, \ - FRONT_PIC(Genesect, 56, 64), \ + .frontPic = gMonFrontPic_Genesect, \ + .frontPicSize = MON_COORDS_SIZE(56, 64), \ .frontPicYOffset = 0, \ .frontAnimFrames = sAnims_Genesect, \ .frontAnimId = ANIM_H_VIBRATE, \ - BACK_PIC(Genesect, 64, 48), \ + .backPic = gMonBackPic_Genesect, \ + .backPicSize = MON_COORDS_SIZE(64, 48), \ .backPicYOffset = 8, \ .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, \ - PALETTES(form), \ - ICON(Genesect, 2), \ + .palette = gMonPalette_##form, \ + .shinyPalette = gMonShinyPalette_##form, \ + .iconSprite = gMonIcon_Genesect, \ + .iconPalIndex = 2, \ FOOTPRINT(Genesect) \ - LEARNSETS(Genesect), \ + .levelUpLearnset = sGenesectLevelUpLearnset, \ + .teachableLearnset = sGenesectTeachableLearnset, \ .formSpeciesIdTable = sGenesectFormSpeciesIdTable, \ .formChangeTable = sGenesectFormChangeTable, \ .isMythical = TRUE, \ diff --git a/src/data/pokemon/species_info/gen_6.h b/src/data/pokemon/species_info/gen_6.h index 246a5d06fd..7b0cf9e9d5 100644 --- a/src/data/pokemon/species_info/gen_6.h +++ b/src/data/pokemon/species_info/gen_6.h @@ -38,17 +38,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Chespin, 40, 48), + .frontPic = gMonFrontPic_Chespin, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Chespin, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(Chespin, 56, 64), + .backPic = gMonBackPic_Chespin, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Chespin), - ICON(Chespin, 1), + .palette = gMonPalette_Chespin, + .shinyPalette = gMonShinyPalette_Chespin, + .iconSprite = gMonIcon_Chespin, + .iconPalIndex = 1, FOOTPRINT(Chespin) - LEARNSETS(Chespin), + .levelUpLearnset = sChespinLevelUpLearnset, + .teachableLearnset = sChespinTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_QUILLADIN}), }, @@ -86,17 +91,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Quilladin, 48, 48), + .frontPic = gMonFrontPic_Quilladin, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Quilladin, .frontAnimId = ANIM_LUNGE_GROW, - BACK_PIC(Quilladin, 64, 48), + .backPic = gMonBackPic_Quilladin, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_GROW, - PALETTES(Quilladin), - ICON(Quilladin, 1), + .palette = gMonPalette_Quilladin, + .shinyPalette = gMonShinyPalette_Quilladin, + .iconSprite = gMonIcon_Quilladin, + .iconPalIndex = 1, FOOTPRINT(Quilladin) - LEARNSETS(Quilladin), + .levelUpLearnset = sQuilladinLevelUpLearnset, + .teachableLearnset = sQuilladinTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_CHESNAUGHT}), }, @@ -134,17 +144,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(Chesnaught, 64, 64), + .frontPic = gMonFrontPic_Chesnaught, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Chesnaught, .frontAnimId = ANIM_GROW_IN_STAGES, - BACK_PIC(Chesnaught, 64, 56), + .backPic = gMonBackPic_Chesnaught, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 10, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Chesnaught), - ICON(Chesnaught, 1), + .palette = gMonPalette_Chesnaught, + .shinyPalette = gMonShinyPalette_Chesnaught, + .iconSprite = gMonIcon_Chesnaught, + .iconPalIndex = 1, FOOTPRINT(Chesnaught) - LEARNSETS(Chesnaught), + .levelUpLearnset = sChesnaughtLevelUpLearnset, + .teachableLearnset = sChesnaughtTeachableLearnset, }, #endif //P_FAMILY_CHESPIN @@ -183,17 +198,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Fennekin, 40, 48), + .frontPic = gMonFrontPic_Fennekin, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Fennekin, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Fennekin, 56, 48), + .backPic = gMonBackPic_Fennekin, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Fennekin), - ICON(Fennekin, 0), + .palette = gMonPalette_Fennekin, + .shinyPalette = gMonShinyPalette_Fennekin, + .iconSprite = gMonIcon_Fennekin, + .iconPalIndex = 0, FOOTPRINT(Fennekin) - LEARNSETS(Fennekin), + .levelUpLearnset = sFennekinLevelUpLearnset, + .teachableLearnset = sFennekinTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_BRAIXEN}), }, @@ -231,17 +251,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Braixen, 48, 64), + .frontPic = gMonFrontPic_Braixen, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Braixen, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Braixen, 64, 56), + .backPic = gMonBackPic_Braixen, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 10, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Braixen), - ICON(Braixen, 0), + .palette = gMonPalette_Braixen, + .shinyPalette = gMonShinyPalette_Braixen, + .iconSprite = gMonIcon_Braixen, + .iconPalIndex = 0, FOOTPRINT(Braixen) - LEARNSETS(Braixen), + .levelUpLearnset = sBraixenLevelUpLearnset, + .teachableLearnset = sBraixenTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_DELPHOX}), }, @@ -279,17 +304,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Delphox, 64, 64), + .frontPic = gMonFrontPic_Delphox, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Delphox, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Delphox, 64, 64), + .backPic = gMonBackPic_Delphox, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(Delphox), - ICON(Delphox, 0), + .palette = gMonPalette_Delphox, + .shinyPalette = gMonShinyPalette_Delphox, + .iconSprite = gMonIcon_Delphox, + .iconPalIndex = 0, FOOTPRINT(Delphox) - LEARNSETS(Delphox), + .levelUpLearnset = sDelphoxLevelUpLearnset, + .teachableLearnset = sDelphoxTeachableLearnset, }, #endif //P_FAMILY_FENNEKIN @@ -328,17 +358,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Froakie, 40, 40), + .frontPic = gMonFrontPic_Froakie, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Froakie, .frontAnimId = ANIM_H_JUMPS, - BACK_PIC(Froakie, 56, 56), + .backPic = gMonBackPic_Froakie, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Froakie), - ICON(Froakie, 0), + .palette = gMonPalette_Froakie, + .shinyPalette = gMonShinyPalette_Froakie, + .iconSprite = gMonIcon_Froakie, + .iconPalIndex = 0, FOOTPRINT(Froakie) - LEARNSETS(Froakie), + .levelUpLearnset = sFroakieLevelUpLearnset, + .teachableLearnset = sFroakieTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_FROGADIER}), }, @@ -376,110 +411,178 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Frogadier, 56, 48), + .frontPic = gMonFrontPic_Frogadier, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Frogadier, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Frogadier, 64, 56), + .backPic = gMonBackPic_Frogadier, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(Frogadier), - ICON(Frogadier, 0), + .palette = gMonPalette_Frogadier, + .shinyPalette = gMonShinyPalette_Frogadier, + .iconSprite = gMonIcon_Frogadier, + .iconPalIndex = 0, FOOTPRINT(Frogadier) - LEARNSETS(Frogadier), + .levelUpLearnset = sFrogadierLevelUpLearnset, + .teachableLearnset = sFrogadierTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_GRENINJA}), }, -#define GRENINJA_NORMAL_MISC_INFO \ - .baseHP = 72, \ - .baseAttack = 95, \ - .baseDefense = 67, \ - .baseSpeed = 122, \ - .baseSpAttack = 103, \ - .baseSpDefense = 71, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 265 : 239,\ - .description = gGreninjaPokedexText, \ - FRONT_PIC(Greninja, 64, 56), \ - .frontPicYOffset = 7, \ - .frontAnimFrames = sAnims_Greninja, \ - BACK_PIC(Greninja, 64, 48), \ - .backPicYOffset = 11, \ - PALETTES(Greninja), \ - ICON(Greninja, 0) - -#define GRENINJA_MISC_INFO \ - .types = MON_TYPES(TYPE_WATER, TYPE_DARK), \ - .catchRate = 45, \ - .evYield_Speed = 3, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .bodyColor = BODY_COLOR_BLUE, \ - .noFlip = TRUE, \ - .speciesName = _("Greninja"), \ - .cryId = CRY_GRENINJA, \ - .natDexNum = NATIONAL_DEX_GRENINJA, \ - .categoryName = _("Ninja"), \ - .height = 15, \ - .weight = 400, \ - .pokemonScale = 268, \ - .pokemonOffset = 2, \ - .trainerScale = 271, \ - .trainerOffset = 0, \ - FOOTPRINT(Greninja) \ - LEARNSETS(Greninja), \ - .formSpeciesIdTable = sGreninjaFormSpeciesIdTable - [SPECIES_GRENINJA] = { - GRENINJA_MISC_INFO, - GRENINJA_NORMAL_MISC_INFO, + .baseHP = 72, + .baseAttack = 95, + .baseDefense = 67, + .baseSpeed = 122, + .baseSpAttack = 103, + .baseSpDefense = 71, + .types = MON_TYPES(TYPE_WATER, TYPE_DARK), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 265 : 239, + .evYield_Speed = 3, .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1), .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_PROTEAN }, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + .speciesName = _("Greninja"), + .cryId = CRY_GRENINJA, + .natDexNum = NATIONAL_DEX_GRENINJA, + .categoryName = _("Ninja"), + .height = 15, + .weight = 400, + .description = gGreninjaPokedexText, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Greninja, + .frontPicSize = MON_COORDS_SIZE(64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Greninja, .frontAnimId = ANIM_V_STRETCH, + .backPic = gMonBackPic_Greninja, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicYOffset = 11, .backAnimId = BACK_ANIM_JOLT_RIGHT, + .palette = gMonPalette_Greninja, + .shinyPalette = gMonShinyPalette_Greninja, + .iconSprite = gMonIcon_Greninja, + .iconPalIndex = 0, + FOOTPRINT(Greninja) + .levelUpLearnset = sGreninjaLevelUpLearnset, + .teachableLearnset = sGreninjaTeachableLearnset, + .formSpeciesIdTable = sGreninjaFormSpeciesIdTable, }, [SPECIES_GRENINJA_BATTLE_BOND] = { - GRENINJA_MISC_INFO, - GRENINJA_NORMAL_MISC_INFO, + .baseHP = 72, + .baseAttack = 95, + .baseDefense = 67, + .baseSpeed = 122, + .baseSpAttack = 103, + .baseSpDefense = 71, + .types = MON_TYPES(TYPE_WATER, TYPE_DARK), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 265 : 239, + .evYield_Speed = 3, .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_BATTLE_BOND, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + .speciesName = _("Greninja"), + .cryId = CRY_GRENINJA, + .natDexNum = NATIONAL_DEX_GRENINJA, + .categoryName = _("Ninja"), + .height = 15, + .weight = 400, + .description = gGreninjaPokedexText, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Greninja, + .frontPicSize = MON_COORDS_SIZE(64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Greninja, .frontAnimId = ANIM_V_STRETCH, + .backPic = gMonBackPic_Greninja, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicYOffset = 11, .backAnimId = BACK_ANIM_JOLT_RIGHT, + .palette = gMonPalette_Greninja, + .shinyPalette = gMonShinyPalette_Greninja, + .iconSprite = gMonIcon_Greninja, + .iconPalIndex = 0, + FOOTPRINT(Greninja) + .levelUpLearnset = sGreninjaLevelUpLearnset, + .teachableLearnset = sGreninjaTeachableLearnset, + .formSpeciesIdTable = sGreninjaFormSpeciesIdTable, .formChangeTable = sGreninjaBattleBondFormChangeTable, }, [SPECIES_GRENINJA_ASH] = { - GRENINJA_MISC_INFO, .baseHP = 72, .baseAttack = 145, .baseDefense = 67, .baseSpeed = 132, .baseSpAttack = 153, .baseSpDefense = 71, + .types = MON_TYPES(TYPE_WATER, TYPE_DARK), + .catchRate = 45, .expYield = 288, + .evYield_Speed = 3, .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_BATTLE_BOND, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + .speciesName = _("Greninja"), + .cryId = CRY_GRENINJA, + .natDexNum = NATIONAL_DEX_GRENINJA, + .categoryName = _("Ninja"), + .height = 15, + .weight = 400, .description = COMPOUND_STRING( "It appears and vanishes with a ninja's\n" "grace. It toys with its enemies using swift\n" "movements, while slicing them with throwing\n" "stars made of compressed water."), - FRONT_PIC(GreninjaAsh, 64, 64), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + .frontPic = gMonFrontPic_GreninjaAsh, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_GreninjaAsh, - BACK_PIC(GreninjaAsh, 64, 48), - .backPicYOffset = 11, - PALETTES(GreninjaAsh), - ICON(GreninjaAsh, 0), .frontAnimId = ANIM_V_STRETCH, + .backPic = gMonBackPic_GreninjaAsh, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicYOffset = 11, .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + .palette = gMonPalette_GreninjaAsh, + .shinyPalette = gMonShinyPalette_GreninjaAsh, + .iconSprite = gMonIcon_GreninjaAsh, + .iconPalIndex = 0, + FOOTPRINT(Greninja) + .levelUpLearnset = sGreninjaLevelUpLearnset, + .teachableLearnset = sGreninjaTeachableLearnset, + .formSpeciesIdTable = sGreninjaFormSpeciesIdTable, .formChangeTable = sGreninjaBattleBondFormChangeTable, }, #endif //P_FAMILY_FROAKIE @@ -519,17 +622,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Bunnelby, 48, 64), + .frontPic = gMonFrontPic_Bunnelby, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Bunnelby, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, - BACK_PIC(Bunnelby, 48, 64), + .backPic = gMonBackPic_Bunnelby, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Bunnelby), - ICON(Bunnelby, 2), + .palette = gMonPalette_Bunnelby, + .shinyPalette = gMonShinyPalette_Bunnelby, + .iconSprite = gMonIcon_Bunnelby, + .iconPalIndex = 2, FOOTPRINT(Bunnelby) - LEARNSETS(Bunnelby), + .levelUpLearnset = sBunnelbyLevelUpLearnset, + .teachableLearnset = sBunnelbyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_DIGGERSBY}), }, @@ -567,17 +675,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Diggersby, 64, 64), + .frontPic = gMonFrontPic_Diggersby, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Diggersby, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(Diggersby, 64, 64), + .backPic = gMonBackPic_Diggersby, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Diggersby), - ICON(Diggersby, 2), + .palette = gMonPalette_Diggersby, + .shinyPalette = gMonShinyPalette_Diggersby, + .iconSprite = gMonIcon_Diggersby, + .iconPalIndex = 2, FOOTPRINT(Diggersby) - LEARNSETS(Diggersby), + .levelUpLearnset = sDiggersbyLevelUpLearnset, + .teachableLearnset = sDiggersbyTeachableLearnset, }, #endif //P_FAMILY_BUNNELBY @@ -616,17 +729,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Fletchling, 40, 40), + .frontPic = gMonFrontPic_Fletchling, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Fletchling, .frontAnimId = ANIM_V_JUMPS_SMALL, - BACK_PIC(Fletchling, 64, 40), + .backPic = gMonBackPic_Fletchling, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 14, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Fletchling), - ICON(Fletchling, 2), + .palette = gMonPalette_Fletchling, + .shinyPalette = gMonShinyPalette_Fletchling, + .iconSprite = gMonIcon_Fletchling, + .iconPalIndex = 2, FOOTPRINT(Fletchling) - LEARNSETS(Fletchling), + .levelUpLearnset = sFletchlingLevelUpLearnset, + .teachableLearnset = sFletchlingTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_FLETCHINDER}), }, @@ -664,18 +782,23 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Fletchinder, 56, 48), + .frontPic = gMonFrontPic_Fletchinder, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Fletchinder, .frontAnimId = ANIM_V_SLIDE_SLOW, .enemyMonElevation = 9, - BACK_PIC(Fletchinder, 64, 48), + .backPic = gMonBackPic_Fletchinder, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Fletchinder), - ICON(Fletchinder, 2), + .palette = gMonPalette_Fletchinder, + .shinyPalette = gMonShinyPalette_Fletchinder, + .iconSprite = gMonIcon_Fletchinder, + .iconPalIndex = 2, FOOTPRINT(Fletchinder) - LEARNSETS(Fletchinder), + .levelUpLearnset = sFletchinderLevelUpLearnset, + .teachableLearnset = sFletchinderTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_TALONFLAME}), }, @@ -713,18 +836,23 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Talonflame, 64, 64), + .frontPic = gMonFrontPic_Talonflame, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Talonflame, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 7, - BACK_PIC(Talonflame, 64, 56), + .backPic = gMonBackPic_Talonflame, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Talonflame), - ICON(Talonflame, 2), + .palette = gMonPalette_Talonflame, + .shinyPalette = gMonShinyPalette_Talonflame, + .iconSprite = gMonIcon_Talonflame, + .iconPalIndex = 2, FOOTPRINT(Talonflame) - LEARNSETS(Talonflame), + .levelUpLearnset = sTalonflameLevelUpLearnset, + .teachableLearnset = sTalonflameTeachableLearnset, }, #endif //P_FAMILY_FLETCHLING @@ -763,18 +891,23 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Scatterbug, 32, 48), + .frontPic = gMonFrontPic_Scatterbug, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Scatterbug, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Scatterbug, 40, 56), + .backPic = gMonBackPic_Scatterbug, + .backPicSize = MON_COORDS_SIZE(40, 56), .backPicYOffset = 12, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Scatterbug), - ICON(Scatterbug, 1), + .palette = gMonPalette_Scatterbug, + .shinyPalette = gMonShinyPalette_Scatterbug, + .iconSprite = gMonIcon_Scatterbug, + .iconPalIndex = 1, FOOTPRINT(Scatterbug) - LEARNSETS(Scatterbug), .tmIlliterate = TRUE, + .levelUpLearnset = sScatterbugLevelUpLearnset, + .teachableLearnset = sScatterbugTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 9, SPECIES_SPEWPA}), }, @@ -812,18 +945,23 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Spewpa, 40, 48), + .frontPic = gMonFrontPic_Spewpa, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Spewpa, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Spewpa, 48, 48), + .backPic = gMonBackPic_Spewpa, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 12, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Spewpa), - ICON(Spewpa, 1), + .palette = gMonPalette_Spewpa, + .shinyPalette = gMonShinyPalette_Spewpa, + .iconSprite = gMonIcon_Spewpa, + .iconPalIndex = 1, FOOTPRINT(Spewpa) - LEARNSETS(Spewpa), .tmIlliterate = TRUE, + .levelUpLearnset = sSpewpaLevelUpLearnset, + .teachableLearnset = sSpewpaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 12, SPECIES_VIVILLON_ICY_SNOW}), }, @@ -857,18 +995,23 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 4, \ .trainerScale = 256, \ .trainerOffset = 0, \ - FRONT_PIC(Vivillon ##form, 64, 64), \ + .frontPic = gMonFrontPic_Vivillon ##form, \ + .frontPicSize = MON_COORDS_SIZE(64, 64), \ .frontPicYOffset = 0, \ .frontAnimFrames = sAnims_Vivillon, \ .frontAnimId = ANIM_ZIGZAG_SLOW, \ .enemyMonElevation = 9, \ - BACK_PIC(Vivillon ##form, 64, 64), \ + .backPic = gMonBackPic_Vivillon ##form, \ + .backPicSize = MON_COORDS_SIZE(64, 64), \ .backPicYOffset = 0, \ .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, \ - PALETTES(Vivillon ##form), \ - ICON(Vivillon ##form, iconPal), \ + .palette = gMonPalette_Vivillon ##form, \ + .shinyPalette = gMonShinyPalette_Vivillon ##form, \ + .iconSprite = gMonIcon_Vivillon ##form, \ + .iconPalIndex = iconPal, \ FOOTPRINT(Vivillon) \ - LEARNSETS(Vivillon), \ + .levelUpLearnset = sVivillonLevelUpLearnset, \ + .teachableLearnset = sVivillonTeachableLearnset, \ .formSpeciesIdTable = sVivillonFormSpeciesIdTable [SPECIES_VIVILLON_ICY_SNOW] = @@ -1088,17 +1231,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Litleo, 40, 48), + .frontPic = gMonFrontPic_Litleo, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Litleo, .frontAnimId = ANIM_BACK_AND_LUNGE, - BACK_PIC(Litleo, 56, 48), + .backPic = gMonBackPic_Litleo, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 9, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Litleo), - ICON(Litleo, 2), + .palette = gMonPalette_Litleo, + .shinyPalette = gMonShinyPalette_Litleo, + .iconSprite = gMonIcon_Litleo, + .iconPalIndex = 2, FOOTPRINT(Litleo) - LEARNSETS(Litleo), + .levelUpLearnset = sLitleoLevelUpLearnset, + .teachableLearnset = sLitleoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_PYROAR}), }, @@ -1136,20 +1284,28 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Pyroar, 64, 64), - FRONT_PIC_FEMALE(Pyroar, 64, 64), + .frontPic = gMonFrontPic_Pyroar, + .frontPicFemale = gMonFrontPic_PyroarF, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Pyroar, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Pyroar, 64, 64), - BACK_PIC_FEMALE(Pyroar, 64, 64), + .backPic = gMonBackPic_Pyroar, + .backPicFemale = gMonBackPic_PyroarF, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicSizeFemale = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_H_STRETCH, - PALETTES(Pyroar), - ICON(Pyroar, 2), - ICON_FEMALE(Pyroar, 2), + .palette = gMonPalette_Pyroar, + .shinyPalette = gMonShinyPalette_Pyroar, + .iconSprite = gMonIcon_Pyroar, + .iconSpriteFemale = gMonIcon_PyroarF, + .iconPalIndex = 2, + .iconPalIndexFemale = 2, FOOTPRINT(Pyroar) - LEARNSETS(Pyroar), + .levelUpLearnset = sPyroarLevelUpLearnset, + .teachableLearnset = sPyroarTeachableLearnset, }, #endif //P_FAMILY_LITLEO @@ -1182,18 +1338,23 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 24, \ .trainerScale = 256, \ .trainerOffset = 0, \ - FRONT_PIC(Flabebe, 48, 56), \ + .frontPic = gMonFrontPic_Flabebe, \ + .frontPicSize = MON_COORDS_SIZE(48, 56), \ .frontPicYOffset = 6, \ .frontAnimFrames = sAnims_Flabebe, \ .frontAnimId = ANIM_H_SLIDE_SLOW, \ .enemyMonElevation = 6, \ - BACK_PIC(Flabebe, 64, 40), \ + .backPic = gMonBackPic_Flabebe, \ + .backPicSize = MON_COORDS_SIZE(64, 40), \ .backPicYOffset = 12, \ .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, \ - PALETTES(Flabebe##Form##Flower), \ - ICON(Flabebe##Form##Flower, iconPal), \ + .palette = gMonPalette_Flabebe##Form##Flower, \ + .shinyPalette = gMonShinyPalette_Flabebe##Form##Flower, \ + .iconSprite = gMonIcon_Flabebe##Form##Flower, \ + .iconPalIndex = iconPal, \ FOOTPRINT(Flabebe) \ - LEARNSETS(Flabebe), \ + .levelUpLearnset = sFlabebeLevelUpLearnset, \ + .teachableLearnset = sFlabebeTeachableLearnset, \ .formSpeciesIdTable = sFlabebeFormSpeciesIdTable, \ .evolutions = EVOLUTION({EVO_LEVEL, 19, SPECIES_FLOETTE_ ##FORM##_FLOWER}) @@ -1265,8 +1426,10 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .frontAnimFrames = sAnims_Floette, \ .frontAnimId = ANIM_V_SLIDE_WOBBLE, \ .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, \ - PALETTES(Floette ##form##Flower), \ - ICON(Floette##form##Flower, iconPal), \ + .palette = gMonPalette_Floette ##form##Flower, \ + .shinyPalette = gMonShinyPalette_Floette ##form##Flower, \ + .iconSprite = gMonIcon_Floette##form##Flower, \ + .iconPalIndex = iconPal, \ FOOTPRINT(Floette) \ .formSpeciesIdTable = sFloetteFormSpeciesIdTable @@ -1280,12 +1443,15 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .expYield = 130, \ .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY), \ .cryId = CRY_FLOETTE, \ - FRONT_PIC(Floette, 48, 64), \ + .frontPic = gMonFrontPic_Floette, \ + .frontPicSize = MON_COORDS_SIZE(48, 64), \ .frontPicYOffset = 3, \ .enemyMonElevation = 4, \ - BACK_PIC(Floette, 64, 64), \ + .backPic = gMonBackPic_Floette, \ + .backPicSize = MON_COORDS_SIZE(64, 64), \ .backPicYOffset = 2, \ - LEARNSETS(Floette), \ + .levelUpLearnset = sFloetteLevelUpLearnset, \ + .teachableLearnset = sFloetteTeachableLearnset, \ .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_ ##FORM##_FLOWER}),\ FLOETTE_MISC_INFO(form, FORM, iconPal) @@ -1345,18 +1511,21 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .baseSpDefense = 128, .expYield = 243, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .cryId = CRY_FLOETTE_ETERNAL_FLOWER, .description = COMPOUND_STRING( "The flower it's holding can no\n" "longer be found blooming anywhere. It's\n" "also thought to contain terrifying\n" "power."), - .cryId = CRY_FLOETTE_ETERNAL_FLOWER, - FRONT_PIC(FloetteEternalFlower, 64, 64), + .frontPic = gMonFrontPic_FloetteEternalFlower, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .enemyMonElevation = 4, - BACK_PIC(FloetteEternalFlower, 64, 64), + .backPic = gMonBackPic_FloetteEternalFlower, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, - LEARNSETS(FloetteEternalFlower), + .levelUpLearnset = sFloetteEternalFlowerLevelUpLearnset, + .teachableLearnset = sFloetteEternalFlowerTeachableLearnset, }, #define FLORGES_MISC_INFO(Form, iconPal) \ @@ -1387,17 +1556,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 7, \ .trainerScale = 256, \ .trainerOffset = 0, \ - FRONT_PIC(Florges, 64, 64), \ + .frontPic = gMonFrontPic_Florges, \ + .frontPicSize = MON_COORDS_SIZE(64, 64), \ .frontPicYOffset = 0, \ .frontAnimFrames = sAnims_Florges, \ .frontAnimId = ANIM_V_SLIDE_SLOW, \ - BACK_PIC(Florges, 64, 48), \ + .backPic = gMonBackPic_Florges, \ + .backPicSize = MON_COORDS_SIZE(64, 48), \ .backPicYOffset = 9, \ .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, \ - PALETTES(Florges##Form##Flower), \ - ICON(Florges##Form##Flower, iconPal), \ + .palette = gMonPalette_Florges##Form##Flower, \ + .shinyPalette = gMonShinyPalette_Florges##Form##Flower, \ + .iconSprite = gMonIcon_Florges##Form##Flower, \ + .iconPalIndex = iconPal, \ FOOTPRINT(Florges) \ - LEARNSETS(Florges), \ + .levelUpLearnset = sFlorgesLevelUpLearnset, \ + .teachableLearnset = sFlorgesTeachableLearnset, \ .formSpeciesIdTable = sFlorgesFormSpeciesIdTable [SPECIES_FLORGES_RED_FLOWER] = @@ -1481,17 +1655,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Skiddo, 48, 56), + .frontPic = gMonFrontPic_Skiddo, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Skiddo, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Skiddo, 56, 48), + .backPic = gMonBackPic_Skiddo, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Skiddo), - ICON(Skiddo, 1), + .palette = gMonPalette_Skiddo, + .shinyPalette = gMonShinyPalette_Skiddo, + .iconSprite = gMonIcon_Skiddo, + .iconPalIndex = 1, FOOTPRINT(Skiddo) - LEARNSETS(Skiddo), + .levelUpLearnset = sSkiddoLevelUpLearnset, + .teachableLearnset = sSkiddoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_GOGOAT}), }, @@ -1529,17 +1708,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 0, .trainerScale = 290, .trainerOffset = 1, - FRONT_PIC(Gogoat, 56, 64), + .frontPic = gMonFrontPic_Gogoat, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Gogoat, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Gogoat, 64, 56), + .backPic = gMonBackPic_Gogoat, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, - PALETTES(Gogoat), - ICON(Gogoat, 1), + .palette = gMonPalette_Gogoat, + .shinyPalette = gMonShinyPalette_Gogoat, + .iconSprite = gMonIcon_Gogoat, + .iconPalIndex = 1, FOOTPRINT(Gogoat) - LEARNSETS(Gogoat), + .levelUpLearnset = sGogoatLevelUpLearnset, + .teachableLearnset = sGogoatTeachableLearnset, }, #endif //P_FAMILY_SKIDDO @@ -1579,17 +1763,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pancham, 32, 48), + .frontPic = gMonFrontPic_Pancham, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Pancham, .frontAnimId = ANIM_H_STRETCH, - BACK_PIC(Pancham, 48, 56), + .backPic = gMonBackPic_Pancham, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - PALETTES(Pancham), - ICON(Pancham, 1), + .palette = gMonPalette_Pancham, + .shinyPalette = gMonShinyPalette_Pancham, + .iconSprite = gMonIcon_Pancham, + .iconPalIndex = 1, FOOTPRINT(Pancham) - LEARNSETS(Pancham), + .levelUpLearnset = sPanchamLevelUpLearnset, + .teachableLearnset = sPanchamTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_DARK_TYPE_MON_IN_PARTY, 32, SPECIES_PANGORO}), }, @@ -1628,158 +1817,86 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 0, .trainerScale = 365, .trainerOffset = 7, - FRONT_PIC(Pangoro, 64, 64), + .frontPic = gMonFrontPic_Pangoro, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Pangoro, .frontAnimId = ANIM_BACK_AND_LUNGE, - BACK_PIC(Pangoro, 64, 56), + .backPic = gMonBackPic_Pangoro, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Pangoro), - ICON(Pangoro, 1), + .palette = gMonPalette_Pangoro, + .shinyPalette = gMonShinyPalette_Pangoro, + .iconSprite = gMonIcon_Pangoro, + .iconPalIndex = 1, FOOTPRINT(Pangoro) - LEARNSETS(Pangoro), + .levelUpLearnset = sPangoroLevelUpLearnset, + .teachableLearnset = sPangoroTeachableLearnset, }, #endif //P_FAMILY_PANCHAM #if P_FAMILY_FURFROU -#define FURFROU_MISC_INFO \ - .baseHP = 75, \ - .baseAttack = 80, \ - .baseDefense = 60, \ - .baseSpeed = 102, \ - .baseSpAttack = 65, \ - .baseSpDefense = 90, \ - .types = MON_TYPES(TYPE_NORMAL), \ - .catchRate = 160, \ - .expYield = 165, \ - .evYield_Speed = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .abilities = { ABILITY_FUR_COAT, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_WHITE, \ - .speciesName = _("Furfrou"), \ - .cryId = CRY_FURFROU, \ - .natDexNum = NATIONAL_DEX_FURFROU, \ - .categoryName = _("Poodle"), \ - .height = 12, \ - .weight = 280, \ - .description = gFurfrouPokedexText, \ - .pokemonScale = 282, \ - .pokemonOffset = 4, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .frontAnimFrames = sAnims_Furfrou, \ - .frontAnimId = ANIM_H_SLIDE, \ - .backAnimId = BACK_ANIM_V_STRETCH, \ - FOOTPRINT(Furfrou) \ - LEARNSETS(Furfrou), \ - .formSpeciesIdTable = sFurfrouFormSpeciesIdTable +#define FURFROU_MISC_INFO(_form, _noFlip, frontWidth, frontYOffset, backWidth, backYOffset, _iconIdx) \ + { \ + .baseHP = 75, \ + .baseAttack = 80, \ + .baseDefense = 60, \ + .baseSpeed = 102, \ + .baseSpAttack = 65, \ + .baseSpDefense = 90, \ + .types = MON_TYPES(TYPE_NORMAL), \ + .catchRate = 160, \ + .expYield = 165, \ + .evYield_Speed = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ + .abilities = { ABILITY_FUR_COAT, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_WHITE, \ + .noFlip = _noFlip, \ + .speciesName = _("Furfrou"), \ + .cryId = CRY_FURFROU, \ + .natDexNum = NATIONAL_DEX_FURFROU, \ + .categoryName = _("Poodle"), \ + .height = 12, \ + .weight = 280, \ + .description = gFurfrouPokedexText, \ + .pokemonScale = 282, \ + .pokemonOffset = 4, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontPic = gMonFrontPic_Furfrou##_form, \ + .frontPicSize = MON_COORDS_SIZE(frontWidth, 64), \ + .frontPicYOffset = frontYOffset, \ + .frontAnimFrames = sAnims_Furfrou, \ + .frontAnimId = ANIM_H_SLIDE, \ + .backPic = gMonBackPic_Furfrou##_form, \ + .backPicSize = MON_COORDS_SIZE(backWidth, 64), \ + .backPicYOffset = backYOffset, \ + .backAnimId = BACK_ANIM_V_STRETCH, \ + .palette = gMonPalette_Furfrou##_form, \ + .shinyPalette = gMonShinyPalette_Furfrou##_form, \ + .iconSprite = gMonIcon_Furfrou##_form, \ + .iconPalIndex = _iconIdx, \ + FOOTPRINT(Furfrou) \ + .levelUpLearnset = sFurfrouLevelUpLearnset, \ + .teachableLearnset = sFurfrouTeachableLearnset, \ + .formSpeciesIdTable = sFurfrouFormSpeciesIdTable, \ + } - [SPECIES_FURFROU_NATURAL] = - { - FURFROU_MISC_INFO, - FRONT_PIC(FurfrouNatural, 48, 64), - .frontPicYOffset = 3, - BACK_PIC(FurfrouNatural, 56, 64), - .backPicYOffset = 0, - PALETTES(FurfrouNatural), - ICON(FurfrouNatural, 0), - }, - [SPECIES_FURFROU_HEART_TRIM] = - { - FURFROU_MISC_INFO, - FRONT_PIC(FurfrouHeartTrim, 56, 64), - .frontPicYOffset = 2, - BACK_PIC(FurfrouHeartTrim, 56, 64), - .backPicYOffset = 1, - PALETTES(FurfrouHeartTrim), - ICON(FurfrouHeartTrim, 0), - }, - [SPECIES_FURFROU_STAR_TRIM] = - { - FURFROU_MISC_INFO, - FRONT_PIC(FurfrouStarTrim, 56, 64), - .frontPicYOffset = 2, - BACK_PIC(FurfrouStarTrim, 64, 64), - .backPicYOffset = 1, - PALETTES(FurfrouStarTrim), - ICON(FurfrouStarTrim, 0), - }, - [SPECIES_FURFROU_DIAMOND_TRIM] = - { - FURFROU_MISC_INFO, - FRONT_PIC(FurfrouDiamondTrim, 48, 64), - .frontPicYOffset = 2, - BACK_PIC(FurfrouDiamondTrim, 56, 64), - .backPicYOffset = 1, - PALETTES(FurfrouDiamondTrim), - ICON(FurfrouDiamondTrim, 0), - }, - [SPECIES_FURFROU_DEBUTANTE_TRIM] = - { - FURFROU_MISC_INFO, - .noFlip = TRUE, - FRONT_PIC(FurfrouDebutanteTrim, 48, 64), - .frontPicYOffset = 2, - BACK_PIC(FurfrouDebutanteTrim, 56, 64), - .backPicYOffset = 1, - PALETTES(FurfrouDebutanteTrim), - ICON(FurfrouDebutanteTrim, 2), - }, - [SPECIES_FURFROU_MATRON_TRIM] = - { - FURFROU_MISC_INFO, - FRONT_PIC(FurfrouMatronTrim, 48, 64), - .frontPicYOffset = 2, - BACK_PIC(FurfrouMatronTrim, 56, 64), - .backPicYOffset = 1, - PALETTES(FurfrouMatronTrim), - ICON(FurfrouMatronTrim, 2), - }, - [SPECIES_FURFROU_DANDY_TRIM] = - { - FURFROU_MISC_INFO, - FRONT_PIC(FurfrouDandyTrim, 48, 64), - .frontPicYOffset = 2, - BACK_PIC(FurfrouDandyTrim, 56, 64), - .backPicYOffset = 1, - PALETTES(FurfrouDandyTrim), - ICON(FurfrouDandyTrim, 1), - }, - [SPECIES_FURFROU_LA_REINE_TRIM] = - { - FURFROU_MISC_INFO, - FRONT_PIC(FurfrouLaReineTrim, 48, 64), - .frontPicYOffset = 2, - BACK_PIC(FurfrouLaReineTrim, 56, 64), - .backPicYOffset = 1, - PALETTES(FurfrouLaReineTrim), - ICON(FurfrouLaReineTrim, 0), - }, - [SPECIES_FURFROU_KABUKI_TRIM] = - { - FURFROU_MISC_INFO, - FRONT_PIC(FurfrouKabukiTrim, 56, 64), - .frontPicYOffset = 2, - BACK_PIC(FurfrouKabukiTrim, 56, 64), - .backPicYOffset = 1, - PALETTES(FurfrouKabukiTrim), - ICON(FurfrouKabukiTrim, 0), - }, - [SPECIES_FURFROU_PHARAOH_TRIM] = - { - FURFROU_MISC_INFO, - FRONT_PIC(FurfrouPharaohTrim, 48, 64), - .frontPicYOffset = 2, - BACK_PIC(FurfrouPharaohTrim, 56, 64), - .backPicYOffset = 1, - PALETTES(FurfrouPharaohTrim), - ICON(FurfrouPharaohTrim, 0), - }, + [SPECIES_FURFROU_NATURAL] = FURFROU_MISC_INFO(Natural, FALSE, 48, 3, 56, 0, 0), + [SPECIES_FURFROU_HEART_TRIM] = FURFROU_MISC_INFO(HeartTrim, FALSE, 56, 2, 56, 1, 0), + [SPECIES_FURFROU_STAR_TRIM] = FURFROU_MISC_INFO(StarTrim, FALSE, 56, 2, 64, 1, 0), + [SPECIES_FURFROU_DIAMOND_TRIM] = FURFROU_MISC_INFO(DiamondTrim, FALSE, 48, 2, 56, 1, 0), + [SPECIES_FURFROU_DEBUTANTE_TRIM] = FURFROU_MISC_INFO(DebutanteTrim, TRUE, 48, 2, 56, 1, 2), + [SPECIES_FURFROU_MATRON_TRIM] = FURFROU_MISC_INFO(MatronTrim, FALSE, 48, 2, 56, 1, 2), + [SPECIES_FURFROU_DANDY_TRIM] = FURFROU_MISC_INFO(DandyTrim, FALSE, 48, 2, 56, 1, 1), + [SPECIES_FURFROU_LA_REINE_TRIM] = FURFROU_MISC_INFO(LaReineTrim, FALSE, 48, 2, 56, 1, 0), + [SPECIES_FURFROU_KABUKI_TRIM] = FURFROU_MISC_INFO(KabukiTrim, FALSE, 56, 2, 56, 1, 0), + [SPECIES_FURFROU_PHARAOH_TRIM] = FURFROU_MISC_INFO(PharaohTrim, FALSE, 48, 2, 56, 1, 0), #endif //P_FAMILY_FURFROU #if P_FAMILY_ESPURR @@ -1817,89 +1934,130 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Espurr, 32, 48), + .frontPic = gMonFrontPic_Espurr, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Espurr, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Espurr, 56, 56), + .backPic = gMonBackPic_Espurr, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Espurr), - ICON(Espurr, 2), + .palette = gMonPalette_Espurr, + .shinyPalette = gMonShinyPalette_Espurr, + .iconSprite = gMonIcon_Espurr, + .iconPalIndex = 2, FOOTPRINT(Espurr) - LEARNSETS(Espurr), + .levelUpLearnset = sEspurrLevelUpLearnset, + .teachableLearnset = sEspurrTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_MALE, 25, SPECIES_MEOWSTIC_MALE}, {EVO_LEVEL_FEMALE, 25, SPECIES_MEOWSTIC_FEMALE}), }, -#define MEOWSTIC_MISC_INFO \ - .baseHP = 74, \ - .baseAttack = 48, \ - .baseDefense = 76, \ - .baseSpeed = 104, \ - .baseSpAttack = 83, \ - .baseSpDefense = 81, \ - .types = MON_TYPES(TYPE_PSYCHIC), \ - .catchRate = 75, \ - .expYield = 163, \ - .evYield_Speed = 2, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .speciesName = _("Meowstic"), \ - .cryId = CRY_MEOWSTIC, \ - .natDexNum = NATIONAL_DEX_MEOWSTIC, \ - .categoryName = _("Constraint"), \ - .height = 6, \ - .weight = 85, \ - .pokemonScale = 422, \ - .pokemonOffset = 12, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .frontAnimFrames = sAnims_Meowstic, \ - .frontAnimId = ANIM_GROW_VIBRATE, \ - .backPicYOffset = 9, \ - .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, \ - FOOTPRINT(Meowstic) \ - .formSpeciesIdTable = sMeowsticFormSpeciesIdTable - [SPECIES_MEOWSTIC_MALE] = { - MEOWSTIC_MISC_INFO, + .baseHP = 74, + .baseAttack = 48, + .baseDefense = 76, + .baseSpeed = 104, + .baseSpAttack = 83, + .baseSpDefense = 81, + .types = MON_TYPES(TYPE_PSYCHIC), + .catchRate = 75, + .expYield = 163, + .evYield_Speed = 2, .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_KEEN_EYE, ABILITY_INFILTRATOR, ABILITY_PRANKSTER }, .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Meowstic"), + .cryId = CRY_MEOWSTIC, + .natDexNum = NATIONAL_DEX_MEOWSTIC, + .categoryName = _("Constraint"), + .height = 6, + .weight = 85, .description = COMPOUND_STRING( "The defensive instinct of the\n" "males is strong. It's when they're\n" "protecting themselves or their partners\n" "that they unleash their full power."), - FRONT_PIC(MeowsticMale, 48, 64), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_MeowsticMale, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 3, - BACK_PIC(MeowsticMale, 64, 64), - PALETTES(MeowsticMale), - ICON(MeowsticMale, 0), - LEARNSETS(MeowsticMale), + .frontAnimFrames = sAnims_Meowstic, + .frontAnimId = ANIM_GROW_VIBRATE, + .backPic = gMonBackPic_MeowsticMale, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + .palette = gMonPalette_MeowsticMale, + .shinyPalette = gMonShinyPalette_MeowsticMale, + .iconSprite = gMonIcon_MeowsticMale, + .iconPalIndex = 0, + FOOTPRINT(Meowstic) + .levelUpLearnset = sMeowsticMaleLevelUpLearnset, + .teachableLearnset = sMeowsticMaleTeachableLearnset, + .formSpeciesIdTable = sMeowsticFormSpeciesIdTable, }, [SPECIES_MEOWSTIC_FEMALE] = { - MEOWSTIC_MISC_INFO, + .baseHP = 74, + .baseAttack = 48, + .baseDefense = 76, + .baseSpeed = 104, + .baseSpAttack = 83, + .baseSpDefense = 81, + .types = MON_TYPES(TYPE_PSYCHIC), + .catchRate = 75, + .expYield = 163, + .evYield_Speed = 2, .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_KEEN_EYE, ABILITY_INFILTRATOR, ABILITY_COMPETITIVE }, .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Meowstic"), + .cryId = CRY_MEOWSTIC, + .natDexNum = NATIONAL_DEX_MEOWSTIC, + .categoryName = _("Constraint"), + .height = 6, + .weight = 85, .description = COMPOUND_STRING( "Females are a bit more selfish and\n" "aggressive than males. If they\n" "don't get what they want, they will\n" "torment you with their psychic abilities."), - FRONT_PIC(MeowsticFemale, 56, 64), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_MeowsticFemale, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 2, - BACK_PIC(MeowsticFemale, 48, 64), - PALETTES(MeowsticFemale), - ICON(MeowsticFemale, 0), - LEARNSETS(MeowsticFemale), + .frontAnimFrames = sAnims_Meowstic, + .frontAnimId = ANIM_GROW_VIBRATE, + .backPic = gMonBackPic_MeowsticFemale, + .backPicSize = MON_COORDS_SIZE(48, 64), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + .palette = gMonPalette_MeowsticFemale, + .shinyPalette = gMonShinyPalette_MeowsticFemale, + .iconSprite = gMonIcon_MeowsticFemale, + .iconPalIndex = 0, + FOOTPRINT(Meowstic) + .levelUpLearnset = sMeowsticFemaleLevelUpLearnset, + .teachableLearnset = sMeowsticFemaleTeachableLearnset, + .formSpeciesIdTable = sMeowsticFormSpeciesIdTable, }, #endif //P_FAMILY_ESPURR @@ -1938,18 +2096,23 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Honedge, 64, 56), + .frontPic = gMonFrontPic_Honedge, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Honedge, .frontAnimId = ANIM_SWING_CONVEX, .enemyMonElevation = 4, - BACK_PIC(Honedge, 48, 56), + .backPic = gMonBackPic_Honedge, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 4, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Honedge), - ICON(Honedge, 2), + .palette = gMonPalette_Honedge, + .shinyPalette = gMonShinyPalette_Honedge, + .iconSprite = gMonIcon_Honedge, + .iconPalIndex = 2, FOOTPRINT(Honedge) - LEARNSETS(Honedge), + .levelUpLearnset = sHonedgeLevelUpLearnset, + .teachableLearnset = sHonedgeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_DOUBLADE}), }, @@ -1987,86 +2150,95 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Doublade, 64, 64), + .frontPic = gMonFrontPic_Doublade, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Doublade, .frontAnimId = ANIM_GROW_VIBRATE, .enemyMonElevation = 5, - BACK_PIC(Doublade, 64, 64), + .backPic = gMonBackPic_Doublade, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Doublade), - ICON(Doublade, 2), + .palette = gMonPalette_Doublade, + .shinyPalette = gMonShinyPalette_Doublade, + .iconSprite = gMonIcon_Doublade, + .iconPalIndex = 2, FOOTPRINT(Doublade) - LEARNSETS(Doublade), + .levelUpLearnset = sDoubladeLevelUpLearnset, + .teachableLearnset = sDoubladeTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_AEGISLASH_SHIELD}), }, -#define AEGISLASH_MISC_INFO \ - .types = MON_TYPES(TYPE_STEEL, TYPE_GHOST), \ - .catchRate = 45, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 250 : 234,\ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), \ - .abilities = { ABILITY_STANCE_CHANGE, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_BROWN, \ - .speciesName = _("Aegislash"), \ - .cryId = CRY_AEGISLASH, \ - .natDexNum = NATIONAL_DEX_AEGISLASH, \ - .categoryName = _("Royal Sword"), \ - .height = 17, \ - .weight = 530, \ - .pokemonScale = 259, \ - .pokemonOffset = 0, \ - .trainerScale = 290, \ - .trainerOffset = 1, \ - FOOTPRINT(Aegislash) \ - LEARNSETS(Aegislash), \ - .formSpeciesIdTable = sAegislashFormSpeciesIdTable, \ - .formChangeTable = sAegislashFormChangeTable - #define AEGISLASH_MAIN_STAT (P_UPDATED_STATS >= GEN_8 ? 140 : 150) [SPECIES_AEGISLASH_SHIELD] = { - AEGISLASH_MISC_INFO, .baseHP = 60, .baseAttack = 50, .baseDefense = AEGISLASH_MAIN_STAT, .baseSpeed = 60, .baseSpAttack = 50, .baseSpDefense = AEGISLASH_MAIN_STAT, + .types = MON_TYPES(TYPE_STEEL, TYPE_GHOST), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 250 : 234, .evYield_Defense = 2, .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + .abilities = { ABILITY_STANCE_CHANGE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Aegislash"), + .cryId = CRY_AEGISLASH, + .natDexNum = NATIONAL_DEX_AEGISLASH, + .categoryName = _("Royal Sword"), + .height = 17, + .weight = 530, .description = COMPOUND_STRING( "In this defensive stance,\n" "Aegislash uses its steel body and a force\n" "field of spectral power to reduce the\n" "damage of any attack."), - FRONT_PIC(AegislashShield, 56, 64), + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, + .frontPic = gMonFrontPic_AegislashShield, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_AegislashShield, .frontAnimId = ANIM_H_VIBRATE, .enemyMonElevation = 3, - BACK_PIC(AegislashShield, 64, 64), + .backPic = gMonBackPic_AegislashShield, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 9, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(AegislashShield), - ICON(AegislashShield, 2), + .palette = gMonPalette_AegislashShield, + .shinyPalette = gMonShinyPalette_AegislashShield, + .iconSprite = gMonIcon_AegislashShield, + .iconPalIndex = 2, + FOOTPRINT(Aegislash) + .levelUpLearnset = sAegislashLevelUpLearnset, + .teachableLearnset = sAegislashTeachableLearnset, + .formSpeciesIdTable = sAegislashFormSpeciesIdTable, + .formChangeTable = sAegislashFormChangeTable, }, [SPECIES_AEGISLASH_BLADE] = { - AEGISLASH_MISC_INFO, .baseHP = 60, .baseAttack = AEGISLASH_MAIN_STAT, .baseDefense = 50, .baseSpeed = 60, .baseSpAttack = AEGISLASH_MAIN_STAT, .baseSpDefense = 50, + .types = MON_TYPES(TYPE_STEEL, TYPE_GHOST), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 250 : 234, #if P_UPDATED_EVS >= GEN_7 .evYield_Attack = 2, .evYield_SpAttack = 1, @@ -2074,21 +2246,47 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .evYield_Defense = 2, .evYield_SpDefense = 1, #endif + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + .abilities = { ABILITY_STANCE_CHANGE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Aegislash"), + .cryId = CRY_AEGISLASH, + .natDexNum = NATIONAL_DEX_AEGISLASH, + .categoryName = _("Royal Sword"), + .height = 17, + .weight = 530, .description = COMPOUND_STRING( "Once upon a time, a king with an\n" "Aegislash reigned over the land. His\n" "Pokémon eventually drained him of\n" "life, and his kingdom fell with him."), - FRONT_PIC(AegislashBlade, 64, 64), + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, + .frontPic = gMonFrontPic_AegislashBlade, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_AegislashBlade, .frontAnimId = ANIM_CIRCLE_C_CLOCKWISE_SLOW, .enemyMonElevation = 3, - BACK_PIC(AegislashBlade, 64, 64), + .backPic = gMonBackPic_AegislashBlade, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 9, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(AegislashBlade), - ICON(AegislashBlade, 2), + .palette = gMonPalette_AegislashBlade, + .shinyPalette = gMonShinyPalette_AegislashBlade, + .iconSprite = gMonIcon_AegislashBlade, + .iconPalIndex = 2, + FOOTPRINT(Aegislash) + .levelUpLearnset = sAegislashLevelUpLearnset, + .teachableLearnset = sAegislashTeachableLearnset, + .formSpeciesIdTable = sAegislashFormSpeciesIdTable, + .formChangeTable = sAegislashFormChangeTable, }, #endif //P_FAMILY_HONEDGE @@ -2127,18 +2325,23 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Spritzee, 48, 48), + .frontPic = gMonFrontPic_Spritzee, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Spritzee, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 14, - BACK_PIC(Spritzee, 56, 48), + .backPic = gMonBackPic_Spritzee, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Spritzee), - ICON(Spritzee, 0), + .palette = gMonPalette_Spritzee, + .shinyPalette = gMonShinyPalette_Spritzee, + .iconSprite = gMonIcon_Spritzee, + .iconPalIndex = 0, FOOTPRINT(Spritzee) - LEARNSETS(Spritzee), + .levelUpLearnset = sSpritzeeLevelUpLearnset, + .teachableLearnset = sSpritzeeTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}, {EVO_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}), }, @@ -2177,17 +2380,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Aromatisse, 48, 56), + .frontPic = gMonFrontPic_Aromatisse, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Aromatisse, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Aromatisse, 64, 64), + .backPic = gMonBackPic_Aromatisse, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Aromatisse), - ICON(Aromatisse, 0), + .palette = gMonPalette_Aromatisse, + .shinyPalette = gMonShinyPalette_Aromatisse, + .iconSprite = gMonIcon_Aromatisse, + .iconPalIndex = 0, FOOTPRINT(Aromatisse) - LEARNSETS(Aromatisse), + .levelUpLearnset = sAromatisseLevelUpLearnset, + .teachableLearnset = sAromatisseTeachableLearnset, }, #endif //P_FAMILY_SPRITZEE @@ -2226,17 +2434,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Swirlix, 40, 40), + .frontPic = gMonFrontPic_Swirlix, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Swirlix, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, - BACK_PIC(Swirlix, 56, 40), + .backPic = gMonBackPic_Swirlix, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_H_SPRING, - PALETTES(Swirlix), - ICON(Swirlix, 1), + .palette = gMonPalette_Swirlix, + .shinyPalette = gMonShinyPalette_Swirlix, + .iconSprite = gMonIcon_Swirlix, + .iconPalIndex = 1, FOOTPRINT(Swirlix) - LEARNSETS(Swirlix), + .levelUpLearnset = sSwirlixLevelUpLearnset, + .teachableLearnset = sSwirlixTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}, {EVO_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}), }, @@ -2275,17 +2488,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Slurpuff, 48, 56), + .frontPic = gMonFrontPic_Slurpuff, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Slurpuff, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Slurpuff, 64, 64), + .backPic = gMonBackPic_Slurpuff, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Slurpuff), - ICON(Slurpuff, 1), + .palette = gMonPalette_Slurpuff, + .shinyPalette = gMonShinyPalette_Slurpuff, + .iconSprite = gMonIcon_Slurpuff, + .iconPalIndex = 1, FOOTPRINT(Slurpuff) - LEARNSETS(Slurpuff), + .levelUpLearnset = sSlurpuffLevelUpLearnset, + .teachableLearnset = sSlurpuffTeachableLearnset, }, #endif //P_FAMILY_SWIRLIX @@ -2324,18 +2542,23 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Inkay, 48, 48), + .frontPic = gMonFrontPic_Inkay, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Inkay, .frontAnimId = ANIM_V_SLIDE_WOBBLE, .enemyMonElevation = 14, - BACK_PIC(Inkay, 56, 64), + .backPic = gMonBackPic_Inkay, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 9, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Inkay), - ICON(Inkay, 0), + .palette = gMonPalette_Inkay, + .shinyPalette = gMonShinyPalette_Inkay, + .iconSprite = gMonIcon_Inkay, + .iconPalIndex = 0, FOOTPRINT(Inkay) - LEARNSETS(Inkay), + .levelUpLearnset = sInkayLevelUpLearnset, + .teachableLearnset = sInkayTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MALAMAR}), }, @@ -2373,17 +2596,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Malamar, 64, 64), + .frontPic = gMonFrontPic_Malamar, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Malamar, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, - BACK_PIC(Malamar, 64, 56), + .backPic = gMonBackPic_Malamar, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Malamar), - ICON(Malamar, 2), + .palette = gMonPalette_Malamar, + .shinyPalette = gMonShinyPalette_Malamar, + .iconSprite = gMonIcon_Malamar, + .iconPalIndex = 2, FOOTPRINT(Malamar) - LEARNSETS(Malamar), + .levelUpLearnset = sMalamarLevelUpLearnset, + .teachableLearnset = sMalamarTeachableLearnset, }, #endif //P_FAMILY_INKAY @@ -2422,17 +2650,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Binacle, 48, 56), + .frontPic = gMonFrontPic_Binacle, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Binacle, .frontAnimId = ANIM_H_SLIDE, - BACK_PIC(Binacle, 64, 64), + .backPic = gMonBackPic_Binacle, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Binacle), - ICON(Binacle, 2), + .palette = gMonPalette_Binacle, + .shinyPalette = gMonShinyPalette_Binacle, + .iconSprite = gMonIcon_Binacle, + .iconPalIndex = 2, FOOTPRINT(Binacle) - LEARNSETS(Binacle), + .levelUpLearnset = sBinacleLevelUpLearnset, + .teachableLearnset = sBinacleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_BARBARACLE}), }, @@ -2471,17 +2704,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Barbaracle, 64, 64), + .frontPic = gMonFrontPic_Barbaracle, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Barbaracle, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Barbaracle, 64, 64), + .backPic = gMonBackPic_Barbaracle, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Barbaracle), - ICON(Barbaracle, 2), + .palette = gMonPalette_Barbaracle, + .shinyPalette = gMonShinyPalette_Barbaracle, + .iconSprite = gMonIcon_Barbaracle, + .iconPalIndex = 2, FOOTPRINT(Barbaracle) - LEARNSETS(Barbaracle), + .levelUpLearnset = sBarbaracleLevelUpLearnset, + .teachableLearnset = sBarbaracleTeachableLearnset, }, #endif //P_FAMILY_BINACLE @@ -2520,17 +2758,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Skrelp, 40, 48), + .frontPic = gMonFrontPic_Skrelp, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Skrelp, .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, - BACK_PIC(Skrelp, 64, 64), + .backPic = gMonBackPic_Skrelp, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Skrelp), - ICON(Skrelp, 2), + .palette = gMonPalette_Skrelp, + .shinyPalette = gMonShinyPalette_Skrelp, + .iconSprite = gMonIcon_Skrelp, + .iconPalIndex = 2, FOOTPRINT(Skrelp) - LEARNSETS(Skrelp), + .levelUpLearnset = sSkrelpLevelUpLearnset, + .teachableLearnset = sSkrelpTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_DRAGALGE}), }, @@ -2568,17 +2811,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 2, .trainerScale = 286, .trainerOffset = 1, - FRONT_PIC(Dragalge, 64, 64), + .frontPic = gMonFrontPic_Dragalge, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Dragalge, .frontAnimId = ANIM_FRONT_FLIP, - BACK_PIC(Dragalge, 64, 64), + .backPic = gMonBackPic_Dragalge, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_H_STRETCH, - PALETTES(Dragalge), - ICON(Dragalge, 5), + .palette = gMonPalette_Dragalge, + .shinyPalette = gMonShinyPalette_Dragalge, + .iconSprite = gMonIcon_Dragalge, + .iconPalIndex = 5, FOOTPRINT(Dragalge) - LEARNSETS(Dragalge), + .levelUpLearnset = sDragalgeLevelUpLearnset, + .teachableLearnset = sDragalgeTeachableLearnset, }, #endif //P_FAMILY_SKRELP @@ -2618,17 +2866,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Clauncher, 56, 40), + .frontPic = gMonFrontPic_Clauncher, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Clauncher, .frontAnimId = ANIM_TIP_MOVE_FORWARD, - BACK_PIC(Clauncher, 64, 48), + .backPic = gMonBackPic_Clauncher, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Clauncher), - ICON(Clauncher, 0), + .palette = gMonPalette_Clauncher, + .shinyPalette = gMonShinyPalette_Clauncher, + .iconSprite = gMonIcon_Clauncher, + .iconPalIndex = 0, FOOTPRINT(Clauncher) - LEARNSETS(Clauncher), + .levelUpLearnset = sClauncherLevelUpLearnset, + .teachableLearnset = sClauncherTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_CLAWITZER}), }, @@ -2667,17 +2920,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Clawitzer, 64, 64), + .frontPic = gMonFrontPic_Clawitzer, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Clawitzer, .frontAnimId = ANIM_CIRCLE_C_CLOCKWISE_SLOW, - BACK_PIC(Clawitzer, 64, 48), + .backPic = gMonBackPic_Clawitzer, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(Clawitzer), - ICON(Clawitzer, 0), + .palette = gMonPalette_Clawitzer, + .shinyPalette = gMonShinyPalette_Clawitzer, + .iconSprite = gMonIcon_Clawitzer, + .iconPalIndex = 0, FOOTPRINT(Clawitzer) - LEARNSETS(Clawitzer), + .levelUpLearnset = sClawitzerLevelUpLearnset, + .teachableLearnset = sClawitzerTeachableLearnset, }, #endif //P_FAMILY_CLAUNCHER @@ -2716,17 +2974,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Helioptile, 40, 40), + .frontPic = gMonFrontPic_Helioptile, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Helioptile, .frontAnimId = ANIM_GLOW_YELLOW, - BACK_PIC(Helioptile, 64, 48), + .backPic = gMonBackPic_Helioptile, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Helioptile), - ICON(Helioptile, 2), + .palette = gMonPalette_Helioptile, + .shinyPalette = gMonShinyPalette_Helioptile, + .iconSprite = gMonIcon_Helioptile, + .iconPalIndex = 2, FOOTPRINT(Helioptile) - LEARNSETS(Helioptile), + .levelUpLearnset = sHelioptileLevelUpLearnset, + .teachableLearnset = sHelioptileTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_HELIOLISK}), }, @@ -2765,17 +3028,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Heliolisk, 64, 56), + .frontPic = gMonFrontPic_Heliolisk, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Heliolisk, .frontAnimId = ANIM_RAPID_H_HOPS, - BACK_PIC(Heliolisk, 56, 64), + .backPic = gMonBackPic_Heliolisk, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(Heliolisk), - ICON(Heliolisk, 2), + .palette = gMonPalette_Heliolisk, + .shinyPalette = gMonShinyPalette_Heliolisk, + .iconSprite = gMonIcon_Heliolisk, + .iconPalIndex = 2, FOOTPRINT(Heliolisk) - LEARNSETS(Heliolisk), + .levelUpLearnset = sHelioliskLevelUpLearnset, + .teachableLearnset = sHelioliskTeachableLearnset, }, #endif //P_FAMILY_HELIOPTILE @@ -2814,17 +3082,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Tyrunt, 48, 48), + .frontPic = gMonFrontPic_Tyrunt, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Tyrunt, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Tyrunt, 64, 48), + .backPic = gMonBackPic_Tyrunt, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Tyrunt), - ICON(Tyrunt, 2), + .palette = gMonPalette_Tyrunt, + .shinyPalette = gMonShinyPalette_Tyrunt, + .iconSprite = gMonIcon_Tyrunt, + .iconPalIndex = 2, FOOTPRINT(Tyrunt) - LEARNSETS(Tyrunt), + .levelUpLearnset = sTyruntLevelUpLearnset, + .teachableLearnset = sTyruntTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_DAY, 39, SPECIES_TYRANTRUM}), }, @@ -2862,17 +3135,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 10, .trainerScale = 423, .trainerOffset = 8, - FRONT_PIC(Tyrantrum, 64, 64), + .frontPic = gMonFrontPic_Tyrantrum, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Tyrantrum, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Tyrantrum, 64, 56), + .backPic = gMonBackPic_Tyrantrum, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, - PALETTES(Tyrantrum), - ICON(Tyrantrum, 0), + .palette = gMonPalette_Tyrantrum, + .shinyPalette = gMonShinyPalette_Tyrantrum, + .iconSprite = gMonIcon_Tyrantrum, + .iconPalIndex = 0, FOOTPRINT(Tyrantrum) - LEARNSETS(Tyrantrum), + .levelUpLearnset = sTyrantrumLevelUpLearnset, + .teachableLearnset = sTyrantrumTeachableLearnset, }, #endif //P_FAMILY_TYRUNT @@ -2911,17 +3189,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Amaura, 32, 56), + .frontPic = gMonFrontPic_Amaura, + .frontPicSize = MON_COORDS_SIZE(32, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Amaura, .frontAnimId = ANIM_CONCAVE_ARC_SMALL_TWICE, - BACK_PIC(Amaura, 40, 64), + .backPic = gMonBackPic_Amaura, + .backPicSize = MON_COORDS_SIZE(40, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Amaura), - ICON(Amaura, 0), + .palette = gMonPalette_Amaura, + .shinyPalette = gMonShinyPalette_Amaura, + .iconSprite = gMonIcon_Amaura, + .iconPalIndex = 0, FOOTPRINT(Amaura) - LEARNSETS(Amaura), + .levelUpLearnset = sAmauraLevelUpLearnset, + .teachableLearnset = sAmauraTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 39, SPECIES_AURORUS}), }, @@ -2959,17 +3242,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Aurorus, 64, 64), + .frontPic = gMonFrontPic_Aurorus, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Aurorus, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Aurorus, 64, 64), + .backPic = gMonBackPic_Aurorus, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Aurorus), - ICON(Aurorus, 0), + .palette = gMonPalette_Aurorus, + .shinyPalette = gMonShinyPalette_Aurorus, + .iconSprite = gMonIcon_Aurorus, + .iconPalIndex = 0, FOOTPRINT(Aurorus) - LEARNSETS(Aurorus), + .levelUpLearnset = sAurorusLevelUpLearnset, + .teachableLearnset = sAurorusTeachableLearnset, }, #endif //P_FAMILY_AMAURA @@ -2991,11 +3279,11 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .eggCycles = 20, .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING, EGG_GROUP_HUMAN_LIKE), - #else - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), - #endif + #if P_UPDATED_EGG_GROUPS >= GEN_8 + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING, EGG_GROUP_HUMAN_LIKE), + #else + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + #endif .abilities = { ABILITY_LIMBER, ABILITY_UNBURDEN, ABILITY_MOLD_BREAKER }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Hawlucha"), @@ -3013,17 +3301,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Hawlucha, 64, 56), + .frontPic = gMonFrontPic_Hawlucha, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Hawlucha, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Hawlucha, 64, 48), + .backPic = gMonBackPic_Hawlucha, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(Hawlucha), - ICON(Hawlucha, 0), + .palette = gMonPalette_Hawlucha, + .shinyPalette = gMonShinyPalette_Hawlucha, + .iconSprite = gMonIcon_Hawlucha, + .iconPalIndex = 0, FOOTPRINT(Hawlucha) - LEARNSETS(Hawlucha), + .levelUpLearnset = sHawluchaLevelUpLearnset, + .teachableLearnset = sHawluchaTeachableLearnset, }, #endif //P_FAMILY_HAWLUCHA @@ -3062,17 +3355,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Dedenne, 64, 40), + .frontPic = gMonFrontPic_Dedenne, + .frontPicSize = MON_COORDS_SIZE(64, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Dedenne, .frontAnimId = ANIM_GLOW_YELLOW, - BACK_PIC(Dedenne, 64, 48), + .backPic = gMonBackPic_Dedenne, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 12, .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, - PALETTES(Dedenne), - ICON(Dedenne, 0), + .palette = gMonPalette_Dedenne, + .shinyPalette = gMonShinyPalette_Dedenne, + .iconSprite = gMonIcon_Dedenne, + .iconPalIndex = 0, FOOTPRINT(Dedenne) - LEARNSETS(Dedenne), + .levelUpLearnset = sDedenneLevelUpLearnset, + .teachableLearnset = sDedenneTeachableLearnset, }, #endif //P_FAMILY_DEDENNE @@ -3112,18 +3410,23 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Carbink, 48, 48), + .frontPic = gMonFrontPic_Carbink, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Carbink, .frontAnimId = ANIM_ZIGZAG_SLOW, .enemyMonElevation = 4, - BACK_PIC(Carbink, 56, 56), + .backPic = gMonBackPic_Carbink, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Carbink), - ICON(Carbink, 2), + .palette = gMonPalette_Carbink, + .shinyPalette = gMonShinyPalette_Carbink, + .iconSprite = gMonIcon_Carbink, + .iconPalIndex = 2, FOOTPRINT(Carbink) - LEARNSETS(Carbink), + .levelUpLearnset = sCarbinkLevelUpLearnset, + .teachableLearnset = sCarbinkTeachableLearnset, }, #endif //P_FAMILY_CARBINK @@ -3163,41 +3466,28 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Goomy, 32, 40), + .frontPic = gMonFrontPic_Goomy, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Goomy, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Goomy, 48, 56), + .backPic = gMonBackPic_Goomy, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_H_SPRING, - PALETTES(Goomy), - ICON(Goomy, 5), + .palette = gMonPalette_Goomy, + .shinyPalette = gMonShinyPalette_Goomy, + .iconSprite = gMonIcon_Goomy, + .iconPalIndex = 5, FOOTPRINT(Goomy) - LEARNSETS(Goomy), + .levelUpLearnset = sGoomyLevelUpLearnset, + .teachableLearnset = sGoomyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_SLIGGOO}, {EVO_NONE, 0, SPECIES_SLIGGOO_HISUIAN}), }, -#define SLIGGOO_MISC_INFO \ - .catchRate = 45, \ - .expYield = 158, \ - .evYield_SpDefense = 2, \ - .itemRare = ITEM_SHED_SHELL, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 40, \ - .friendship = 35, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_DRAGON), \ - .bodyColor = BODY_COLOR_PURPLE, \ - .speciesName = _("Sliggoo"), \ - .cryId = CRY_SLIGGOO, \ - .natDexNum = NATIONAL_DEX_SLIGGOO, \ - FOOTPRINT(Sliggoo) \ - .formSpeciesIdTable = sSliggooFormSpeciesIdTable - [SPECIES_SLIGGOO] = { - SLIGGOO_MISC_INFO, .baseHP = 68, .baseAttack = 75, .baseDefense = 53, @@ -3205,7 +3495,20 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .baseSpAttack = 83, .baseSpDefense = 113, .types = MON_TYPES(TYPE_DRAGON), + .catchRate = 45, + .expYield = 158, + .evYield_SpDefense = 2, + .itemRare = ITEM_SHED_SHELL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_DRAGON), .abilities = { ABILITY_SAP_SIPPER, ABILITY_HYDRATION, ABILITY_GOOEY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Sliggoo"), + .cryId = CRY_SLIGGOO, + .natDexNum = NATIONAL_DEX_SLIGGOO, .categoryName = _("Soft Tissue"), .height = 8, .weight = 175, @@ -3218,39 +3521,29 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Sliggoo, 32, 64), + .frontPic = gMonFrontPic_Sliggoo, + .frontPicSize = MON_COORDS_SIZE(32, 64), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Sliggoo, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Sliggoo, 48, 64), + .backPic = gMonBackPic_Sliggoo, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Sliggoo), - ICON(Sliggoo, 5), - LEARNSETS(Sliggoo), + .palette = gMonPalette_Sliggoo, + .shinyPalette = gMonShinyPalette_Sliggoo, + .iconSprite = gMonIcon_Sliggoo, + .iconPalIndex = 5, + FOOTPRINT(Sliggoo) + .levelUpLearnset = sSliggooLevelUpLearnset, + .teachableLearnset = sSliggooTeachableLearnset, + .formSpeciesIdTable = sSliggooFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL_RAIN, 50, SPECIES_GOODRA}, {EVO_LEVEL_FOG, 50, SPECIES_GOODRA}), }, -#define GOODRA_MISC_INFO \ - .catchRate = 45, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270,\ - .evYield_SpDefense = 3, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 40, \ - .friendship = 35, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_DRAGON), \ - .bodyColor = BODY_COLOR_PURPLE, \ - .speciesName = _("Goodra"), \ - .cryId = CRY_GOODRA, \ - .natDexNum = NATIONAL_DEX_GOODRA, \ - FOOTPRINT(Goodra) \ - .formSpeciesIdTable = sGoodraFormSpeciesIdTable - [SPECIES_GOODRA] = { - GOODRA_MISC_INFO, .baseHP = 90, .baseAttack = 100, .baseDefense = 70, @@ -3258,7 +3551,19 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .baseSpAttack = 110, .baseSpDefense = 150, .types = MON_TYPES(TYPE_DRAGON), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, + .evYield_SpDefense = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_DRAGON), .abilities = { ABILITY_SAP_SIPPER, ABILITY_HYDRATION, ABILITY_GOOEY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Goodra"), + .cryId = CRY_GOODRA, + .natDexNum = NATIONAL_DEX_GOODRA, .categoryName = _("Dragon"), .height = 20, .weight = 1505, @@ -3271,22 +3576,28 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 1, .trainerScale = 334, .trainerOffset = 4, - FRONT_PIC(Goodra, 64, 64), + .frontPic = gMonFrontPic_Goodra, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Goodra, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Goodra, 64, 64), + .backPic = gMonBackPic_Goodra, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Goodra), - ICON(Goodra, 5), - LEARNSETS(Goodra), + .palette = gMonPalette_Goodra, + .shinyPalette = gMonShinyPalette_Goodra, + .iconSprite = gMonIcon_Goodra, + .iconPalIndex = 5, + FOOTPRINT(Goodra) + .levelUpLearnset = sGoodraLevelUpLearnset, + .teachableLearnset = sGoodraTeachableLearnset, + .formSpeciesIdTable = sGoodraFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_SLIGGOO_HISUIAN] = { - SLIGGOO_MISC_INFO, .baseHP = 58, .baseAttack = 75, .baseDefense = 83, @@ -3294,7 +3605,20 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .baseSpAttack = 83, .baseSpDefense = 113, .types = MON_TYPES(TYPE_DRAGON, TYPE_STEEL), + .catchRate = 45, + .expYield = 158, + .evYield_SpDefense = 2, + .itemRare = ITEM_SHED_SHELL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_DRAGON), .abilities = { ABILITY_SAP_SIPPER, ABILITY_SHELL_ARMOR, ABILITY_GOOEY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Sliggoo"), + .cryId = CRY_SLIGGOO, + .natDexNum = NATIONAL_DEX_SLIGGOO, .categoryName = _("Snail"), .height = 7, .weight = 685, @@ -3307,24 +3631,30 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(SliggooHisuian, 48, 56), + .frontPic = gMonFrontPic_SliggooHisuian, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_SliggooHisuian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SliggooHisuian, 64, 64), + .backPic = gMonBackPic_SliggooHisuian, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(SliggooHisuian), - ICON(SliggooHisuian, 2), - LEARNSETS(SliggooHisuian), + .palette = gMonPalette_SliggooHisuian, + .shinyPalette = gMonShinyPalette_SliggooHisuian, + .iconSprite = gMonIcon_SliggooHisuian, + .iconPalIndex = 2, + FOOTPRINT(Sliggoo) .isHisuianForm = TRUE, + .levelUpLearnset = sSliggooHisuianLevelUpLearnset, + .teachableLearnset = sSliggooHisuianTeachableLearnset, + .formSpeciesIdTable = sSliggooFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL_RAIN, 50, SPECIES_GOODRA_HISUIAN}, {EVO_LEVEL_FOG, 50, SPECIES_GOODRA_HISUIAN}), }, [SPECIES_GOODRA_HISUIAN] = { - GOODRA_MISC_INFO, .baseHP = 80, .baseAttack = 100, .baseDefense = 100, @@ -3332,7 +3662,19 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .baseSpAttack = 110, .baseSpDefense = 150, .types = MON_TYPES(TYPE_DRAGON, TYPE_STEEL), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, + .evYield_SpDefense = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_DRAGON), .abilities = { ABILITY_SAP_SIPPER, ABILITY_SHELL_ARMOR, ABILITY_GOOEY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Goodra"), + .cryId = CRY_GOODRA, + .natDexNum = NATIONAL_DEX_GOODRA, .categoryName = _("Shell Bunker"), .height = 17, .weight = 3341, @@ -3345,17 +3687,24 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 1, .trainerScale = 334, .trainerOffset = 4, - FRONT_PIC(GoodraHisuian, 56, 64), + .frontPic = gMonFrontPic_GoodraHisuian, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_GoodraHisuian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(GoodraHisuian, 64, 64), + .backPic = gMonBackPic_GoodraHisuian, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(GoodraHisuian), - ICON(GoodraHisuian, 2), - LEARNSETS(GoodraHisuian), + .palette = gMonPalette_GoodraHisuian, + .shinyPalette = gMonShinyPalette_GoodraHisuian, + .iconSprite = gMonIcon_GoodraHisuian, + .iconPalIndex = 2, + FOOTPRINT(Goodra) .isHisuianForm = TRUE, + .levelUpLearnset = sGoodraHisuianLevelUpLearnset, + .teachableLearnset = sGoodraHisuianTeachableLearnset, + .formSpeciesIdTable = sGoodraFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_GOOMY @@ -3396,18 +3745,23 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Klefki, 40, 56), + .frontPic = gMonFrontPic_Klefki, + .frontPicSize = MON_COORDS_SIZE(40, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Klefki, .frontAnimId = ANIM_FOUR_PETAL, .enemyMonElevation = 5, - BACK_PIC(Klefki, 56, 64), + .backPic = gMonBackPic_Klefki, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 8, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Klefki), - ICON(Klefki, 0), + .palette = gMonPalette_Klefki, + .shinyPalette = gMonShinyPalette_Klefki, + .iconSprite = gMonIcon_Klefki, + .iconPalIndex = 0, FOOTPRINT(Klefki) - LEARNSETS(Klefki), + .levelUpLearnset = sKlefkiLevelUpLearnset, + .teachableLearnset = sKlefkiTeachableLearnset, }, #endif //P_FAMILY_KLEFKI @@ -3446,18 +3800,23 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Phantump, 48, 48), + .frontPic = gMonFrontPic_Phantump, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Phantump, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 5, - BACK_PIC(Phantump, 64, 56), + .backPic = gMonBackPic_Phantump, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 9, .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - PALETTES(Phantump), - ICON(Phantump, 1), + .palette = gMonPalette_Phantump, + .shinyPalette = gMonShinyPalette_Phantump, + .iconSprite = gMonIcon_Phantump, + .iconPalIndex = 1, FOOTPRINT(Phantump) - LEARNSETS(Phantump), + .levelUpLearnset = sPhantumpLevelUpLearnset, + .teachableLearnset = sPhantumpTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_TREVENANT}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_TREVENANT}), }, @@ -3496,55 +3855,49 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Trevenant, 64, 64), + .frontPic = gMonFrontPic_Trevenant, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Trevenant, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(Trevenant, 64, 64), + .backPic = gMonBackPic_Trevenant, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Trevenant), - ICON(Trevenant, 1), + .palette = gMonPalette_Trevenant, + .shinyPalette = gMonShinyPalette_Trevenant, + .iconSprite = gMonIcon_Trevenant, + .iconPalIndex = 1, FOOTPRINT(Trevenant) - LEARNSETS(Trevenant), + .levelUpLearnset = sTrevenantLevelUpLearnset, + .teachableLearnset = sTrevenantTeachableLearnset, }, #endif //P_FAMILY_PHANTUMP #if P_FAMILY_PUMPKABOO -#define PUMPKABOO_MISC_INFO \ - .types = MON_TYPES(TYPE_GHOST, TYPE_GRASS), \ - .catchRate = 120, \ - .expYield = 67, \ - .evYield_Defense = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), \ - .abilities = { ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA }, \ - .bodyColor = BODY_COLOR_BROWN, \ - .speciesName = _("Pumpkaboo"), \ - .natDexNum = NATIONAL_DEX_PUMPKABOO, \ - .categoryName = _("Pumpkin"), \ - .frontAnimFrames = sAnims_Pumpkaboo, \ - .frontAnimId = ANIM_V_SLIDE_WOBBLE, \ - .backAnimId = BACK_ANIM_TRIANGLE_DOWN, \ - PALETTES(Pumpkaboo), \ - ICON(Pumpkaboo, 2), \ - FOOTPRINT(Pumpkaboo) \ - LEARNSETS(Pumpkaboo), \ - .formSpeciesIdTable = sPumpkabooFormSpeciesIdTable - [SPECIES_PUMPKABOO_AVERAGE] = { - PUMPKABOO_MISC_INFO, .baseHP = 49, .baseAttack = 66, .baseDefense = 70, .baseSpeed = 51, .baseSpAttack = 44, .baseSpDefense = 55, + .types = MON_TYPES(TYPE_GHOST, TYPE_GRASS), + .catchRate = 120, + .expYield = 67, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Pumpkaboo"), .cryId = CRY_PUMPKABOO, + .natDexNum = NATIONAL_DEX_PUMPKABOO, + .categoryName = _("Pumpkin"), .height = 4, .weight = 50, .description = COMPOUND_STRING( @@ -3556,24 +3909,50 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(PumpkabooAverage, 40, 40), + .frontPic = gMonFrontPic_PumpkabooAverage, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 13, - BACK_PIC(PumpkabooAverage, 56, 48), + .frontAnimFrames = sAnims_Pumpkaboo, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .backPic = gMonBackPic_PumpkabooAverage, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 13, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + .palette = gMonPalette_Pumpkaboo, + .shinyPalette = gMonShinyPalette_Pumpkaboo, + .iconSprite = gMonIcon_Pumpkaboo, + .iconPalIndex = 2, + FOOTPRINT(Pumpkaboo) + .levelUpLearnset = sPumpkabooLevelUpLearnset, + .teachableLearnset = sPumpkabooTeachableLearnset, + .formSpeciesIdTable = sPumpkabooFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOURGEIST_AVERAGE}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_AVERAGE}), }, [SPECIES_PUMPKABOO_SMALL] = { - PUMPKABOO_MISC_INFO, .baseHP = 44, .baseAttack = 66, .baseDefense = 70, .baseSpeed = 56, .baseSpAttack = 44, .baseSpDefense = 55, + .types = MON_TYPES(TYPE_GHOST, TYPE_GRASS), + .catchRate = 120, + .expYield = 67, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Pumpkaboo"), .cryId = CRY_PUMPKABOO, + .natDexNum = NATIONAL_DEX_PUMPKABOO, + .categoryName = _("Pumpkin"), .height = 3, .weight = 35, .description = COMPOUND_STRING( @@ -3584,24 +3963,50 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(PumpkabooSmall, 40, 40), + .frontPic = gMonFrontPic_PumpkabooSmall, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 15, - BACK_PIC(PumpkabooSmall, 56, 48), + .frontAnimFrames = sAnims_Pumpkaboo, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .backPic = gMonBackPic_PumpkabooSmall, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 14, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + .palette = gMonPalette_Pumpkaboo, + .shinyPalette = gMonShinyPalette_Pumpkaboo, + .iconSprite = gMonIcon_Pumpkaboo, + .iconPalIndex = 2, + FOOTPRINT(Pumpkaboo) + .levelUpLearnset = sPumpkabooLevelUpLearnset, + .teachableLearnset = sPumpkabooTeachableLearnset, + .formSpeciesIdTable = sPumpkabooFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOURGEIST_SMALL}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_SMALL}), }, [SPECIES_PUMPKABOO_LARGE] = { - PUMPKABOO_MISC_INFO, .baseHP = 54, .baseAttack = 66, .baseDefense = 70, .baseSpeed = 46, .baseSpAttack = 44, .baseSpDefense = 55, + .types = MON_TYPES(TYPE_GHOST, TYPE_GRASS), + .catchRate = 120, + .expYield = 67, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Pumpkaboo"), .cryId = CRY_PUMPKABOO, + .natDexNum = NATIONAL_DEX_PUMPKABOO, + .categoryName = _("Pumpkin"), .height = 5, .weight = 75, .description = COMPOUND_STRING( @@ -3612,26 +4017,52 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(PumpkabooLarge, 48, 48), + .frontPic = gMonFrontPic_PumpkabooLarge, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 12, - BACK_PIC(PumpkabooLarge, 56, 48), + .frontAnimFrames = sAnims_Pumpkaboo, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .backPic = gMonBackPic_PumpkabooLarge, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 13, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + .palette = gMonPalette_Pumpkaboo, + .shinyPalette = gMonShinyPalette_Pumpkaboo, + .iconSprite = gMonIcon_Pumpkaboo, + .iconPalIndex = 2, + FOOTPRINT(Pumpkaboo) + .levelUpLearnset = sPumpkabooLevelUpLearnset, + .teachableLearnset = sPumpkabooTeachableLearnset, + .formSpeciesIdTable = sPumpkabooFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOURGEIST_LARGE}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_LARGE}), }, [SPECIES_PUMPKABOO_SUPER] = { - PUMPKABOO_MISC_INFO, .baseHP = 59, .baseAttack = 66, .baseDefense = 70, .baseSpeed = 41, .baseSpAttack = 44, .baseSpDefense = 55, + .types = MON_TYPES(TYPE_GHOST, TYPE_GRASS), + .catchRate = 120, + .expYield = 67, + .evYield_Defense = 1, .itemCommon = ITEM_MIRACLE_SEED, .itemRare = ITEM_MIRACLE_SEED, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Pumpkaboo"), .cryId = CRY_PUMPKABOO_SUPER, + .natDexNum = NATIONAL_DEX_PUMPKABOO, + .categoryName = _("Pumpkin"), .height = 8, .weight = 150, .description = COMPOUND_STRING( @@ -3642,48 +4073,50 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(PumpkabooSuper, 48, 48), + .frontPic = gMonFrontPic_PumpkabooSuper, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, - BACK_PIC(PumpkabooSuper, 56, 48), + .frontAnimFrames = sAnims_Pumpkaboo, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .backPic = gMonBackPic_PumpkabooSuper, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 12, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + .palette = gMonPalette_Pumpkaboo, + .shinyPalette = gMonShinyPalette_Pumpkaboo, + .iconSprite = gMonIcon_Pumpkaboo, + .iconPalIndex = 2, + FOOTPRINT(Pumpkaboo) + .levelUpLearnset = sPumpkabooLevelUpLearnset, + .teachableLearnset = sPumpkabooTeachableLearnset, + .formSpeciesIdTable = sPumpkabooFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOURGEIST_SUPER}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_SUPER}), }, -#define GOURGEIST_MISC_INFO \ - .types = MON_TYPES(TYPE_GHOST, TYPE_GRASS), \ - .catchRate = 60, \ - .expYield = 173, \ - .evYield_Defense = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), \ - .abilities = { ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA }, \ - .bodyColor = BODY_COLOR_BROWN, \ - .speciesName = _("Gourgeist"), \ - .natDexNum = NATIONAL_DEX_GOURGEIST, \ - .categoryName = _("Pumpkin"), \ - .frontAnimFrames = sAnims_Gourgeist, \ - .frontAnimId = ANIM_SHRINK_GROW, \ - .backAnimId = BACK_ANIM_V_STRETCH, \ - PALETTES(Gourgeist), \ - ICON(Gourgeist, 2), \ - FOOTPRINT(Gourgeist) \ - LEARNSETS(Gourgeist), \ - .formSpeciesIdTable = sGourgeistFormSpeciesIdTable - [SPECIES_GOURGEIST_AVERAGE] = { - GOURGEIST_MISC_INFO, .baseHP = 65, .baseAttack = 90, .baseDefense = 122, .baseSpeed = 84, .baseSpAttack = 58, .baseSpDefense = 75, + .types = MON_TYPES(TYPE_GHOST, TYPE_GRASS), + .catchRate = 60, + .expYield = 173, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Gourgeist"), .cryId = CRY_GOURGEIST, + .natDexNum = NATIONAL_DEX_GOURGEIST, + .categoryName = _("Pumpkin"), .height = 9, .weight = 125, .description = COMPOUND_STRING( @@ -3695,22 +4128,48 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(GourgeistAverage, 64, 64), + .frontPic = gMonFrontPic_GourgeistAverage, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, - BACK_PIC(GourgeistAverage, 48, 64), + .frontAnimFrames = sAnims_Gourgeist, + .frontAnimId = ANIM_SHRINK_GROW, + .backPic = gMonBackPic_GourgeistAverage, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 3, + .backAnimId = BACK_ANIM_V_STRETCH, + .palette = gMonPalette_Gourgeist, + .shinyPalette = gMonShinyPalette_Gourgeist, + .iconSprite = gMonIcon_Gourgeist, + .iconPalIndex = 2, + FOOTPRINT(Gourgeist) + .levelUpLearnset = sGourgeistLevelUpLearnset, + .teachableLearnset = sGourgeistTeachableLearnset, + .formSpeciesIdTable = sGourgeistFormSpeciesIdTable, }, [SPECIES_GOURGEIST_SMALL] = { - GOURGEIST_MISC_INFO, .baseHP = 55, .baseAttack = 85, .baseDefense = 122, .baseSpeed = 99, .baseSpAttack = 58, .baseSpDefense = 75, + .types = MON_TYPES(TYPE_GHOST, TYPE_GRASS), + .catchRate = 60, + .expYield = 173, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Gourgeist"), .cryId = CRY_GOURGEIST, + .natDexNum = NATIONAL_DEX_GOURGEIST, + .categoryName = _("Pumpkin"), .height = 7, .weight = 95, .description = COMPOUND_STRING( @@ -3722,22 +4181,48 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(GourgeistSmall, 56, 64), + .frontPic = gMonFrontPic_GourgeistSmall, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 5, - BACK_PIC(GourgeistSmall, 48, 56), + .frontAnimFrames = sAnims_Gourgeist, + .frontAnimId = ANIM_SHRINK_GROW, + .backPic = gMonBackPic_GourgeistSmall, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 4, + .backAnimId = BACK_ANIM_V_STRETCH, + .palette = gMonPalette_Gourgeist, + .shinyPalette = gMonShinyPalette_Gourgeist, + .iconSprite = gMonIcon_Gourgeist, + .iconPalIndex = 2, + FOOTPRINT(Gourgeist) + .levelUpLearnset = sGourgeistLevelUpLearnset, + .teachableLearnset = sGourgeistTeachableLearnset, + .formSpeciesIdTable = sGourgeistFormSpeciesIdTable, }, [SPECIES_GOURGEIST_LARGE] = { - GOURGEIST_MISC_INFO, .baseHP = 75, .baseAttack = 95, .baseDefense = 122, .baseSpeed = 69, .baseSpAttack = 58, .baseSpDefense = 75, + .types = MON_TYPES(TYPE_GHOST, TYPE_GRASS), + .catchRate = 60, + .expYield = 173, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Gourgeist"), .cryId = CRY_GOURGEIST, + .natDexNum = NATIONAL_DEX_GOURGEIST, + .categoryName = _("Pumpkin"), .height = 11, .weight = 140, .description = COMPOUND_STRING( @@ -3749,24 +4234,50 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(GourgeistLarge, 64, 64), + .frontPic = gMonFrontPic_GourgeistLarge, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, - BACK_PIC(GourgeistLarge, 48, 64), + .frontAnimFrames = sAnims_Gourgeist, + .frontAnimId = ANIM_SHRINK_GROW, + .backPic = gMonBackPic_GourgeistLarge, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 2, + .backAnimId = BACK_ANIM_V_STRETCH, + .palette = gMonPalette_Gourgeist, + .shinyPalette = gMonShinyPalette_Gourgeist, + .iconSprite = gMonIcon_Gourgeist, + .iconPalIndex = 2, + FOOTPRINT(Gourgeist) + .levelUpLearnset = sGourgeistLevelUpLearnset, + .teachableLearnset = sGourgeistTeachableLearnset, + .formSpeciesIdTable = sGourgeistFormSpeciesIdTable, }, [SPECIES_GOURGEIST_SUPER] = { - GOURGEIST_MISC_INFO, .baseHP = 85, .baseAttack = 100, .baseDefense = 122, .baseSpeed = 54, .baseSpAttack = 58, .baseSpDefense = 75, + .types = MON_TYPES(TYPE_GHOST, TYPE_GRASS), + .catchRate = 60, + .expYield = 173, + .evYield_Defense = 2, .itemCommon = ITEM_MIRACLE_SEED, .itemRare = ITEM_MIRACLE_SEED, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Gourgeist"), .cryId = CRY_GOURGEIST_SUPER, + .natDexNum = NATIONAL_DEX_GOURGEIST, + .categoryName = _("Pumpkin"), .height = 17, .weight = 390, .description = COMPOUND_STRING( @@ -3778,10 +4289,23 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(GourgeistSuper, 64, 64), + .frontPic = gMonFrontPic_GourgeistSuper, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, - BACK_PIC(GourgeistSuper, 56, 64), + .frontAnimFrames = sAnims_Gourgeist, + .frontAnimId = ANIM_SHRINK_GROW, + .backPic = gMonBackPic_GourgeistSuper, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 1, + .backAnimId = BACK_ANIM_V_STRETCH, + .palette = gMonPalette_Gourgeist, + .shinyPalette = gMonShinyPalette_Gourgeist, + .iconSprite = gMonIcon_Gourgeist, + .iconPalIndex = 2, + FOOTPRINT(Gourgeist) + .levelUpLearnset = sGourgeistLevelUpLearnset, + .teachableLearnset = sGourgeistTeachableLearnset, + .formSpeciesIdTable = sGourgeistFormSpeciesIdTable, }, #endif //P_FAMILY_PUMPKABOO @@ -3826,41 +4350,28 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Bergmite, 40, 40), + .frontPic = gMonFrontPic_Bergmite, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Bergmite, .frontAnimId = ANIM_LUNGE_GROW, - BACK_PIC(Bergmite, 56, 48), + .backPic = gMonBackPic_Bergmite, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 13, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Bergmite), - ICON(Bergmite, 0), + .palette = gMonPalette_Bergmite, + .shinyPalette = gMonShinyPalette_Bergmite, + .iconSprite = gMonIcon_Bergmite, + .iconPalIndex = 0, FOOTPRINT(Bergmite) - LEARNSETS(Bergmite), + .levelUpLearnset = sBergmiteLevelUpLearnset, + .teachableLearnset = sBergmiteTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_AVALUGG}, {EVO_NONE, 0, SPECIES_AVALUGG_HISUIAN}), }, -#define AVALUGG_MISC_INFO \ - .catchRate = 55, \ - .expYield = 180, \ - .evYield_Defense = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = BERGMITE_EGG_GROUPS, \ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Avalugg"), \ - .cryId = CRY_AVALUGG, \ - .natDexNum = NATIONAL_DEX_AVALUGG, \ - .categoryName = _("Iceberg"), \ - FOOTPRINT(Avalugg) \ - .formSpeciesIdTable = sAvaluggFormSpeciesIdTable - [SPECIES_AVALUGG] = { - AVALUGG_MISC_INFO, .baseHP = 95, .baseAttack = 117, .baseDefense = 184, @@ -3868,35 +4379,53 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .baseSpAttack = 44, .baseSpDefense = 46, .types = MON_TYPES(TYPE_ICE), + .catchRate = 55, + .expYield = 180, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = BERGMITE_EGG_GROUPS, .abilities = { ABILITY_OWN_TEMPO, ABILITY_ICE_BODY, ABILITY_STURDY }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Avalugg"), + .cryId = CRY_AVALUGG, + .natDexNum = NATIONAL_DEX_AVALUGG, + .categoryName = _("Iceberg"), .height = 20, .weight = 5050, .description = COMPOUND_STRING( "The way several Bergmite huddle on its\n" "back make it look like an aircraft carrier\n" "made of ice. Its cumbersome frame crushes\n" - "anything that stands in its way.") -, + "anything that stands in its way."), .pokemonScale = 261, .pokemonOffset = 1, .trainerScale = 334, .trainerOffset = 4, - FRONT_PIC(Avalugg, 64, 56), + .frontPic = gMonFrontPic_Avalugg, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Avalugg, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Avalugg, 64, 40), + .backPic = gMonBackPic_Avalugg, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 12, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(Avalugg), - ICON(Avalugg, 0), - LEARNSETS(Avalugg), + .palette = gMonPalette_Avalugg, + .shinyPalette = gMonShinyPalette_Avalugg, + .iconSprite = gMonIcon_Avalugg, + .iconPalIndex = 0, + FOOTPRINT(Avalugg) + .levelUpLearnset = sAvaluggLevelUpLearnset, + .teachableLearnset = sAvaluggTeachableLearnset, + .formSpeciesIdTable = sAvaluggFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_AVALUGG_HISUIAN] = { - AVALUGG_MISC_INFO, .baseHP = 95, .baseAttack = 127, .baseDefense = 184, @@ -3904,7 +4433,20 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .baseSpAttack = 34, .baseSpDefense = 36, .types = MON_TYPES(TYPE_ICE, TYPE_ROCK), + .catchRate = 55, + .expYield = 180, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = BERGMITE_EGG_GROUPS, .abilities = { ABILITY_STRONG_JAW, ABILITY_ICE_BODY, ABILITY_STURDY }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Avalugg"), + .cryId = CRY_AVALUGG, + .natDexNum = NATIONAL_DEX_AVALUGG, + .categoryName = _("Iceberg"), .height = 14, .weight = 2624, .description = COMPOUND_STRING( @@ -3915,17 +4457,24 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 1, .trainerScale = 334, .trainerOffset = 4, - FRONT_PIC(AvaluggHisuian, 64, 48), + .frontPic = gMonFrontPic_AvaluggHisuian, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 6, .frontAnimFrames = sAnims_AvaluggHisuian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(AvaluggHisuian, 64, 32), + .backPic = gMonBackPic_AvaluggHisuian, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 16, //.backAnimId = BACK_ANIM_NONE, - PALETTES(AvaluggHisuian), - ICON(AvaluggHisuian, 5), - LEARNSETS(AvaluggHisuian), + .palette = gMonPalette_AvaluggHisuian, + .shinyPalette = gMonShinyPalette_AvaluggHisuian, + .iconSprite = gMonIcon_AvaluggHisuian, + .iconPalIndex = 5, + FOOTPRINT(Avalugg) .isHisuianForm = TRUE, + .levelUpLearnset = sAvaluggHisuianLevelUpLearnset, + .teachableLearnset = sAvaluggHisuianTeachableLearnset, + .formSpeciesIdTable = sAvaluggFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_BERGMITE @@ -3947,11 +4496,11 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .eggCycles = 20, .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING, EGG_GROUP_DRAGON), - #else - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), - #endif + #if P_UPDATED_EGG_GROUPS >= GEN_8 + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING, EGG_GROUP_DRAGON), + #else + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), + #endif .abilities = { ABILITY_FRISK, ABILITY_INFILTRATOR, ABILITY_TELEPATHY }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Noibat"), @@ -3969,18 +4518,23 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Noibat, 64, 48), + .frontPic = gMonFrontPic_Noibat, + .frontPicSize = MON_COORDS_SIZE(64, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Noibat, .frontAnimId = ANIM_RISING_WOBBLE, .enemyMonElevation = 8, - BACK_PIC(Noibat, 56, 64), + .backPic = gMonBackPic_Noibat, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 7, .backAnimId = BACK_ANIM_TRIANGLE_DOWN, - PALETTES(Noibat), - ICON(Noibat, 2), + .palette = gMonPalette_Noibat, + .shinyPalette = gMonShinyPalette_Noibat, + .iconSprite = gMonIcon_Noibat, + .iconPalIndex = 2, FOOTPRINT(Noibat) - LEARNSETS(Noibat), + .levelUpLearnset = sNoibatLevelUpLearnset, + .teachableLearnset = sNoibatTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_NOIVERN}), }, @@ -4000,11 +4554,11 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .eggCycles = 20, .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING, EGG_GROUP_DRAGON), - #else - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), - #endif + #if P_UPDATED_EGG_GROUPS >= GEN_8 + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING, EGG_GROUP_DRAGON), + #else + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), + #endif .abilities = { ABILITY_FRISK, ABILITY_INFILTRATOR, ABILITY_TELEPATHY }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Noivern"), @@ -4022,69 +4576,127 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Noivern, 64, 64), + .frontPic = gMonFrontPic_Noivern, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Noivern, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Noivern, 64, 64), + .backPic = gMonBackPic_Noivern, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, .backAnimId = BACK_ANIM_JOLT_RIGHT, - PALETTES(Noivern), - ICON(Noivern, 2), + .palette = gMonPalette_Noivern, + .shinyPalette = gMonShinyPalette_Noivern, + .iconSprite = gMonIcon_Noivern, + .iconPalIndex = 2, FOOTPRINT(Noivern) - LEARNSETS(Noivern), + .levelUpLearnset = sNoivernLevelUpLearnset, + .teachableLearnset = sNoivernTeachableLearnset, }, #endif //P_FAMILY_NOIBAT #if P_FAMILY_XERNEAS -#define XERNEAS_MISC_INFO(Form) \ - { \ - .baseHP = 126, \ - .baseAttack = 131, \ - .baseDefense = 95, \ - .baseSpeed = 99, \ - .baseSpAttack = 131, \ - .baseSpDefense = 98, \ - .types = MON_TYPES(TYPE_FAIRY), \ - .catchRate = 45, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 340 : 306, \ - .evYield_HP = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_FAIRY_AURA, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Xerneas"), \ - .cryId = CRY_XERNEAS, \ - .natDexNum = NATIONAL_DEX_XERNEAS, \ - .categoryName = _("Life"), \ - .height = 30, \ - .weight = 2150, \ - .description = gXerneasPokedexText, \ - .pokemonScale = 275, \ - .pokemonOffset = 7, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FRONT_PIC(Xerneas##Form, 64, 64), \ - .frontPicYOffset = 0, \ - .frontAnimFrames = sAnims_Xerneas, \ - .frontAnimId = ANIM_GROW_VIBRATE, \ - BACK_PIC(Xerneas##Form, 64, 64), \ - .backPicYOffset = 0, \ - .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, \ - PALETTES(Xerneas##Form), \ - ICON(Xerneas##Form, 0), \ - FOOTPRINT(Xerneas) \ - LEARNSETS(Xerneas), \ - .formSpeciesIdTable = sXerneasFormSpeciesIdTable, \ - .formChangeTable = sXerneasFormChangeTable, \ - .isLegendary = TRUE, \ - } + [SPECIES_XERNEAS_NEUTRAL] = + { + .baseHP = 126, + .baseAttack = 131, + .baseDefense = 95, + .baseSpeed = 99, + .baseSpAttack = 131, + .baseSpDefense = 98, + .types = MON_TYPES(TYPE_FAIRY), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 340 : 306, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_FAIRY_AURA, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Xerneas"), + .cryId = CRY_XERNEAS, + .natDexNum = NATIONAL_DEX_XERNEAS, + .categoryName = _("Life"), + .height = 30, + .weight = 2150, + .description = gXerneasPokedexText, + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_XerneasNeutral, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Xerneas, + .frontAnimId = ANIM_GROW_VIBRATE, + .backPic = gMonBackPic_XerneasNeutral, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + .palette = gMonPalette_XerneasNeutral, + .shinyPalette = gMonShinyPalette_XerneasNeutral, + .iconSprite = gMonIcon_XerneasNeutral, + .iconPalIndex = 0, + FOOTPRINT(Xerneas) + .isLegendary = TRUE, + .levelUpLearnset = sXerneasLevelUpLearnset, + .teachableLearnset = sXerneasTeachableLearnset, + .formSpeciesIdTable = sXerneasFormSpeciesIdTable, + .formChangeTable = sXerneasFormChangeTable, + }, - [SPECIES_XERNEAS_NEUTRAL] = XERNEAS_MISC_INFO(Neutral), - [SPECIES_XERNEAS_ACTIVE] = XERNEAS_MISC_INFO(Active), + [SPECIES_XERNEAS_ACTIVE] = + { + .baseHP = 126, + .baseAttack = 131, + .baseDefense = 95, + .baseSpeed = 99, + .baseSpAttack = 131, + .baseSpDefense = 98, + .types = MON_TYPES(TYPE_FAIRY), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 340 : 306, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_FAIRY_AURA, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Xerneas"), + .cryId = CRY_XERNEAS, + .natDexNum = NATIONAL_DEX_XERNEAS, + .categoryName = _("Life"), + .height = 30, + .weight = 2150, + .description = gXerneasPokedexText, + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_XerneasActive, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Xerneas, + .frontAnimId = ANIM_GROW_VIBRATE, + .backPic = gMonBackPic_XerneasActive, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + .palette = gMonPalette_XerneasActive, + .shinyPalette = gMonShinyPalette_XerneasActive, + .iconSprite = gMonIcon_XerneasActive, + .iconPalIndex = 0, + FOOTPRINT(Xerneas) + .isLegendary = TRUE, + .levelUpLearnset = sXerneasLevelUpLearnset, + .teachableLearnset = sXerneasTeachableLearnset, + .formSpeciesIdTable = sXerneasFormSpeciesIdTable, + .formChangeTable = sXerneasFormChangeTable, + }, #endif //P_FAMILY_XERNEAS #if P_FAMILY_YVELTAL @@ -4107,7 +4719,6 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_DARK_AURA, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, - .isLegendary = TRUE, .speciesName = _("Yveltal"), .cryId = CRY_YVELTAL, .natDexNum = NATIONAL_DEX_YVELTAL, @@ -4123,127 +4734,258 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 0, .trainerScale = 360, .trainerOffset = 7, - FRONT_PIC(Yveltal, 64, 64), + .frontPic = gMonFrontPic_Yveltal, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Yveltal, .frontAnimId = ANIM_FRONT_FLIP, .enemyMonElevation = 5, - BACK_PIC(Yveltal, 64, 48), + .backPic = gMonBackPic_Yveltal, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Yveltal), - ICON(Yveltal, 0), + .palette = gMonPalette_Yveltal, + .shinyPalette = gMonShinyPalette_Yveltal, + .iconSprite = gMonIcon_Yveltal, + .iconPalIndex = 0, FOOTPRINT(Yveltal) - LEARNSETS(Yveltal), + .isLegendary = TRUE, + .levelUpLearnset = sYveltalLevelUpLearnset, + .teachableLearnset = sYveltalTeachableLearnset, }, #endif //P_FAMILY_YVELTAL #if P_FAMILY_ZYGARDE -#define ZYGARDE_MISC_INFO(ability) \ - .types = MON_TYPES(TYPE_DRAGON, TYPE_GROUND), \ - .catchRate = 3, \ - .evYield_HP = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ability, ABILITY_NONE }, \ - .noFlip = TRUE, \ - .speciesName = _("Zygarde"), \ - .natDexNum = NATIONAL_DEX_ZYGARDE, \ - .categoryName = _("Order"), \ - FOOTPRINT(Zygarde) \ - LEARNSETS(Zygarde), \ - .formSpeciesIdTable = sZygardeFormSpeciesIdTable, \ - .isLegendary = TRUE + [SPECIES_ZYGARDE_50_AURA_BREAK] = + { + .baseHP = 108, + .baseAttack = 100, + .baseDefense = 121, + .baseSpeed = 95, + .baseSpAttack = 81, + .baseSpDefense = 95, + .types = MON_TYPES(TYPE_DRAGON, TYPE_GROUND), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_AURA_BREAK, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .speciesName = _("Zygarde"), + .cryId = CRY_ZYGARDE_50, + .natDexNum = NATIONAL_DEX_ZYGARDE, + .categoryName = _("Order"), + .height = 50, + .weight = 3050, + .description = gZygarde50PokedexText, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 721, + .trainerOffset = 19, + .frontPic = gMonFrontPic_Zygarde50, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Zygarde50, + .frontAnimId = ANIM_TIP_MOVE_FORWARD, + .backPic = gMonBackPic_Zygarde50, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_V_STRETCH, + .palette = gMonPalette_Zygarde50, + .shinyPalette = gMonShinyPalette_Zygarde50, + .iconSprite = gMonIcon_Zygarde50, + .iconPalIndex = 1, + FOOTPRINT(Zygarde) + .isLegendary = TRUE, + .levelUpLearnset = sZygardeLevelUpLearnset, + .teachableLearnset = sZygardeTeachableLearnset, + .formSpeciesIdTable = sZygardeFormSpeciesIdTable, + .formChangeTable = sZygarde50AuraBreakFormChangeTable, + }, + [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = + { + .baseHP = 108, + .baseAttack = 100, + .baseDefense = 121, + .baseSpeed = 95, + .baseSpAttack = 81, + .baseSpDefense = 95, + .types = MON_TYPES(TYPE_DRAGON, TYPE_GROUND), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_POWER_CONSTRUCT, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .speciesName = _("Zygarde"), + .cryId = CRY_ZYGARDE_50, + .natDexNum = NATIONAL_DEX_ZYGARDE, + .categoryName = _("Order"), + .height = 50, + .weight = 3050, + .description = gZygarde50PokedexText, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 721, + .trainerOffset = 19, + .frontPic = gMonFrontPic_Zygarde50, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Zygarde50, + .frontAnimId = ANIM_TIP_MOVE_FORWARD, + .backPic = gMonBackPic_Zygarde50, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, + .palette = gMonPalette_Zygarde50, + .shinyPalette = gMonShinyPalette_Zygarde50, + .iconSprite = gMonIcon_Zygarde50, + .iconPalIndex = 1, + FOOTPRINT(Zygarde) + .isLegendary = TRUE, + .levelUpLearnset = sZygardeLevelUpLearnset, + .teachableLearnset = sZygardeTeachableLearnset, + .formSpeciesIdTable = sZygardeFormSpeciesIdTable, + .formChangeTable = sZygarde50PowerConstructFormChangeTable, + }, + [SPECIES_ZYGARDE_10_AURA_BREAK] = + { + .baseHP = 54, + .baseAttack = 100, + .baseDefense = 71, + .baseSpeed = 115, + .baseSpAttack = 61, + .baseSpDefense = 85, + .types = MON_TYPES(TYPE_DRAGON, TYPE_GROUND), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 243 : 219, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_AURA_BREAK, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = TRUE, + .speciesName = _("Zygarde"), + .cryId = CRY_ZYGARDE_10, + .natDexNum = NATIONAL_DEX_ZYGARDE, + .categoryName = _("Order"), + .height = 12, + .weight = 335, + .description = gZygarde10PokedexText, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 721, + .trainerOffset = 19, + .frontPic = gMonFrontPic_Zygarde10, + .frontPicSize = MON_COORDS_SIZE(56, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Zygarde10, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,, + .backPic = gMonBackPic_Zygarde10, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + .palette = gMonPalette_Zygarde10, + .shinyPalette = gMonShinyPalette_Zygarde10, + .iconSprite = gMonIcon_Zygarde10, + .iconPalIndex = 1, + FOOTPRINT(Zygarde) + .isLegendary = TRUE, + .levelUpLearnset = sZygardeLevelUpLearnset, + .teachableLearnset = sZygardeTeachableLearnset, + .formSpeciesIdTable = sZygardeFormSpeciesIdTable, + .formChangeTable = sZygarde10AuraBreakFormChangeTable, + }, -#define ZYGARDE_50_SPECIES_INFO(ability) \ - { \ - .baseHP = 108, \ - .baseAttack = 100, \ - .baseDefense = 121, \ - .baseSpeed = 95, \ - .baseSpAttack = 81, \ - .baseSpDefense = 95, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270,\ - .bodyColor = BODY_COLOR_GREEN, \ - .cryId = CRY_ZYGARDE_50, \ - .height = 50, \ - .weight = 3050, \ - .description = gZygarde50PokedexText, \ - .pokemonScale = 256, \ - .pokemonOffset = 0, \ - .trainerScale = 721, \ - .trainerOffset = 19, \ - FRONT_PIC(Zygarde50, 64, 64), \ - .frontPicYOffset = 0, \ - .frontAnimFrames = sAnims_Zygarde50, \ - .frontAnimId = ANIM_TIP_MOVE_FORWARD, \ - BACK_PIC(Zygarde50, 64, 64), \ - .backPicYOffset = 4, \ - .backAnimId = (ability == ABILITY_POWER_CONSTRUCT \ - ? BACK_ANIM_SHAKE_GLOW_GREEN \ - : BACK_ANIM_V_STRETCH), \ - PALETTES(Zygarde50), \ - ICON(Zygarde50, 1), \ - .formChangeTable = (ability == ABILITY_POWER_CONSTRUCT \ - ? sZygarde50PowerConstructFormChangeTable \ - : sZygarde50AuraBreakFormChangeTable), \ - ZYGARDE_MISC_INFO(ability), \ - } + [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = + { + .baseHP = 54, + .baseAttack = 100, + .baseDefense = 71, + .baseSpeed = 115, + .baseSpAttack = 61, + .baseSpDefense = 85, + .types = MON_TYPES(TYPE_DRAGON, TYPE_GROUND), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 243 : 219, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_POWER_CONSTRUCT, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = TRUE, + .speciesName = _("Zygarde"), + .cryId = CRY_ZYGARDE_10, + .natDexNum = NATIONAL_DEX_ZYGARDE, + .categoryName = _("Order"), + .height = 12, + .weight = 335, + .description = gZygarde10PokedexText, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 721, + .trainerOffset = 19, + .frontPic = gMonFrontPic_Zygarde10, + .frontPicSize = MON_COORDS_SIZE(56, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Zygarde10, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,, + .backPic = gMonBackPic_Zygarde10, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, + .palette = gMonPalette_Zygarde10, + .shinyPalette = gMonShinyPalette_Zygarde10, + .iconSprite = gMonIcon_Zygarde10, + .iconPalIndex = 1, + FOOTPRINT(Zygarde) + .isLegendary = TRUE, + .levelUpLearnset = sZygardeLevelUpLearnset, + .teachableLearnset = sZygardeTeachableLearnset, + .formSpeciesIdTable = sZygardeFormSpeciesIdTable, + .formChangeTable = sZygarde10PowerConstructFormChangeTable, + }, -#define ZYGARDE_10_SPECIES_INFO(ability) \ - { \ - .baseHP = 54, \ - .baseAttack = 100, \ - .baseDefense = 71, \ - .baseSpeed = 115, \ - .baseSpAttack = 61, \ - .baseSpDefense = 85, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 243 : 219,\ - .bodyColor = BODY_COLOR_BLACK, \ - .cryId = CRY_ZYGARDE_10, \ - .height = 12, \ - .weight = 335, \ - .description = gZygarde10PokedexText, \ - .pokemonScale = 256, \ - .pokemonOffset = 0, \ - .trainerScale = 721, \ - .trainerOffset = 19, \ - FRONT_PIC(Zygarde10, 56, 64), \ - .frontPicYOffset = 2, \ - .frontAnimFrames = sAnims_Zygarde10, \ - BACK_PIC(Zygarde10, 64, 56), \ - .backPicYOffset = 8, \ - .backAnimId = (ability == ABILITY_POWER_CONSTRUCT \ - ? BACK_ANIM_SHAKE_GLOW_GREEN \ - : BACK_ANIM_JOLT_RIGHT), \ - PALETTES(Zygarde10), \ - ICON(Zygarde10, 1), \ - .formChangeTable = (ability == ABILITY_POWER_CONSTRUCT \ - ? sZygarde10PowerConstructFormChangeTable \ - : sZygarde10AuraBreakFormChangeTable), \ - ZYGARDE_MISC_INFO(ability), \ - } - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - - [SPECIES_ZYGARDE_50_AURA_BREAK] = ZYGARDE_50_SPECIES_INFO(ABILITY_AURA_BREAK), - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = ZYGARDE_50_SPECIES_INFO(ABILITY_POWER_CONSTRUCT), - [SPECIES_ZYGARDE_10_AURA_BREAK] = ZYGARDE_10_SPECIES_INFO(ABILITY_AURA_BREAK), - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = ZYGARDE_10_SPECIES_INFO(ABILITY_POWER_CONSTRUCT), [SPECIES_ZYGARDE_COMPLETE] = { - ZYGARDE_MISC_INFO(ABILITY_POWER_CONSTRUCT), .baseHP = 216, .baseAttack = 100, .baseDefense = 121, .baseSpeed = 85, .baseSpAttack = 91, .baseSpDefense = 95, + .types = MON_TYPES(TYPE_DRAGON, TYPE_GROUND), + .catchRate = 3, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 354 : 319, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_POWER_CONSTRUCT, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, + .noFlip = TRUE, + .speciesName = _("Zygarde"), .cryId = CRY_ZYGARDE_COMPLETE, + .natDexNum = NATIONAL_DEX_ZYGARDE, + .categoryName = _("Order"), .height = 45, .weight = 6100, .description = COMPOUND_STRING( @@ -4255,52 +4997,53 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 0, .trainerScale = 721, .trainerOffset = 19, - FRONT_PIC(ZygardeComplete, 64, 64), + .frontPic = gMonFrontPic_ZygardeComplete, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_ZygardeComplete, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(ZygardeComplete, 64, 64), + .backPic = gMonBackPic_ZygardeComplete, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, - PALETTES(ZygardeComplete), - ICON(ZygardeComplete, 1), + .palette = gMonPalette_ZygardeComplete, + .shinyPalette = gMonShinyPalette_ZygardeComplete, + .iconSprite = gMonIcon_ZygardeComplete, + .iconPalIndex = 1, + FOOTPRINT(Zygarde) + .isLegendary = TRUE, + .levelUpLearnset = sZygardeLevelUpLearnset, + .teachableLearnset = sZygardeTeachableLearnset, + .formSpeciesIdTable = sZygardeFormSpeciesIdTable, .formChangeTable = sZygardeCompleteFormChangeTable, }, #endif //P_FAMILY_ZYGARDE #if P_FAMILY_DIANCIE -#define DIANCE_MISC_INFO \ - .types = MON_TYPES(TYPE_ROCK, TYPE_FAIRY), \ - .catchRate = 3, \ - .evYield_Defense = 1, \ - .evYield_SpDefense = 2, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .bodyColor = BODY_COLOR_PINK, \ - .speciesName = _("Diancie"), \ - .natDexNum = NATIONAL_DEX_DIANCIE, \ - .categoryName = _("Jewel"), \ - FOOTPRINT(Diancie) \ - LEARNSETS(Diancie), \ - .formSpeciesIdTable = sDiancieFormSpeciesIdTable, \ - .formChangeTable = sDiancieFormChangeTable, \ - .isMythical = TRUE - [SPECIES_DIANCIE] = { - DIANCE_MISC_INFO, .baseHP = 50, .baseAttack = 100, .baseDefense = 150, .baseSpeed = 50, .baseSpAttack = 100, .baseSpDefense = 150, + .types = MON_TYPES(TYPE_ROCK, TYPE_FAIRY), + .catchRate = 3, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, + .evYield_Defense = 1, + .evYield_SpDefense = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Diancie"), .cryId = CRY_DIANCIE, + .natDexNum = NATIONAL_DEX_DIANCIE, + .categoryName = _("Jewel"), .height = 7, .weight = 88, .description = COMPOUND_STRING( @@ -4312,30 +5055,52 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Diancie, 40, 64), + .frontPic = gMonFrontPic_Diancie, + .frontPicSize = MON_COORDS_SIZE(40, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Diancie, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Diancie, 64, 64), + .backPic = gMonBackPic_Diancie, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - PALETTES(Diancie), - ICON(Diancie, 1), + .palette = gMonPalette_Diancie, + .shinyPalette = gMonShinyPalette_Diancie, + .iconSprite = gMonIcon_Diancie, + .iconPalIndex = 1, + FOOTPRINT(Diancie) + .isMythical = TRUE, + .levelUpLearnset = sDiancieLevelUpLearnset, + .teachableLearnset = sDiancieTeachableLearnset, + .formSpeciesIdTable = sDiancieFormSpeciesIdTable, + .formChangeTable = sDiancieFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_DIANCIE_MEGA] = { - DIANCE_MISC_INFO, .baseHP = 50, .baseAttack = 160, .baseDefense = 110, .baseSpeed = 110, .baseSpAttack = 160, .baseSpDefense = 110, + .types = MON_TYPES(TYPE_ROCK, TYPE_FAIRY), + .catchRate = 3, .expYield = 315, + .evYield_Defense = 1, + .evYield_SpDefense = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Diancie"), .cryId = CRY_DIANCIE_MEGA, + .natDexNum = NATIONAL_DEX_DIANCIE, + .categoryName = _("Jewel"), .height = 11, .weight = 278, .description = COMPOUND_STRING( @@ -4347,41 +5112,33 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(DiancieMega, 64, 64), + .frontPic = gMonFrontPic_DiancieMega, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_DiancieMega, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(DiancieMega, 64, 56), + .backPic = gMonBackPic_DiancieMega, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(DiancieMega), - ICON(DiancieMega, 0), + .palette = gMonPalette_DiancieMega, + .shinyPalette = gMonShinyPalette_DiancieMega, + .iconSprite = gMonIcon_DiancieMega, + .iconPalIndex = 0, + FOOTPRINT(Diancie) + .isMythical = TRUE, .isMegaEvolution = TRUE, + .levelUpLearnset = sDiancieLevelUpLearnset, + .teachableLearnset = sDiancieTeachableLearnset, + .formSpeciesIdTable = sDiancieFormSpeciesIdTable, + .formChangeTable = sDiancieFormChangeTable, }, #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_DIANCIE #if P_FAMILY_HOOPA -#define HOOPA_MISC_INFO \ - .catchRate = 3, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, \ - .evYield_SpAttack = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_MAGICIAN, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_PURPLE, \ - .speciesName = _("Hoopa"), \ - .natDexNum = NATIONAL_DEX_HOOPA, \ - FOOTPRINT(Hoopa) \ - .formSpeciesIdTable = sHoopaFormSpeciesIdTable, \ - .formChangeTable = sHoopaFormChangeTable, \ - .isMythical = TRUE - [SPECIES_HOOPA_CONFINED] = { - HOOPA_MISC_INFO, .baseHP = 80, .baseAttack = 110, .baseDefense = 60, @@ -4389,8 +5146,19 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .baseSpAttack = 150, .baseSpDefense = 130, .types = MON_TYPES(TYPE_PSYCHIC, TYPE_GHOST), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, .friendship = 100, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_MAGICIAN, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Hoopa"), .cryId = CRY_HOOPA_CONFINED, + .natDexNum = NATIONAL_DEX_HOOPA, .categoryName = _("Mischief"), .height = 5, .weight = 90, @@ -4403,22 +5171,30 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(HoopaConfined, 48, 48), + .frontPic = gMonFrontPic_HoopaConfined, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_HoopaConfined, .frontAnimId = ANIM_ZIGZAG_SLOW, .enemyMonElevation = 13, - BACK_PIC(HoopaConfined, 64, 56), + .backPic = gMonBackPic_HoopaConfined, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(HoopaConfined), - ICON(HoopaConfined, 0), - LEARNSETS(HoopaConfined), + .palette = gMonPalette_HoopaConfined, + .shinyPalette = gMonShinyPalette_HoopaConfined, + .iconSprite = gMonIcon_HoopaConfined, + .iconPalIndex = 0, + FOOTPRINT(Hoopa) + .isMythical = TRUE, + .levelUpLearnset = sHoopaConfinedLevelUpLearnset, + .teachableLearnset = sHoopaConfinedTeachableLearnset, + .formSpeciesIdTable = sHoopaFormSpeciesIdTable, + .formChangeTable = sHoopaFormChangeTable, }, [SPECIES_HOOPA_UNBOUND] = { - HOOPA_MISC_INFO, .baseHP = 80, .baseAttack = 160, .baseDefense = 60, @@ -4426,8 +5202,19 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .baseSpAttack = 170, .baseSpDefense = 130, .types = MON_TYPES(TYPE_PSYCHIC, TYPE_DARK), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, .friendship = P_UPDATED_FRIENDSHIP >= GEN_8 ? STANDARD_FRIENDSHIP : 100, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_MAGICIAN, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Hoopa"), .cryId = CRY_HOOPA_UNBOUND, + .natDexNum = NATIONAL_DEX_HOOPA, .categoryName = _("Djinn"), .height = 65, .weight = 490, @@ -4440,17 +5227,26 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(HoopaUnbound, 64, 64), + .frontPic = gMonFrontPic_HoopaUnbound, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_HoopaUnbound, .frontAnimId = ANIM_GROW_IN_STAGES, .enemyMonElevation = 3, - BACK_PIC(HoopaUnbound, 64, 64), + .backPic = gMonBackPic_HoopaUnbound, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_V_SHAKE_LOW, - PALETTES(HoopaUnbound), - ICON(HoopaUnbound, 0), - LEARNSETS(HoopaUnbound), + .palette = gMonPalette_HoopaUnbound, + .shinyPalette = gMonShinyPalette_HoopaUnbound, + .iconSprite = gMonIcon_HoopaUnbound, + .iconPalIndex = 0, + FOOTPRINT(Hoopa) + .isMythical = TRUE, + .levelUpLearnset = sHoopaUnboundLevelUpLearnset, + .teachableLearnset = sHoopaUnboundTeachableLearnset, + .formSpeciesIdTable = sHoopaFormSpeciesIdTable, + .formChangeTable = sHoopaFormChangeTable, }, #endif //P_FAMILY_HOOPA @@ -4474,7 +5270,6 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_WATER_ABSORB, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, - .isMythical = TRUE, .speciesName = _("Volcanion"), .cryId = CRY_VOLCANION, .natDexNum = NATIONAL_DEX_VOLCANION, @@ -4490,17 +5285,23 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 0, .trainerScale = 290, .trainerOffset = 1, - FRONT_PIC(Volcanion, 64, 64), + .frontPic = gMonFrontPic_Volcanion, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Volcanion, .frontAnimId = ANIM_V_SHAKE_TWICE, - BACK_PIC(Volcanion, 64, 64), + .backPic = gMonBackPic_Volcanion, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, - PALETTES(Volcanion), - ICON(Volcanion, 0), + .palette = gMonPalette_Volcanion, + .shinyPalette = gMonShinyPalette_Volcanion, + .iconSprite = gMonIcon_Volcanion, + .iconPalIndex = 0, FOOTPRINT(Volcanion) - LEARNSETS(Volcanion), + .isMythical = TRUE, + .levelUpLearnset = sVolcanionLevelUpLearnset, + .teachableLearnset = sVolcanionTeachableLearnset, }, #endif //P_FAMILY_VOLCANION diff --git a/src/data/pokemon/species_info/gen_7.h b/src/data/pokemon/species_info/gen_7.h index 0cd8db3770..f6a12fc0eb 100644 --- a/src/data/pokemon/species_info/gen_7.h +++ b/src/data/pokemon/species_info/gen_7.h @@ -38,17 +38,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Rowlet, 31, 37), + .frontPic = gMonFrontPic_Rowlet, + .frontPicSize = MON_COORDS_SIZE(31, 37), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Rowlet, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, - BACK_PIC(Rowlet, 43, 36), + .backPic = gMonBackPic_Rowlet, + .backPicSize = MON_COORDS_SIZE(43, 36), .backPicYOffset = 15, .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, - PALETTES(Rowlet), - ICON(Rowlet, 0), + .palette = gMonPalette_Rowlet, + .shinyPalette = gMonShinyPalette_Rowlet, + .iconSprite = gMonIcon_Rowlet, + .iconPalIndex = 0, FOOTPRINT(Rowlet) - LEARNSETS(Rowlet), + .levelUpLearnset = sRowletLevelUpLearnset, + .teachableLearnset = sRowletTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_DARTRIX}), }, @@ -87,46 +92,28 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Dartrix, 34, 47), + .frontPic = gMonFrontPic_Dartrix, + .frontPicSize = MON_COORDS_SIZE(34, 47), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Dartrix, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Dartrix, 56, 54), + .backPic = gMonBackPic_Dartrix, + .backPicSize = MON_COORDS_SIZE(56, 54), .backPicYOffset = 4, .backAnimId = BACK_ANIM_V_STRETCH, - PALETTES(Dartrix), - ICON(Dartrix, 1), + .palette = gMonPalette_Dartrix, + .shinyPalette = gMonShinyPalette_Dartrix, + .iconSprite = gMonIcon_Dartrix, + .iconPalIndex = 1, FOOTPRINT(Dartrix) - LEARNSETS(Dartrix), + .levelUpLearnset = sDartrixLevelUpLearnset, + .teachableLearnset = sDartrixTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_DECIDUEYE}, {EVO_NONE, 0, SPECIES_DECIDUEYE_HISUIAN}), }, -#define DECIDUEYE_MISC_INFO \ - .catchRate = 45, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 265 : 239,\ - .evYield_Attack = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), \ - .bodyColor = BODY_COLOR_BROWN, \ - .speciesName = _("Decidueye"), \ - .cryId = CRY_DECIDUEYE, \ - .natDexNum = NATIONAL_DEX_DECIDUEYE, \ - .categoryName = _("Arrow Quill"), \ - .height = 16, \ - .pokemonScale = 259, \ - .pokemonOffset = 1, \ - .trainerScale = 296, \ - .trainerOffset = 1, \ - FOOTPRINT(Decidueye) \ - .formSpeciesIdTable = sDecidueyeFormSpeciesIdTable - [SPECIES_DECIDUEYE] = { - DECIDUEYE_MISC_INFO, .baseHP = 78, .baseAttack = 107, .baseDefense = 75, @@ -134,29 +121,53 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .baseSpAttack = 100, .baseSpDefense = 100, .types = MON_TYPES(TYPE_GRASS, TYPE_GHOST), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 265 : 239, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Decidueye"), + .cryId = CRY_DECIDUEYE, + .natDexNum = NATIONAL_DEX_DECIDUEYE, + .categoryName = _("Arrow Quill"), + .height = 16, .weight = 366, .description = COMPOUND_STRING( "Decidueye is cool and cautious.\n" "It fires arrow quills from its wings with\n" "such precision, they can pierce a pebble\n" "at distances of over a hundred yards."), - FRONT_PIC(Decidueye, 45, 64), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + .frontPic = gMonFrontPic_Decidueye, + .frontPicSize = MON_COORDS_SIZE(45, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Decidueye, .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_FAST, - BACK_PIC(Decidueye, 46, 62), + .backPic = gMonBackPic_Decidueye, + .backPicSize = MON_COORDS_SIZE(46, 62), .backPicYOffset = 0, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Decidueye), - ICON(Decidueye, 1), - LEARNSETS(Decidueye), + .palette = gMonPalette_Decidueye, + .shinyPalette = gMonShinyPalette_Decidueye, + .iconSprite = gMonIcon_Decidueye, + .iconPalIndex = 1, + FOOTPRINT(Decidueye) + .levelUpLearnset = sDecidueyeLevelUpLearnset, + .teachableLearnset = sDecidueyeTeachableLearnset, + .formSpeciesIdTable = sDecidueyeFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_DECIDUEYE_HISUIAN] = { - DECIDUEYE_MISC_INFO, .baseHP = 88, .baseAttack = 112, .baseDefense = 80, @@ -164,24 +175,49 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .baseSpAttack = 95, .baseSpDefense = 95, .types = MON_TYPES(TYPE_GRASS, TYPE_FIGHTING), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 265 : 239, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_SCRAPPY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Decidueye"), + .cryId = CRY_DECIDUEYE, + .natDexNum = NATIONAL_DEX_DECIDUEYE, + .categoryName = _("Arrow Quill"), + .height = 16, .weight = 370, .description = COMPOUND_STRING( "The air stored inside the rachises\n" "of Decidueye's feathers insulates\n" "the Pokémon against Hisui's extreme\n" "cold."), - FRONT_PIC(DecidueyeHisuian, 64, 64), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + .frontPic = gMonFrontPic_DecidueyeHisuian, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_DecidueyeHisuian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(DecidueyeHisuian, 64, 64), + .backPic = gMonBackPic_DecidueyeHisuian, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(DecidueyeHisuian), - ICON(DecidueyeHisuian, 0), - LEARNSETS(DecidueyeHisuian), + .palette = gMonPalette_DecidueyeHisuian, + .shinyPalette = gMonShinyPalette_DecidueyeHisuian, + .iconSprite = gMonIcon_DecidueyeHisuian, + .iconPalIndex = 0, + FOOTPRINT(Decidueye) .isHisuianForm = TRUE, + .levelUpLearnset = sDecidueyeHisuianLevelUpLearnset, + .teachableLearnset = sDecidueyeHisuianTeachableLearnset, + .formSpeciesIdTable = sDecidueyeFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_ROWLET @@ -221,17 +257,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Litten, 48, 40), + .frontPic = gMonFrontPic_Litten, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Litten, .frontAnimId = ANIM_H_STRETCH, - BACK_PIC(Litten, 64, 48), + .backPic = gMonBackPic_Litten, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Litten), - ICON(Litten, 0), + .palette = gMonPalette_Litten, + .shinyPalette = gMonShinyPalette_Litten, + .iconSprite = gMonIcon_Litten, + .iconPalIndex = 0, FOOTPRINT(Litten) - LEARNSETS(Litten), + .levelUpLearnset = sLittenLevelUpLearnset, + .teachableLearnset = sLittenTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_TORRACAT}), }, @@ -269,17 +310,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Torracat, 56, 64), + .frontPic = gMonFrontPic_Torracat, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Torracat, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Torracat, 64, 56), + .backPic = gMonBackPic_Torracat, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Torracat), - ICON(Torracat, 0), + .palette = gMonPalette_Torracat, + .shinyPalette = gMonShinyPalette_Torracat, + .iconSprite = gMonIcon_Torracat, + .iconPalIndex = 0, FOOTPRINT(Torracat) - LEARNSETS(Torracat), + .levelUpLearnset = sTorracatLevelUpLearnset, + .teachableLearnset = sTorracatTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_INCINEROAR}), }, @@ -317,17 +363,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 2, .trainerScale = 286, .trainerOffset = 1, - FRONT_PIC(Incineroar, 64, 64), + .frontPic = gMonFrontPic_Incineroar, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Incineroar, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Incineroar, 64, 56), + .backPic = gMonBackPic_Incineroar, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Incineroar), - ICON(Incineroar, 0), + .palette = gMonPalette_Incineroar, + .shinyPalette = gMonShinyPalette_Incineroar, + .iconSprite = gMonIcon_Incineroar, + .iconPalIndex = 0, FOOTPRINT(Incineroar) - LEARNSETS(Incineroar), + .levelUpLearnset = sIncineroarLevelUpLearnset, + .teachableLearnset = sIncineroarTeachableLearnset, }, #endif //P_FAMILY_LITTEN @@ -366,17 +417,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Popplio, 40, 48), + .frontPic = gMonFrontPic_Popplio, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Popplio, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Popplio, 48, 48), + .backPic = gMonBackPic_Popplio, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Popplio), - ICON(Popplio, 0), + .palette = gMonPalette_Popplio, + .shinyPalette = gMonShinyPalette_Popplio, + .iconSprite = gMonIcon_Popplio, + .iconPalIndex = 0, FOOTPRINT(Popplio) - LEARNSETS(Popplio), + .levelUpLearnset = sPopplioLevelUpLearnset, + .teachableLearnset = sPopplioTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_BRIONNE}), }, @@ -414,17 +470,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Brionne, 48, 56), + .frontPic = gMonFrontPic_Brionne, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Brionne, .frontAnimId = ANIM_SHRINK_GROW, - BACK_PIC(Brionne, 48, 56), + .backPic = gMonBackPic_Brionne, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Brionne), - ICON(Brionne, 0), + .palette = gMonPalette_Brionne, + .shinyPalette = gMonShinyPalette_Brionne, + .iconSprite = gMonIcon_Brionne, + .iconPalIndex = 0, FOOTPRINT(Brionne) - LEARNSETS(Brionne), + .levelUpLearnset = sBrionneLevelUpLearnset, + .teachableLearnset = sBrionneTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_PRIMARINA}), }, @@ -462,17 +523,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 2, .trainerScale = 286, .trainerOffset = 1, - FRONT_PIC(Primarina, 64, 64), + .frontPic = gMonFrontPic_Primarina, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Primarina, .frontAnimId = ANIM_SHAKE_GLOW_BLUE_SLOW, - BACK_PIC(Primarina, 64, 64), + .backPic = gMonBackPic_Primarina, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Primarina), - ICON(Primarina, 0), + .palette = gMonPalette_Primarina, + .shinyPalette = gMonShinyPalette_Primarina, + .iconSprite = gMonIcon_Primarina, + .iconPalIndex = 0, FOOTPRINT(Primarina) - LEARNSETS(Primarina), + .levelUpLearnset = sPrimarinaLevelUpLearnset, + .teachableLearnset = sPrimarinaTeachableLearnset, }, #endif //P_FAMILY_POPPLIO @@ -512,17 +578,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pikipek, 29, 40), + .frontPic = gMonFrontPic_Pikipek, + .frontPicSize = MON_COORDS_SIZE(29, 40), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Pikipek, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Pikipek, 48, 48), + .backPic = gMonBackPic_Pikipek, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 8, .backAnimId = BACK_ANIM_SHRINK_GROW, - PALETTES(Pikipek), - ICON(Pikipek, 2), + .palette = gMonPalette_Pikipek, + .shinyPalette = gMonShinyPalette_Pikipek, + .iconSprite = gMonIcon_Pikipek, + .iconPalIndex = 2, FOOTPRINT(Pikipek) - LEARNSETS(Pikipek), + .levelUpLearnset = sPikipekLevelUpLearnset, + .teachableLearnset = sPikipekTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_TRUMBEAK}), }, @@ -561,17 +632,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Trumbeak, 44, 53), + .frontPic = gMonFrontPic_Trumbeak, + .frontPicSize = MON_COORDS_SIZE(44, 53), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Trumbeak, .frontAnimId = ANIM_H_STRETCH, - BACK_PIC(Trumbeak, 56, 56), + .backPic = gMonBackPic_Trumbeak, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_H_STRETCH, - PALETTES(Trumbeak), - ICON(Trumbeak, 0), + .palette = gMonPalette_Trumbeak, + .shinyPalette = gMonShinyPalette_Trumbeak, + .iconSprite = gMonIcon_Trumbeak, + .iconPalIndex = 0, FOOTPRINT(Trumbeak) - LEARNSETS(Trumbeak), + .levelUpLearnset = sTrumbeakLevelUpLearnset, + .teachableLearnset = sTrumbeakTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_TOUCANNON}), }, @@ -610,17 +686,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Toucannon, 59, 59), + .frontPic = gMonFrontPic_Toucannon, + .frontPicSize = MON_COORDS_SIZE(59, 59), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Toucannon, .frontAnimId = ANIM_SHAKE_GLOW_RED_SLOW, - BACK_PIC(Toucannon, 64, 56), + .backPic = gMonBackPic_Toucannon, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(Toucannon), - ICON(Toucannon, 0), + .palette = gMonPalette_Toucannon, + .shinyPalette = gMonShinyPalette_Toucannon, + .iconSprite = gMonIcon_Toucannon, + .iconPalIndex = 0, FOOTPRINT(Toucannon) - LEARNSETS(Toucannon), + .levelUpLearnset = sToucannonLevelUpLearnset, + .teachableLearnset = sToucannonTeachableLearnset, }, #endif //P_FAMILY_PIKIPEK @@ -660,17 +741,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Yungoos, 64, 40), + .frontPic = gMonFrontPic_Yungoos, + .frontPicSize = MON_COORDS_SIZE(64, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Yungoos, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Yungoos, 48, 40), + .backPic = gMonBackPic_Yungoos, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Yungoos), - ICON(Yungoos, 2), + .palette = gMonPalette_Yungoos, + .shinyPalette = gMonShinyPalette_Yungoos, + .iconSprite = gMonIcon_Yungoos, + .iconPalIndex = 2, FOOTPRINT(Yungoos) - LEARNSETS(Yungoos), + .levelUpLearnset = sYungoosLevelUpLearnset, + .teachableLearnset = sYungoosTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_DAY, 20, SPECIES_GUMSHOOS}), }, @@ -709,17 +795,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Gumshoos, 56, 56), + .frontPic = gMonFrontPic_Gumshoos, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Gumshoos, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Gumshoos, 48, 56), + .backPic = gMonBackPic_Gumshoos, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Gumshoos), - ICON(Gumshoos, 2), + .palette = gMonPalette_Gumshoos, + .shinyPalette = gMonShinyPalette_Gumshoos, + .iconSprite = gMonIcon_Gumshoos, + .iconPalIndex = 2, FOOTPRINT(Gumshoos) - LEARNSETS(Gumshoos), + .levelUpLearnset = sGumshoosLevelUpLearnset, + .teachableLearnset = sGumshoosTeachableLearnset, }, #endif //P_FAMILY_YUNGOOS @@ -758,17 +849,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Grubbin, 48, 32), + .frontPic = gMonFrontPic_Grubbin, + .frontPicSize = MON_COORDS_SIZE(48, 32), .frontPicYOffset = 17, .frontAnimFrames = sAnims_Grubbin, .frontAnimId = ANIM_H_SLIDE, - BACK_PIC(Grubbin, 64, 32), + .backPic = gMonBackPic_Grubbin, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 16, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Grubbin), - ICON(Grubbin, 0), + .palette = gMonPalette_Grubbin, + .shinyPalette = gMonShinyPalette_Grubbin, + .iconSprite = gMonIcon_Grubbin, + .iconPalIndex = 0, FOOTPRINT(Grubbin) - LEARNSETS(Grubbin), + .levelUpLearnset = sGrubbinLevelUpLearnset, + .teachableLearnset = sGrubbinTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_CHARJABUG}), }, @@ -807,17 +903,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Charjabug, 40, 40), + .frontPic = gMonFrontPic_Charjabug, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Charjabug, .frontAnimId = ANIM_SHAKE_FLASH_YELLOW_SLOW, - BACK_PIC(Charjabug, 64, 40), + .backPic = gMonBackPic_Charjabug, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 15, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Charjabug), - ICON(Charjabug, 1), + .palette = gMonPalette_Charjabug, + .shinyPalette = gMonShinyPalette_Charjabug, + .iconSprite = gMonIcon_Charjabug, + .iconPalIndex = 1, FOOTPRINT(Charjabug) - LEARNSETS(Charjabug), + .levelUpLearnset = sCharjabugLevelUpLearnset, + .teachableLearnset = sCharjabugTeachableLearnset, .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_VIKAVOLT}, {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_VIKAVOLT}), }, @@ -856,18 +957,23 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Vikavolt, 64, 56), + .frontPic = gMonFrontPic_Vikavolt, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Vikavolt, .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES, .enemyMonElevation = 8, - BACK_PIC(Vikavolt, 64, 56), + .backPic = gMonBackPic_Vikavolt, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Vikavolt), - ICON(Vikavolt, 0), + .palette = gMonPalette_Vikavolt, + .shinyPalette = gMonShinyPalette_Vikavolt, + .iconSprite = gMonIcon_Vikavolt, + .iconPalIndex = 0, FOOTPRINT(Vikavolt) - LEARNSETS(Vikavolt), + .levelUpLearnset = sVikavoltLevelUpLearnset, + .teachableLearnset = sVikavoltTeachableLearnset, }, #endif //P_FAMILY_GRUBBIN @@ -907,17 +1013,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Crabrawler, 64, 56), + .frontPic = gMonFrontPic_Crabrawler, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Crabrawler, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Crabrawler, 64, 48), + .backPic = gMonBackPic_Crabrawler, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Crabrawler), - ICON(Crabrawler, 2), + .palette = gMonPalette_Crabrawler, + .shinyPalette = gMonShinyPalette_Crabrawler, + .iconSprite = gMonIcon_Crabrawler, + .iconPalIndex = 2, FOOTPRINT(Crabrawler) - LEARNSETS(Crabrawler), + .levelUpLearnset = sCrabrawlerLevelUpLearnset, + .teachableLearnset = sCrabrawlerTeachableLearnset, .evolutions = EVOLUTION({EVO_SPECIFIC_MAP, MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM, SPECIES_CRABOMINABLE}, {EVO_ITEM, ITEM_ICE_STONE, SPECIES_CRABOMINABLE}), }, @@ -957,133 +1068,244 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 0, .trainerScale = 290, .trainerOffset = 1, - FRONT_PIC(Crabominable, 64, 64), + .frontPic = gMonFrontPic_Crabominable, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Crabominable, .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_FAST, - BACK_PIC(Crabominable, 64, 64), + .backPic = gMonBackPic_Crabominable, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Crabominable), - ICON(Crabominable, 2), + .palette = gMonPalette_Crabominable, + .shinyPalette = gMonShinyPalette_Crabominable, + .iconSprite = gMonIcon_Crabominable, + .iconPalIndex = 2, FOOTPRINT(Crabominable) - LEARNSETS(Crabominable), + .levelUpLearnset = sCrabominableLevelUpLearnset, + .teachableLearnset = sCrabominableTeachableLearnset, }, #endif //P_FAMILY_CRABRAWLER #if P_FAMILY_ORICORIO -#define ORICORIO_MISC_INFO \ - .baseHP = 75, \ - .baseAttack = 70, \ - .baseDefense = 70, \ - .baseSpeed = 93, \ - .baseSpAttack = 98, \ - .baseSpDefense = 70, \ - .catchRate = 45, \ - .expYield = 167, \ - .evYield_SpAttack = 2, \ - .itemRare = ITEM_HONEY, \ - .genderRatio = PERCENT_FEMALE(75), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), \ - .abilities = { ABILITY_DANCER, ABILITY_NONE }, \ - .speciesName = _("Oricorio"), \ - .natDexNum = NATIONAL_DEX_ORICORIO, \ - .categoryName = _("Dancing"), \ - .height = 6, \ - .weight = 34, \ - .pokemonScale = 422, \ - .pokemonOffset = 12, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .frontAnimFrames = sAnims_Oricorio, \ - .backPicYOffset = 0, \ - FOOTPRINT(Oricorio) \ - LEARNSETS(Oricorio), \ - .formSpeciesIdTable = sOricorioFormSpeciesIdTable, \ - .formChangeTable = sOricorioFormChangeTable - //.backAnimId = BACK_ANIM_NONE, \ - [SPECIES_ORICORIO_BAILE] = { - ORICORIO_MISC_INFO, + .baseHP = 75, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 93, + .baseSpAttack = 98, + .baseSpDefense = 70, .types = MON_TYPES(TYPE_FIRE, TYPE_FLYING), + .catchRate = 45, + .expYield = 167, + .evYield_SpAttack = 2, + .itemRare = ITEM_HONEY, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), + .abilities = { ABILITY_DANCER, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Oricorio"), .cryId = CRY_ORICORIO_BAILE, + .natDexNum = NATIONAL_DEX_ORICORIO, + .categoryName = _("Dancing"), + .height = 6, + .weight = 34, .description = COMPOUND_STRING( "It wins the hearts of its enemies\n" "with its passionate dancing and then\n" "uses the opening it creates to\n" "burn them up with blazing flames."), - FRONT_PIC(OricorioBaile, 56, 64), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_OricorioBaile, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Oricorio, .frontAnimId = ANIM_CONCAVE_ARC_SMALL, - BACK_PIC(OricorioBaile, 64, 64), + .backPic = gMonBackPic_OricorioBaile, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(OricorioBaile), - ICON(OricorioBaile, 0), + .palette = gMonPalette_OricorioBaile, + .shinyPalette = gMonShinyPalette_OricorioBaile, + .iconSprite = gMonIcon_OricorioBaile, + .iconPalIndex = 0, + FOOTPRINT(Oricorio) + .levelUpLearnset = sOricorioLevelUpLearnset, + .teachableLearnset = sOricorioTeachableLearnset, + .formSpeciesIdTable = sOricorioFormSpeciesIdTable, + .formChangeTable = sOricorioFormChangeTable, }, [SPECIES_ORICORIO_POM_POM] = { - ORICORIO_MISC_INFO, + .baseHP = 75, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 93, + .baseSpAttack = 98, + .baseSpDefense = 70, .types = MON_TYPES(TYPE_ELECTRIC, TYPE_FLYING), + .catchRate = 45, + .expYield = 167, + .evYield_SpAttack = 2, + .itemRare = ITEM_HONEY, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), + .abilities = { ABILITY_DANCER, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Oricorio"), .cryId = CRY_ORICORIO_POM_POM, + .natDexNum = NATIONAL_DEX_ORICORIO, + .categoryName = _("Dancing"), + .height = 6, + .weight = 34, .description = COMPOUND_STRING( "This form of Oricorio has sipped\n" "yellow nectar. It uses nimble steps to\n" "approach opponents, then knocks\n" "them out with electric punches."), - FRONT_PIC(OricorioPomPom, 56, 56), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_OricorioPomPom, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Oricorio, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(OricorioPomPom, 64, 64), + .backPic = gMonBackPic_OricorioPomPom, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(OricorioPomPom), - ICON(OricorioPomPom, 1), + .palette = gMonPalette_OricorioPomPom, + .shinyPalette = gMonShinyPalette_OricorioPomPom, + .iconSprite = gMonIcon_OricorioPomPom, + .iconPalIndex = 1, + FOOTPRINT(Oricorio) + .levelUpLearnset = sOricorioLevelUpLearnset, + .teachableLearnset = sOricorioTeachableLearnset, + .formSpeciesIdTable = sOricorioFormSpeciesIdTable, + .formChangeTable = sOricorioFormChangeTable, }, [SPECIES_ORICORIO_PAU] = { - ORICORIO_MISC_INFO, + .baseHP = 75, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 93, + .baseSpAttack = 98, + .baseSpDefense = 70, .types = MON_TYPES(TYPE_PSYCHIC, TYPE_FLYING), + .catchRate = 45, + .expYield = 167, + .evYield_SpAttack = 2, + .itemRare = ITEM_HONEY, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), + .abilities = { ABILITY_DANCER, ABILITY_NONE }, .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Oricorio"), .cryId = CRY_ORICORIO_PAU, + .natDexNum = NATIONAL_DEX_ORICORIO, + .categoryName = _("Dancing"), + .height = 6, + .weight = 34, .description = COMPOUND_STRING( "This form of Oricorio has sipped\n" "pink nectar. It elevates its mind with\n" "the gentle steps of its dance, then\n" "unleashes its psychic energy."), - FRONT_PIC(OricorioPau, 56, 64), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_OricorioPau, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Oricorio, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(OricorioPau, 64, 64), + .backPic = gMonBackPic_OricorioPau, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(OricorioPau), - ICON(OricorioPau, 1), + .palette = gMonPalette_OricorioPau, + .shinyPalette = gMonShinyPalette_OricorioPau, + .iconSprite = gMonIcon_OricorioPau, + .iconPalIndex = 1, + FOOTPRINT(Oricorio) + .levelUpLearnset = sOricorioLevelUpLearnset, + .teachableLearnset = sOricorioTeachableLearnset, + .formSpeciesIdTable = sOricorioFormSpeciesIdTable, + .formChangeTable = sOricorioFormChangeTable, }, [SPECIES_ORICORIO_SENSU] = { - ORICORIO_MISC_INFO, + .baseHP = 75, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 93, + .baseSpAttack = 98, + .baseSpDefense = 70, .types = MON_TYPES(TYPE_GHOST, TYPE_FLYING), + .catchRate = 45, + .expYield = 167, + .evYield_SpAttack = 2, + .itemRare = ITEM_HONEY, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), + .abilities = { ABILITY_DANCER, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Oricorio"), .cryId = CRY_ORICORIO_SENSU, + .natDexNum = NATIONAL_DEX_ORICORIO, + .categoryName = _("Dancing"), + .height = 6, + .weight = 34, .description = COMPOUND_STRING( "It charms its opponents with its\n" "refined dancing. When they let their\n" "guard down, it places a curse on\n" "them that will bring on their demise."), - FRONT_PIC(OricorioSensu, 64, 56), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_OricorioSensu, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Oricorio, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(OricorioSensu, 64, 64), + .backPic = gMonBackPic_OricorioSensu, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(OricorioSensu), - ICON(OricorioSensu, 0), + .palette = gMonPalette_OricorioSensu, + .shinyPalette = gMonShinyPalette_OricorioSensu, + .iconSprite = gMonIcon_OricorioSensu, + .iconPalIndex = 0, + FOOTPRINT(Oricorio) + .levelUpLearnset = sOricorioLevelUpLearnset, + .teachableLearnset = sOricorioTeachableLearnset, + .formSpeciesIdTable = sOricorioFormSpeciesIdTable, + .formChangeTable = sOricorioFormChangeTable, }, #endif //P_FAMILY_ORICORIO @@ -1123,18 +1345,23 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cutiefly, 33, 35), + .frontPic = gMonFrontPic_Cutiefly, + .frontPicSize = MON_COORDS_SIZE(33, 35), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Cutiefly, .frontAnimId = ANIM_H_SLIDE_WOBBLE, .enemyMonElevation = 10, - BACK_PIC(Cutiefly, 56, 48), + .backPic = gMonBackPic_Cutiefly, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 15, .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, - PALETTES(Cutiefly), - ICON(Cutiefly, 2), + .palette = gMonPalette_Cutiefly, + .shinyPalette = gMonShinyPalette_Cutiefly, + .iconSprite = gMonIcon_Cutiefly, + .iconPalIndex = 2, FOOTPRINT(Cutiefly) - LEARNSETS(Cutiefly), + .levelUpLearnset = sCutieflyLevelUpLearnset, + .teachableLearnset = sCutieflyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_RIBOMBEE}), }, @@ -1173,226 +1400,312 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Ribombee, 32, 47), + .frontPic = gMonFrontPic_Ribombee, + .frontPicSize = MON_COORDS_SIZE(32, 47), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Ribombee, .frontAnimId = ANIM_CONVEX_DOUBLE_ARC_TWICE, .enemyMonElevation = 6, - BACK_PIC(Ribombee, 56, 48), + .backPic = gMonBackPic_Ribombee, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 11, .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, - PALETTES(Ribombee), - ICON(Ribombee, 2), + .palette = gMonPalette_Ribombee, + .shinyPalette = gMonShinyPalette_Ribombee, + .iconSprite = gMonIcon_Ribombee, + .iconPalIndex = 2, FOOTPRINT(Ribombee) - LEARNSETS(Ribombee), + .levelUpLearnset = sRibombeeLevelUpLearnset, + .teachableLearnset = sRibombeeTeachableLearnset, }, #endif //P_FAMILY_CUTIEFLY #if P_FAMILY_ROCKRUFF -#define ROCKRUFF_MISC_INFO \ - .baseHP = 45, \ - .baseAttack = 65, \ - .baseDefense = 40, \ - .baseSpeed = 60, \ - .baseSpAttack = 30, \ - .baseSpDefense = 40, \ - .types = MON_TYPES(TYPE_ROCK), \ - .catchRate = 190, \ - .expYield = 56, \ - .evYield_Attack = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .bodyColor = BODY_COLOR_BROWN, \ - .speciesName = _("Rockruff"), \ - .cryId = CRY_ROCKRUFF, \ - .natDexNum = NATIONAL_DEX_ROCKRUFF, \ - .categoryName = _("Puppy"), \ - .height = 5, \ - .weight = 92, \ - .description = gRockruffPokedexText, \ - .pokemonScale = 432, \ - .pokemonOffset = 13, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .frontPicYOffset = 11, \ - .frontAnimFrames = sAnims_Rockruff, \ - .frontAnimId = ANIM_V_STRETCH, \ - .backPicYOffset = 7, \ - PALETTES(Rockruff), \ - ICON(Rockruff, 2), \ - FOOTPRINT(Rockruff) \ - LEARNSETS(Rockruff), \ - .formSpeciesIdTable = sRockruffFormSpeciesIdTable - [SPECIES_ROCKRUFF] = { - ROCKRUFF_MISC_INFO, + .baseHP = 45, + .baseAttack = 65, + .baseDefense = 40, + .baseSpeed = 60, + .baseSpAttack = 30, + .baseSpDefense = 40, + .types = MON_TYPES(TYPE_ROCK), + .catchRate = 190, + .expYield = 56, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_KEEN_EYE, ABILITY_VITAL_SPIRIT, ABILITY_STEADFAST }, - FRONT_PIC(Rockruff, 37, 39), - BACK_PIC(Rockruff, 64, 56), + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Rockruff"), + .cryId = CRY_ROCKRUFF, + .natDexNum = NATIONAL_DEX_ROCKRUFF, + .categoryName = _("Puppy"), + .height = 5, + .weight = 92, + .description = gRockruffPokedexText, + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Rockruff, + .frontPicSize = MON_COORDS_SIZE(37, 39), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Rockruff, + .frontAnimId = ANIM_V_STRETCH, + .backPic = gMonBackPic_Rockruff, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicYOffset = 7, .backAnimId = BACK_ANIM_V_STRETCH, + .palette = gMonPalette_Rockruff, + .shinyPalette = gMonShinyPalette_Rockruff, + .iconSprite = gMonIcon_Rockruff, + .iconPalIndex = 2, + FOOTPRINT(Rockruff) + .levelUpLearnset = sRockruffLevelUpLearnset, + .teachableLearnset = sRockruffTeachableLearnset, + .formSpeciesIdTable = sRockruffFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL_DAY, 25, SPECIES_LYCANROC_MIDDAY}, {EVO_LEVEL_NIGHT, 25, SPECIES_LYCANROC_MIDNIGHT}), }, [SPECIES_ROCKRUFF_OWN_TEMPO] = { - ROCKRUFF_MISC_INFO, + .baseHP = 45, + .baseAttack = 65, + .baseDefense = 40, + .baseSpeed = 60, + .baseSpAttack = 30, + .baseSpDefense = 40, + .types = MON_TYPES(TYPE_ROCK), + .catchRate = 190, + .expYield = 56, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_OWN_TEMPO, ABILITY_NONE, ABILITY_NONE }, - FRONT_PIC(Rockruff, 40, 48), - BACK_PIC(Rockruff, 64, 56), + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Rockruff"), + .cryId = CRY_ROCKRUFF, + .natDexNum = NATIONAL_DEX_ROCKRUFF, + .categoryName = _("Puppy"), + .height = 5, + .weight = 92, + .description = gRockruffPokedexText, + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Rockruff, + .frontPicSize = MON_COORDS_SIZE(40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Rockruff, + .frontAnimId = ANIM_V_STRETCH, + .backPic = gMonBackPic_Rockruff, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Rockruff, + .shinyPalette = gMonShinyPalette_Rockruff, + .iconSprite = gMonIcon_Rockruff, + .iconPalIndex = 2, + FOOTPRINT(Rockruff) + .levelUpLearnset = sRockruffLevelUpLearnset, + .teachableLearnset = sRockruffTeachableLearnset, + .formSpeciesIdTable = sRockruffFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL_DUSK, 25, SPECIES_LYCANROC_DUSK}), }, -#define LYCANROC_MISC_INFO \ - .types = MON_TYPES(TYPE_ROCK), \ - .catchRate = 90, \ - .expYield = 170, \ - .evYield_Attack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .speciesName = _("Lycanroc"), \ - .natDexNum = NATIONAL_DEX_LYCANROC, \ - .categoryName = _("Wolf"), \ - .weight = 250, \ - .pokemonScale = 366, \ - .pokemonOffset = 7, \ - .trainerScale = 257, \ - .trainerOffset = 0, \ - BACK_PIC(LycanrocMidday, 64, 56), \ - FOOTPRINT(Lycanroc) \ - .formSpeciesIdTable = sLycanrocFormSpeciesIdTable - [SPECIES_LYCANROC_MIDDAY] = { - LYCANROC_MISC_INFO, .baseHP = 75, .baseAttack = 115, .baseDefense = 65, .baseSpeed = 112, .baseSpAttack = 55, .baseSpDefense = 65, + .types = MON_TYPES(TYPE_ROCK), + .catchRate = 90, + .expYield = 170, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_KEEN_EYE, ABILITY_SAND_RUSH, ABILITY_STEADFAST }, .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Lycanroc"), .cryId = CRY_LYCANROC_MIDDAY, + .natDexNum = NATIONAL_DEX_LYCANROC, + .categoryName = _("Wolf"), .height = 8, + .weight = 250, .description = COMPOUND_STRING( "It has a calm and collected\n" "demeanor. It swiftly closes in on its prey,\n" "then slices them with the rocks in\n" "its mane."), - FRONT_PIC(LycanrocMidday, 57, 53), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + .frontPic = gMonFrontPic_LycanrocMidday, + .frontPicSize = MON_COORDS_SIZE(57, 53), .frontPicYOffset = 5, .frontAnimFrames = sAnims_LycanrocMidday, .frontAnimId = ANIM_V_SHAKE, + .backPic = gMonBackPic_LycanrocMidday, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(LycanrocMidday), - ICON(LycanrocMidday, 2), - LEARNSETS(LycanrocMidday), + .palette = gMonPalette_LycanrocMidday, + .shinyPalette = gMonShinyPalette_LycanrocMidday, + .iconSprite = gMonIcon_LycanrocMidday, + .iconPalIndex = 2, + FOOTPRINT(Lycanroc) + .levelUpLearnset = sLycanrocMiddayLevelUpLearnset, + .teachableLearnset = sLycanrocMiddayTeachableLearnset, + .formSpeciesIdTable = sLycanrocFormSpeciesIdTable, }, [SPECIES_LYCANROC_MIDNIGHT] = { - LYCANROC_MISC_INFO, .baseHP = 85, .baseAttack = 115, .baseDefense = 75, .baseSpeed = 82, .baseSpAttack = 55, .baseSpDefense = 75, + .types = MON_TYPES(TYPE_ROCK), + .catchRate = 90, + .expYield = 170, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_KEEN_EYE, ABILITY_VITAL_SPIRIT, ABILITY_NO_GUARD }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Lycanroc"), .cryId = CRY_LYCANROC_MIDNIGHT, + .natDexNum = NATIONAL_DEX_LYCANROC, + .categoryName = _("Wolf"), .height = 11, + .weight = 250, .description = COMPOUND_STRING( "This Pokémon uses its rocky mane\n" "to slash any who approach. It will\n" "even disobey its Trainer if it dislikes\n" "the orders it was given."), - FRONT_PIC(LycanrocMidnight, 56, 61), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + .frontPic = gMonFrontPic_LycanrocMidnight, + .frontPicSize = MON_COORDS_SIZE(56, 61), .frontPicYOffset = 0, .frontAnimFrames = sAnims_LycanrocMidnight, .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_SLOW, + .backPic = gMonBackPic_LycanrocMidday, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(LycanrocMidnight), - ICON(LycanrocMidnight, 0), - LEARNSETS(LycanrocMidnight), + .palette = gMonPalette_LycanrocMidnight, + .shinyPalette = gMonShinyPalette_LycanrocMidnight, + .iconSprite = gMonIcon_LycanrocMidnight, + .iconPalIndex = 0, + FOOTPRINT(Lycanroc) + .levelUpLearnset = sLycanrocMidnightLevelUpLearnset, + .teachableLearnset = sLycanrocMidnightTeachableLearnset, + .formSpeciesIdTable = sLycanrocFormSpeciesIdTable, }, [SPECIES_LYCANROC_DUSK] = { - LYCANROC_MISC_INFO, .baseHP = 75, .baseAttack = 117, .baseDefense = 65, .baseSpeed = 110, .baseSpAttack = 55, .baseSpDefense = 65, + .types = MON_TYPES(TYPE_ROCK), + .catchRate = 90, + .expYield = 170, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_TOUGH_CLAWS, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Lycanroc"), .cryId = CRY_LYCANROC_DUSK, + .natDexNum = NATIONAL_DEX_LYCANROC, + .categoryName = _("Wolf"), .height = 8, + .weight = 250, .description = COMPOUND_STRING( "These Pokémon have both calm and\n" "ferocious qualities. It's said that\n" "this form of Lycanroc is the most\n" "troublesome to raise."), - FRONT_PIC(LycanrocDusk, 57, 58), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + .frontPic = gMonFrontPic_LycanrocDusk, + .frontPicSize = MON_COORDS_SIZE(57, 58), .frontPicYOffset = 6, .frontAnimFrames = sAnims_LycanrocDusk, .frontAnimId = ANIM_V_SHAKE, + .backPic = gMonBackPic_LycanrocMidday, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_V_SHAKE, - PALETTES(LycanrocDusk), - ICON(LycanrocDusk, 0), - LEARNSETS(LycanrocDusk), + .palette = gMonPalette_LycanrocDusk, + .shinyPalette = gMonShinyPalette_LycanrocDusk, + .iconSprite = gMonIcon_LycanrocDusk, + .iconPalIndex = 0, + FOOTPRINT(Lycanroc) + .levelUpLearnset = sLycanrocDuskLevelUpLearnset, + .teachableLearnset = sLycanrocDuskTeachableLearnset, + .formSpeciesIdTable = sLycanrocFormSpeciesIdTable, }, #endif //P_FAMILY_ROCKRUFF #if P_FAMILY_WISHIWASHI -#define WISHIWASHI_MISC_INFO \ - .types = MON_TYPES(TYPE_WATER), \ - .catchRate = 60, \ - .evYield_HP = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), \ - .abilities = { ABILITY_SCHOOLING, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Wishiwashi"), \ - .natDexNum = NATIONAL_DEX_WISHIWASHI, \ - .categoryName = _("Small Fry"), \ - .pokemonScale = 682, \ - .pokemonOffset = 24, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Wishiwashi) \ - LEARNSETS(Wishiwashi), \ - .formSpeciesIdTable = sWishiwashiFormSpeciesIdTable, \ - .formChangeTable = sWishiwashiFormChangeTable - [SPECIES_WISHIWASHI_SOLO] = { - WISHIWASHI_MISC_INFO, .baseHP = 45, .baseAttack = 20, .baseDefense = 20, .baseSpeed = 40, .baseSpAttack = 25, .baseSpDefense = 25, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 60, .expYield = 61, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), + .abilities = { ABILITY_SCHOOLING, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Wishiwashi"), .cryId = CRY_WISHIWASHI_SOLO, + .natDexNum = NATIONAL_DEX_WISHIWASHI, + .categoryName = _("Small Fry"), .height = 2, .weight = 3, .description = COMPOUND_STRING( @@ -1400,29 +1713,54 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = "weak. It's by gathering up into\n" "schools that they're able to confront\n" "opponents."), - FRONT_PIC(WishiwashiSolo, 40, 24), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_WishiwashiSolo, + .frontPicSize = MON_COORDS_SIZE(40, 24), .frontPicYOffset = 20, .frontAnimFrames = sAnims_WishiwashiSolo, .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, .enemyMonElevation = 12, - BACK_PIC(WishiwashiSolo, 56, 32), + .backPic = gMonBackPic_WishiwashiSolo, + .backPicSize = MON_COORDS_SIZE(56, 32), .backPicYOffset = 18, //.backAnimId = BACK_ANIM_NONE, - PALETTES(WishiwashiSolo), - ICON(WishiwashiSolo, 2), + .palette = gMonPalette_WishiwashiSolo, + .shinyPalette = gMonShinyPalette_WishiwashiSolo, + .iconSprite = gMonIcon_WishiwashiSolo, + .iconPalIndex = 2, + FOOTPRINT(Wishiwashi) + .levelUpLearnset = sWishiwashiLevelUpLearnset, + .teachableLearnset = sWishiwashiTeachableLearnset, + .formSpeciesIdTable = sWishiwashiFormSpeciesIdTable, + .formChangeTable = sWishiwashiFormChangeTable, }, [SPECIES_WISHIWASHI_SCHOOL] = { - WISHIWASHI_MISC_INFO, .baseHP = 45, .baseAttack = 140, .baseDefense = 130, .baseSpeed = 30, .baseSpAttack = 140, .baseSpDefense = 135, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 60, .expYield = 217, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), + .abilities = { ABILITY_SCHOOLING, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Wishiwashi"), .cryId = CRY_WISHIWASHI_SCHOOL, + .natDexNum = NATIONAL_DEX_WISHIWASHI, + .categoryName = _("Small Fry"), .height = 82, .weight = 786, .description = COMPOUND_STRING( @@ -1430,15 +1768,28 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = "get into formation. But if they get\n" "wounded in battle, they'll scatter\n" "and become solitary again."), - FRONT_PIC(WishiwashiSchool, 64, 64), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_WishiwashiSchool, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_WishiwashiSchool, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, //Todo - BACK_PIC(WishiwashiSchool, 64, 56), + .backPic = gMonBackPic_WishiwashiSchool, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(WishiwashiSchool), - ICON(WishiwashiSchool, 0), + .palette = gMonPalette_WishiwashiSchool, + .shinyPalette = gMonShinyPalette_WishiwashiSchool, + .iconSprite = gMonIcon_WishiwashiSchool, + .iconPalIndex = 0, + FOOTPRINT(Wishiwashi) + .levelUpLearnset = sWishiwashiLevelUpLearnset, + .teachableLearnset = sWishiwashiTeachableLearnset, + .formSpeciesIdTable = sWishiwashiFormSpeciesIdTable, + .formChangeTable = sWishiwashiFormChangeTable, }, #endif //P_FAMILY_WISHIWASHI @@ -1478,17 +1829,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Mareanie, 48, 40), + .frontPic = gMonFrontPic_Mareanie, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Mareanie, .frontAnimId = ANIM_GLOW_PURPLE, - BACK_PIC(Mareanie, 64, 48), + .backPic = gMonBackPic_Mareanie, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 15, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Mareanie), - ICON(Mareanie, 2), + .palette = gMonPalette_Mareanie, + .shinyPalette = gMonShinyPalette_Mareanie, + .iconSprite = gMonIcon_Mareanie, + .iconPalIndex = 2, FOOTPRINT(Mareanie) - LEARNSETS(Mareanie), + .levelUpLearnset = sMareanieLevelUpLearnset, + .teachableLearnset = sMareanieTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_TOXAPEX}), }, @@ -1527,17 +1883,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Toxapex, 64, 64), + .frontPic = gMonFrontPic_Toxapex, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Toxapex, .frontAnimId = ANIM_SHAKE_GLOW_PURPLE_SLOW, - BACK_PIC(Toxapex, 64, 56), + .backPic = gMonBackPic_Toxapex, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Toxapex), - ICON(Toxapex, 0), + .palette = gMonPalette_Toxapex, + .shinyPalette = gMonShinyPalette_Toxapex, + .iconSprite = gMonIcon_Toxapex, + .iconPalIndex = 0, FOOTPRINT(Toxapex) - LEARNSETS(Toxapex), + .levelUpLearnset = sToxapexLevelUpLearnset, + .teachableLearnset = sToxapexTeachableLearnset, }, #endif //P_FAMILY_MAREANIE @@ -1577,17 +1938,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Mudbray, 48, 56), + .frontPic = gMonFrontPic_Mudbray, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Mudbray, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Mudbray, 64, 56), + .backPic = gMonBackPic_Mudbray, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Mudbray), - ICON(Mudbray, 2), + .palette = gMonPalette_Mudbray, + .shinyPalette = gMonShinyPalette_Mudbray, + .iconSprite = gMonIcon_Mudbray, + .iconPalIndex = 2, FOOTPRINT(Mudbray) - LEARNSETS(Mudbray), + .levelUpLearnset = sMudbrayLevelUpLearnset, + .teachableLearnset = sMudbrayTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MUDSDALE}), }, @@ -1626,17 +1992,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 10, .trainerScale = 423, .trainerOffset = 8, - FRONT_PIC(Mudsdale, 64, 64), + .frontPic = gMonFrontPic_Mudsdale, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Mudsdale, .frontAnimId = ANIM_V_SHAKE_TWICE, - BACK_PIC(Mudsdale, 64, 56), + .backPic = gMonBackPic_Mudsdale, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Mudsdale), - ICON(Mudsdale, 0), + .palette = gMonPalette_Mudsdale, + .shinyPalette = gMonShinyPalette_Mudsdale, + .iconSprite = gMonIcon_Mudsdale, + .iconPalIndex = 0, FOOTPRINT(Mudsdale) - LEARNSETS(Mudsdale), + .levelUpLearnset = sMudsdaleLevelUpLearnset, + .teachableLearnset = sMudsdaleTeachableLearnset, }, #endif //P_FAMILY_MUDBRAY @@ -1676,17 +2047,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Dewpider, 32, 48), + .frontPic = gMonFrontPic_Dewpider, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Dewpider, .frontAnimId = ANIM_SHRINK_GROW, - BACK_PIC(Dewpider, 40, 48), + .backPic = gMonBackPic_Dewpider, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Dewpider), - ICON(Dewpider, 0), + .palette = gMonPalette_Dewpider, + .shinyPalette = gMonShinyPalette_Dewpider, + .iconSprite = gMonIcon_Dewpider, + .iconPalIndex = 0, FOOTPRINT(Dewpider) - LEARNSETS(Dewpider), + .levelUpLearnset = sDewpiderLevelUpLearnset, + .teachableLearnset = sDewpiderTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARAQUANID}), }, @@ -1725,17 +2101,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 2, .trainerScale = 286, .trainerOffset = 1, - FRONT_PIC(Araquanid, 64, 64), + .frontPic = gMonFrontPic_Araquanid, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Araquanid, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Araquanid, 64, 48), + .backPic = gMonBackPic_Araquanid, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 12, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Araquanid), - ICON(Araquanid, 2), + .palette = gMonPalette_Araquanid, + .shinyPalette = gMonShinyPalette_Araquanid, + .iconSprite = gMonIcon_Araquanid, + .iconPalIndex = 2, FOOTPRINT(Araquanid) - LEARNSETS(Araquanid), + .levelUpLearnset = sAraquanidLevelUpLearnset, + .teachableLearnset = sAraquanidTeachableLearnset, }, #endif //P_FAMILY_DEWPIDER @@ -1775,17 +2156,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Fomantis, 40, 48), + .frontPic = gMonFrontPic_Fomantis, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Fomantis, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - BACK_PIC(Fomantis, 40, 56), + .backPic = gMonBackPic_Fomantis, + .backPicSize = MON_COORDS_SIZE(40, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Fomantis), - ICON(Fomantis, 1), + .palette = gMonPalette_Fomantis, + .shinyPalette = gMonShinyPalette_Fomantis, + .iconSprite = gMonIcon_Fomantis, + .iconPalIndex = 1, FOOTPRINT(Fomantis) - LEARNSETS(Fomantis), + .levelUpLearnset = sFomantisLevelUpLearnset, + .teachableLearnset = sFomantisTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_DAY, 34, SPECIES_LURANTIS}), }, @@ -1824,17 +2210,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Lurantis, 48, 64), + .frontPic = gMonFrontPic_Lurantis, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Lurantis, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Lurantis, 56, 64), + .backPic = gMonBackPic_Lurantis, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Lurantis), - ICON(Lurantis, 1), + .palette = gMonPalette_Lurantis, + .shinyPalette = gMonShinyPalette_Lurantis, + .iconSprite = gMonIcon_Lurantis, + .iconPalIndex = 1, FOOTPRINT(Lurantis) - LEARNSETS(Lurantis), + .levelUpLearnset = sLurantisLevelUpLearnset, + .teachableLearnset = sLurantisTeachableLearnset, }, #endif //P_FAMILY_FOMANTIS @@ -1875,17 +2266,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Morelull, 24, 48), + .frontPic = gMonFrontPic_Morelull, + .frontPicSize = MON_COORDS_SIZE(24, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Morelull, .frontAnimId = ANIM_SHAKE_FLASH_YELLOW, - BACK_PIC(Morelull, 40, 48), + .backPic = gMonBackPic_Morelull, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Morelull), - ICON(Morelull, 0), + .palette = gMonPalette_Morelull, + .shinyPalette = gMonShinyPalette_Morelull, + .iconSprite = gMonIcon_Morelull, + .iconPalIndex = 0, FOOTPRINT(Morelull) - LEARNSETS(Morelull), + .levelUpLearnset = sMorelullLevelUpLearnset, + .teachableLearnset = sMorelullTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_SHIINOTIC}), }, @@ -1925,17 +2321,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Shiinotic, 56, 56), + .frontPic = gMonFrontPic_Shiinotic, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Shiinotic, .frontAnimId = ANIM_SHAKE_GLOW_WHITE_SLOW, - BACK_PIC(Shiinotic, 64, 48), + .backPic = gMonBackPic_Shiinotic, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Shiinotic), - ICON(Shiinotic, 1), + .palette = gMonPalette_Shiinotic, + .shinyPalette = gMonShinyPalette_Shiinotic, + .iconSprite = gMonIcon_Shiinotic, + .iconPalIndex = 1, FOOTPRINT(Shiinotic) - LEARNSETS(Shiinotic), + .levelUpLearnset = sShiinoticLevelUpLearnset, + .teachableLearnset = sShiinoticTeachableLearnset, }, #endif //P_FAMILY_MORELULL @@ -1975,17 +2376,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Salandit, 56, 40), + .frontPic = gMonFrontPic_Salandit, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Salandit, .frontAnimId = ANIM_GLOW_RED, - BACK_PIC(Salandit, 56, 40), + .backPic = gMonBackPic_Salandit, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 12, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Salandit), - ICON(Salandit, 2), + .palette = gMonPalette_Salandit, + .shinyPalette = gMonShinyPalette_Salandit, + .iconSprite = gMonIcon_Salandit, + .iconPalIndex = 2, FOOTPRINT(Salandit) - LEARNSETS(Salandit), + .levelUpLearnset = sSalanditLevelUpLearnset, + .teachableLearnset = sSalanditTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 33, SPECIES_SALAZZLE}), }, @@ -2024,17 +2430,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Salazzle, 64, 64), + .frontPic = gMonFrontPic_Salazzle, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Salazzle, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Salazzle, 48, 64), + .backPic = gMonBackPic_Salazzle, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Salazzle), - ICON(Salazzle, 0), + .palette = gMonPalette_Salazzle, + .shinyPalette = gMonShinyPalette_Salazzle, + .iconSprite = gMonIcon_Salazzle, + .iconPalIndex = 0, FOOTPRINT(Salazzle) - LEARNSETS(Salazzle), + .levelUpLearnset = sSalazzleLevelUpLearnset, + .teachableLearnset = sSalazzleTeachableLearnset, }, #endif //P_FAMILY_SALANDIT @@ -2073,17 +2484,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Stufful, 48, 48), + .frontPic = gMonFrontPic_Stufful, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Stufful, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Stufful, 56, 40), + .backPic = gMonBackPic_Stufful, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 12, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Stufful), - ICON(Stufful, 0), + .palette = gMonPalette_Stufful, + .shinyPalette = gMonShinyPalette_Stufful, + .iconSprite = gMonIcon_Stufful, + .iconPalIndex = 0, FOOTPRINT(Stufful) - LEARNSETS(Stufful), + .levelUpLearnset = sStuffulLevelUpLearnset, + .teachableLearnset = sStuffulTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_BEWEAR}), }, @@ -2121,17 +2537,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 0, .trainerScale = 365, .trainerOffset = 7, - FRONT_PIC(Bewear, 56, 64), + .frontPic = gMonFrontPic_Bewear, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Bewear, .frontAnimId = ANIM_H_STRETCH, - BACK_PIC(Bewear, 64, 64), + .backPic = gMonBackPic_Bewear, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Bewear), - ICON(Bewear, 0), + .palette = gMonPalette_Bewear, + .shinyPalette = gMonShinyPalette_Bewear, + .iconSprite = gMonIcon_Bewear, + .iconPalIndex = 0, FOOTPRINT(Bewear) - LEARNSETS(Bewear), + .levelUpLearnset = sBewearLevelUpLearnset, + .teachableLearnset = sBewearTeachableLearnset, }, #endif //P_FAMILY_STUFFUL @@ -2171,17 +2592,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Bounsweet, 32, 40), + .frontPic = gMonFrontPic_Bounsweet, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Bounsweet, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Bounsweet, 48, 40), + .backPic = gMonBackPic_Bounsweet, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Bounsweet), - ICON(Bounsweet, 1), + .palette = gMonPalette_Bounsweet, + .shinyPalette = gMonShinyPalette_Bounsweet, + .iconSprite = gMonIcon_Bounsweet, + .iconPalIndex = 1, FOOTPRINT(Bounsweet) - LEARNSETS(Bounsweet), + .levelUpLearnset = sBounsweetLevelUpLearnset, + .teachableLearnset = sBounsweetTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_STEENEE}), }, @@ -2221,17 +2647,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Steenee, 48, 56), + .frontPic = gMonFrontPic_Steenee, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Steenee, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Steenee, 56, 56), + .backPic = gMonBackPic_Steenee, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Steenee), - ICON(Steenee, 1), + .palette = gMonPalette_Steenee, + .shinyPalette = gMonShinyPalette_Steenee, + .iconSprite = gMonIcon_Steenee, + .iconPalIndex = 1, FOOTPRINT(Steenee) - LEARNSETS(Steenee), + .levelUpLearnset = sSteeneeLevelUpLearnset, + .teachableLearnset = sSteeneeTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_STOMP, SPECIES_TSAREENA}), }, @@ -2271,17 +2702,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Tsareena, 56, 64), + .frontPic = gMonFrontPic_Tsareena, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Tsareena, .frontAnimId = ANIM_SHRINK_GROW, - BACK_PIC(Tsareena, 56, 56), + .backPic = gMonBackPic_Tsareena, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Tsareena), - ICON(Tsareena, 1), + .palette = gMonPalette_Tsareena, + .shinyPalette = gMonShinyPalette_Tsareena, + .iconSprite = gMonIcon_Tsareena, + .iconPalIndex = 1, FOOTPRINT(Tsareena) - LEARNSETS(Tsareena), + .levelUpLearnset = sTsareenaLevelUpLearnset, + .teachableLearnset = sTsareenaTeachableLearnset, }, #endif //P_FAMILY_BOUNSWEET @@ -2322,18 +2758,23 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Comfey, 48, 48), + .frontPic = gMonFrontPic_Comfey, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Comfey, .frontAnimId = ANIM_H_SLIDE_WOBBLE, .enemyMonElevation = 8, - BACK_PIC(Comfey, 64, 56), + .backPic = gMonBackPic_Comfey, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Comfey), - ICON(Comfey, 1), + .palette = gMonPalette_Comfey, + .shinyPalette = gMonShinyPalette_Comfey, + .iconSprite = gMonIcon_Comfey, + .iconPalIndex = 1, FOOTPRINT(Comfey) - LEARNSETS(Comfey), + .levelUpLearnset = sComfeyLevelUpLearnset, + .teachableLearnset = sComfeyTeachableLearnset, }, #endif //P_FAMILY_COMFEY @@ -2372,17 +2813,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Oranguru, 56, 56), + .frontPic = gMonFrontPic_Oranguru, + .frontPicSize = MON_COORDS_SIZE(56, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Oranguru, .frontAnimId = ANIM_SHRINK_GROW_SLOW, - BACK_PIC(Oranguru, 64, 48), + .backPic = gMonBackPic_Oranguru, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 12, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Oranguru), - ICON(Oranguru, 0), + .palette = gMonPalette_Oranguru, + .shinyPalette = gMonShinyPalette_Oranguru, + .iconSprite = gMonIcon_Oranguru, + .iconPalIndex = 0, FOOTPRINT(Oranguru) - LEARNSETS(Oranguru), + .levelUpLearnset = sOranguruLevelUpLearnset, + .teachableLearnset = sOranguruTeachableLearnset, }, #endif //P_FAMILY_ORANGURU @@ -2421,17 +2867,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 1, .trainerScale = 334, .trainerOffset = 4, - FRONT_PIC(Passimian, 57, 60), + .frontPic = gMonFrontPic_Passimian, + .frontPicSize = MON_COORDS_SIZE(57, 60), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Passimian, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(Passimian, 51, 52), + .backPic = gMonBackPic_Passimian, + .backPicSize = MON_COORDS_SIZE(51, 52), .backPicYOffset = 7, .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Passimian), - ICON(Passimian, 1), + .palette = gMonPalette_Passimian, + .shinyPalette = gMonShinyPalette_Passimian, + .iconSprite = gMonIcon_Passimian, + .iconPalIndex = 1, FOOTPRINT(Passimian) - LEARNSETS(Passimian), + .levelUpLearnset = sPassimianLevelUpLearnset, + .teachableLearnset = sPassimianTeachableLearnset, }, #endif //P_FAMILY_PASSIMIAN @@ -2470,17 +2921,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Wimpod, 40, 40), + .frontPic = gMonFrontPic_Wimpod, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Wimpod, .frontAnimId = ANIM_V_SHAKE_H_SLIDE_FAST, - BACK_PIC(Wimpod, 64, 48), + .backPic = gMonBackPic_Wimpod, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Wimpod), - ICON(Wimpod, 2), + .palette = gMonPalette_Wimpod, + .shinyPalette = gMonShinyPalette_Wimpod, + .iconSprite = gMonIcon_Wimpod, + .iconPalIndex = 2, FOOTPRINT(Wimpod) - LEARNSETS(Wimpod), + .levelUpLearnset = sWimpodLevelUpLearnset, + .teachableLearnset = sWimpodTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GOLISOPOD}), }, @@ -2518,17 +2974,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 1, .trainerScale = 334, .trainerOffset = 4, - FRONT_PIC(Golisopod, 64, 64), + .frontPic = gMonFrontPic_Golisopod, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Golisopod, .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_FAST, - BACK_PIC(Golisopod, 64, 48), + .backPic = gMonBackPic_Golisopod, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Golisopod), - ICON(Golisopod, 2), + .palette = gMonPalette_Golisopod, + .shinyPalette = gMonShinyPalette_Golisopod, + .iconSprite = gMonIcon_Golisopod, + .iconPalIndex = 2, FOOTPRINT(Golisopod) - LEARNSETS(Golisopod), + .levelUpLearnset = sGolisopodLevelUpLearnset, + .teachableLearnset = sGolisopodTeachableLearnset, }, #endif //P_FAMILY_WIMPOD @@ -2568,17 +3029,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Sandygast, 48, 48), + .frontPic = gMonFrontPic_Sandygast, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Sandygast, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, - BACK_PIC(Sandygast, 40, 48), + .backPic = gMonBackPic_Sandygast, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Sandygast), - ICON(Sandygast, 1), + .palette = gMonPalette_Sandygast, + .shinyPalette = gMonShinyPalette_Sandygast, + .iconSprite = gMonIcon_Sandygast, + .iconPalIndex = 1, FOOTPRINT(Sandygast) - LEARNSETS(Sandygast), + .levelUpLearnset = sSandygastLevelUpLearnset, + .teachableLearnset = sSandygastTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_PALOSSAND}), }, @@ -2617,17 +3083,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Palossand, 64, 64), + .frontPic = gMonFrontPic_Palossand, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Palossand, .frontAnimId = ANIM_H_VIBRATE, - BACK_PIC(Palossand, 64, 64), + .backPic = gMonBackPic_Palossand, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Palossand), - ICON(Palossand, 2), + .palette = gMonPalette_Palossand, + .shinyPalette = gMonShinyPalette_Palossand, + .iconSprite = gMonIcon_Palossand, + .iconPalIndex = 2, FOOTPRINT(Palossand) - LEARNSETS(Palossand), + .levelUpLearnset = sPalossandLevelUpLearnset, + .teachableLearnset = sPalossandTeachableLearnset, }, #endif //P_FAMILY_SANDYGAST @@ -2666,17 +3137,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pyukumuku, 40, 40), + .frontPic = gMonFrontPic_Pyukumuku, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Pyukumuku, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Pyukumuku, 48, 32), + .backPic = gMonBackPic_Pyukumuku, + .backPicSize = MON_COORDS_SIZE(48, 32), .backPicYOffset = 16, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Pyukumuku), - ICON(Pyukumuku, 0), + .palette = gMonPalette_Pyukumuku, + .shinyPalette = gMonShinyPalette_Pyukumuku, + .iconSprite = gMonIcon_Pyukumuku, + .iconPalIndex = 0, FOOTPRINT(Pyukumuku) - LEARNSETS(Pyukumuku), + .levelUpLearnset = sPyukumukuLevelUpLearnset, + .teachableLearnset = sPyukumukuTeachableLearnset, }, #endif //P_FAMILY_PYUKUMUKU @@ -2700,7 +3176,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_BATTLE_ARMOR, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, - .isLegendary = TRUE, .speciesName = _("Type: Null"), .cryId = CRY_TYPE_NULL, .natDexNum = NATIONAL_DEX_TYPE_NULL, @@ -2716,21 +3191,27 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 1, .trainerScale = 326, .trainerOffset = 4, - FRONT_PIC(TypeNull, 64, 64), + .frontPic = gMonFrontPic_TypeNull, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_TypeNull, .frontAnimId = ANIM_H_SHAKE, - BACK_PIC(TypeNull, 56, 64), + .backPic = gMonBackPic_TypeNull, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(TypeNull), - ICON(TypeNull, 0), + .palette = gMonPalette_TypeNull, + .shinyPalette = gMonShinyPalette_TypeNull, + .iconSprite = gMonIcon_TypeNull, + .iconPalIndex = 0, FOOTPRINT(Type_Null) - LEARNSETS(TypeNull), + .isLegendary = TRUE, + .levelUpLearnset = sTypeNullLevelUpLearnset, + .teachableLearnset = sTypeNullTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_SILVALLY_NORMAL}), }, -#define SILVALLY_SPECIES_INFO(type, palette) \ +#define SILVALLY_SPECIES_INFO(type, _palette) \ { \ .baseHP = 95, \ .baseAttack = 95, \ @@ -2763,39 +3244,44 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 0, \ .trainerScale = 342, \ .trainerOffset = 7, \ - FRONT_PIC(Silvally, 64, 64), \ + .frontPic = gMonFrontPic_Silvally, \ + .frontPicSize = MON_COORDS_SIZE(64, 64), \ .frontPicYOffset = 0, \ .frontAnimFrames = sAnims_Silvally, \ .frontAnimId = ANIM_V_SHAKE, \ - BACK_PIC(Silvally, 56, 64), \ + .backPic = gMonBackPic_Silvally, \ + .backPicSize = MON_COORDS_SIZE(56, 64), \ .backPicYOffset = 0, \ - PALETTES(palette), \ - ICON(Silvally, 0), \ + /*.backAnimId = BACK_ANIM_NONE,*/ \ + .palette = gMonPalette_Silvally##_palette, \ + .shinyPalette = gMonShinyPalette_Silvally##_palette, \ + .iconSprite = gMonIcon_Silvally, \ + .iconPalIndex = 0, \ FOOTPRINT(Silvally) \ - LEARNSETS(Silvally), \ + .levelUpLearnset = sSilvallyLevelUpLearnset, \ + .teachableLearnset = sSilvallyTeachableLearnset, \ .formSpeciesIdTable = sSilvallyFormSpeciesIdTable, \ .formChangeTable = sSilvallyFormChangeTable, \ - } - //.backAnimId = BACK_ANIM_NONE, + } - [SPECIES_SILVALLY_NORMAL] = SILVALLY_SPECIES_INFO(TYPE_NORMAL, SilvallyNormal), - [SPECIES_SILVALLY_FIGHTING] = SILVALLY_SPECIES_INFO(TYPE_FIGHTING, SilvallyFighting), - [SPECIES_SILVALLY_FLYING] = SILVALLY_SPECIES_INFO(TYPE_FLYING, SilvallyFlying), - [SPECIES_SILVALLY_POISON] = SILVALLY_SPECIES_INFO(TYPE_POISON, SilvallyPoison), - [SPECIES_SILVALLY_GROUND] = SILVALLY_SPECIES_INFO(TYPE_GROUND, SilvallyGround), - [SPECIES_SILVALLY_ROCK] = SILVALLY_SPECIES_INFO(TYPE_ROCK, SilvallyRock), - [SPECIES_SILVALLY_BUG] = SILVALLY_SPECIES_INFO(TYPE_BUG, SilvallyBug), - [SPECIES_SILVALLY_GHOST] = SILVALLY_SPECIES_INFO(TYPE_GHOST, SilvallyGhost), - [SPECIES_SILVALLY_STEEL] = SILVALLY_SPECIES_INFO(TYPE_STEEL, SilvallySteel), - [SPECIES_SILVALLY_FIRE] = SILVALLY_SPECIES_INFO(TYPE_FIRE, SilvallyFire), - [SPECIES_SILVALLY_WATER] = SILVALLY_SPECIES_INFO(TYPE_WATER, SilvallyWater), - [SPECIES_SILVALLY_GRASS] = SILVALLY_SPECIES_INFO(TYPE_GRASS, SilvallyGrass), - [SPECIES_SILVALLY_ELECTRIC] = SILVALLY_SPECIES_INFO(TYPE_ELECTRIC, SilvallyElectric), - [SPECIES_SILVALLY_PSYCHIC] = SILVALLY_SPECIES_INFO(TYPE_PSYCHIC, SilvallyPsychic), - [SPECIES_SILVALLY_ICE] = SILVALLY_SPECIES_INFO(TYPE_ICE, SilvallyIce), - [SPECIES_SILVALLY_DRAGON] = SILVALLY_SPECIES_INFO(TYPE_DRAGON, SilvallyDragon), - [SPECIES_SILVALLY_DARK] = SILVALLY_SPECIES_INFO(TYPE_DARK, SilvallyDark), - [SPECIES_SILVALLY_FAIRY] = SILVALLY_SPECIES_INFO(TYPE_FAIRY, SilvallyFairy), + [SPECIES_SILVALLY_NORMAL] = SILVALLY_SPECIES_INFO(TYPE_NORMAL, Normal), + [SPECIES_SILVALLY_FIGHTING] = SILVALLY_SPECIES_INFO(TYPE_FIGHTING, Fighting), + [SPECIES_SILVALLY_FLYING] = SILVALLY_SPECIES_INFO(TYPE_FLYING, Flying), + [SPECIES_SILVALLY_POISON] = SILVALLY_SPECIES_INFO(TYPE_POISON, Poison), + [SPECIES_SILVALLY_GROUND] = SILVALLY_SPECIES_INFO(TYPE_GROUND, Ground), + [SPECIES_SILVALLY_ROCK] = SILVALLY_SPECIES_INFO(TYPE_ROCK, Rock), + [SPECIES_SILVALLY_BUG] = SILVALLY_SPECIES_INFO(TYPE_BUG, Bug), + [SPECIES_SILVALLY_GHOST] = SILVALLY_SPECIES_INFO(TYPE_GHOST, Ghost), + [SPECIES_SILVALLY_STEEL] = SILVALLY_SPECIES_INFO(TYPE_STEEL, Steel), + [SPECIES_SILVALLY_FIRE] = SILVALLY_SPECIES_INFO(TYPE_FIRE, Fire), + [SPECIES_SILVALLY_WATER] = SILVALLY_SPECIES_INFO(TYPE_WATER, Water), + [SPECIES_SILVALLY_GRASS] = SILVALLY_SPECIES_INFO(TYPE_GRASS, Grass), + [SPECIES_SILVALLY_ELECTRIC] = SILVALLY_SPECIES_INFO(TYPE_ELECTRIC, Electric), + [SPECIES_SILVALLY_PSYCHIC] = SILVALLY_SPECIES_INFO(TYPE_PSYCHIC, Psychic), + [SPECIES_SILVALLY_ICE] = SILVALLY_SPECIES_INFO(TYPE_ICE, Ice), + [SPECIES_SILVALLY_DRAGON] = SILVALLY_SPECIES_INFO(TYPE_DRAGON, Dragon), + [SPECIES_SILVALLY_DARK] = SILVALLY_SPECIES_INFO(TYPE_DARK, Dark), + [SPECIES_SILVALLY_FAIRY] = SILVALLY_SPECIES_INFO(TYPE_FAIRY, Fairy), #endif //P_FAMILY_TYPE_NULL #if P_FAMILY_MINIOR @@ -2824,7 +3310,8 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .trainerScale = 256, \ .trainerOffset = 0, \ FOOTPRINT(Minior) \ - LEARNSETS(Minior), \ + .levelUpLearnset = sMiniorLevelUpLearnset, \ + .teachableLearnset = sMiniorTeachableLearnset, \ .formSpeciesIdTable = sMiniorFormSpeciesIdTable #define MINIOR_METEOR_SPECIES_INFO(Form) \ @@ -2836,19 +3323,23 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .baseSpAttack = 60, \ .baseSpDefense = 100, \ .weight = 400, \ - FRONT_PIC(MiniorMeteor, 48, 40), \ + .frontPic = gMonFrontPic_MiniorMeteor, \ + .frontPicSize = MON_COORDS_SIZE(48, 40), \ .frontPicYOffset = 14, \ .frontAnimFrames = sAnims_MiniorMeteor, \ .frontAnimId = ANIM_TUMBLING_FRONT_FLIP_TWICE, \ .enemyMonElevation = 17, \ - BACK_PIC(MiniorMeteor, 56, 40), \ + .backPic = gMonBackPic_MiniorMeteor, \ + .backPicSize = MON_COORDS_SIZE(56, 40), \ .backPicYOffset = 14, \ - PALETTES(MiniorMeteor), \ - ICON(MiniorMeteor, 0), \ + /*.backAnimId = BACK_ANIM_NONE,*/ \ + .palette = gMonPalette_MiniorMeteor, \ + .shinyPalette = gMonShinyPalette_MiniorMeteor, \ + .iconSprite = gMonIcon_MiniorMeteor, \ + .iconPalIndex = 0, \ .formChangeTable = sMinior ##Form##FormChangeTable, \ MINIOR_MISC_INFO(BODY_COLOR_BROWN), \ } - //.backAnimId = BACK_ANIM_NONE, #define MINIOR_CORE_SPECIES_INFO(Form, color, iconPal) \ { \ @@ -2860,20 +3351,23 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .baseSpDefense = 60, \ .weight = 3, \ .description = gMiniorCorePokedexText, \ - FRONT_PIC(MiniorCore, 48, 40), \ + .frontPic = gMonFrontPic_MiniorCore, \ + .frontPicSize = MON_COORDS_SIZE(48, 40), \ .frontPicYOffset = 16, \ .frontAnimFrames = sAnims_MiniorMeteor, \ .frontAnimId = ANIM_TUMBLING_FRONT_FLIP_TWICE, \ .enemyMonElevation = 17, \ - BACK_PIC(MiniorCore, 56, 40), \ + .backPic = gMonBackPic_MiniorCore, \ + .backPicSize = MON_COORDS_SIZE(56, 40), \ .backPicYOffset = 15, \ + /*.backAnimId = BACK_ANIM_NONE,*/ \ .palette = gMonPalette_MiniorCore##Form, \ .shinyPalette = gMonShinyPalette_MiniorCore, \ - ICON(MiniorCore##Form, iconPal), \ + .iconSprite = gMonIcon_MiniorCore##Form, \ + .iconPalIndex = iconPal, \ .formChangeTable = sMinior ##Form##FormChangeTable, \ MINIOR_MISC_INFO(color), \ } - //.backAnimId = BACK_ANIM_NONE, [SPECIES_MINIOR_METEOR_RED] = MINIOR_METEOR_SPECIES_INFO(Red), [SPECIES_MINIOR_METEOR_ORANGE] = MINIOR_METEOR_SPECIES_INFO(Orange), @@ -2926,17 +3420,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Komala, 48, 40), + .frontPic = gMonFrontPic_Komala, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Komala, .frontAnimId = ANIM_H_DIP, - BACK_PIC(Komala, 64, 48), + .backPic = gMonBackPic_Komala, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Komala), - ICON(Komala, 2), + .palette = gMonPalette_Komala, + .shinyPalette = gMonShinyPalette_Komala, + .iconSprite = gMonIcon_Komala, + .iconPalIndex = 2, FOOTPRINT(Komala) - LEARNSETS(Komala), + .levelUpLearnset = sKomalaLevelUpLearnset, + .teachableLearnset = sKomalaTeachableLearnset, }, #endif //P_FAMILY_KOMALA @@ -2976,17 +3475,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 1, .trainerScale = 334, .trainerOffset = 4, - FRONT_PIC(Turtonator, 64, 64), + .frontPic = gMonFrontPic_Turtonator, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Turtonator, .frontAnimId = ANIM_SHAKE_GLOW_RED, - BACK_PIC(Turtonator, 64, 56), + .backPic = gMonBackPic_Turtonator, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Turtonator), - ICON(Turtonator, 0), + .palette = gMonPalette_Turtonator, + .shinyPalette = gMonShinyPalette_Turtonator, + .iconSprite = gMonIcon_Turtonator, + .iconPalIndex = 0, FOOTPRINT(Turtonator) - LEARNSETS(Turtonator), + .levelUpLearnset = sTurtonatorLevelUpLearnset, + .teachableLearnset = sTurtonatorTeachableLearnset, }, #endif //P_FAMILY_TURTONATOR @@ -3026,91 +3530,134 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Togedemaru, 40, 40), + .frontPic = gMonFrontPic_Togedemaru, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Togedemaru, .frontAnimId = ANIM_FLASH_YELLOW, - BACK_PIC(Togedemaru, 64, 48), + .backPic = gMonBackPic_Togedemaru, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 13, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(Togedemaru), - ICON(Togedemaru, 2), + .palette = gMonPalette_Togedemaru, + .shinyPalette = gMonShinyPalette_Togedemaru, + .iconSprite = gMonIcon_Togedemaru, + .iconPalIndex = 2, FOOTPRINT(Togedemaru) - LEARNSETS(Togedemaru), + .levelUpLearnset = sTogedemaruLevelUpLearnset, + .teachableLearnset = sTogedemaruTeachableLearnset, }, #endif //P_FAMILY_TOGEDEMARU #if P_FAMILY_MIMIKYU -#define MIMIKYU_MISC_INFO \ - .baseHP = 55, \ - .baseAttack = 90, \ - .baseDefense = 80, \ - .baseSpeed = 96, \ - .baseSpAttack = 50, \ - .baseSpDefense = 105, \ - .types = MON_TYPES(TYPE_GHOST, TYPE_FAIRY), \ - .catchRate = 45, \ - .expYield = 167, \ - .evYield_SpDefense = 2, \ - .itemRare = ITEM_CHESTO_BERRY, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), \ - .abilities = { ABILITY_DISGUISE, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_YELLOW, \ - .speciesName = _("Mimikyu"), \ - .cryId = CRY_MIMIKYU, \ - .natDexNum = NATIONAL_DEX_MIMIKYU, \ - .categoryName = _("Disguise"), \ - .height = 2, \ - .weight = 7, \ - .pokemonScale = 682, \ - .pokemonOffset = 24, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Mimikyu) \ - LEARNSETS(Mimikyu), \ - .formSpeciesIdTable = sMimikyuFormSpeciesIdTable, \ - .formChangeTable = sMimikyuFormChangeTable - [SPECIES_MIMIKYU_DISGUISED] = { - MIMIKYU_MISC_INFO, + .baseHP = 55, + .baseAttack = 90, + .baseDefense = 80, + .baseSpeed = 96, + .baseSpAttack = 50, + .baseSpDefense = 105, + .types = MON_TYPES(TYPE_GHOST, TYPE_FAIRY), + .catchRate = 45, + .expYield = 167, + .evYield_SpDefense = 2, + .itemRare = ITEM_CHESTO_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_DISGUISE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Mimikyu"), + .cryId = CRY_MIMIKYU, + .natDexNum = NATIONAL_DEX_MIMIKYU, + .categoryName = _("Disguise"), + .height = 2, + .weight = 7, .description = COMPOUND_STRING( "A lonely Pokémon, it hides its terrifying\n" "appearance beneath an old rag so it can\n" "get closer to people and other Pokémon.\n" "Its actual appearance is unknown."), - FRONT_PIC(MimikyuDisguised, 48, 40), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_MimikyuDisguised, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_MimikyuDisguised, .frontAnimId = ANIM_DEEP_V_SQUISH_AND_BOUNCE, - BACK_PIC(MimikyuDisguised, 56, 56), + .backPic = gMonBackPic_MimikyuDisguised, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(MimikyuDisguised), - ICON(MimikyuDisguised, 1), + .palette = gMonPalette_MimikyuDisguised, + .shinyPalette = gMonShinyPalette_MimikyuDisguised, + .iconSprite = gMonIcon_MimikyuDisguised, + .iconPalIndex = 1, + FOOTPRINT(Mimikyu) + .levelUpLearnset = sMimikyuLevelUpLearnset, + .teachableLearnset = sMimikyuTeachableLearnset, + .formSpeciesIdTable = sMimikyuFormSpeciesIdTable, + .formChangeTable = sMimikyuFormChangeTable, }, [SPECIES_MIMIKYU_BUSTED] = { - MIMIKYU_MISC_INFO, + .baseHP = 55, + .baseAttack = 90, + .baseDefense = 80, + .baseSpeed = 96, + .baseSpAttack = 50, + .baseSpDefense = 105, + .types = MON_TYPES(TYPE_GHOST, TYPE_FAIRY), + .catchRate = 45, + .expYield = 167, + .evYield_SpDefense = 2, + .itemRare = ITEM_CHESTO_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_DISGUISE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Mimikyu"), + .cryId = CRY_MIMIKYU, + .natDexNum = NATIONAL_DEX_MIMIKYU, + .categoryName = _("Disguise"), + .height = 2, + .weight = 7, .description = COMPOUND_STRING( "After going to all the effort of\n" "disguising itself, its neck was\n" "broken. Whatever is inside is probably\n" "unharmed, but it's still feeling sad."), - FRONT_PIC(MimikyuBusted, 48, 40), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_MimikyuBusted, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_MimikyuBusted, .frontAnimId = ANIM_DEEP_V_SQUISH_AND_BOUNCE, - BACK_PIC(MimikyuBusted, 64, 40), + .backPic = gMonBackPic_MimikyuBusted, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 15, //.backAnimId = BACK_ANIM_NONE, - PALETTES(MimikyuBusted), - ICON(MimikyuBusted, 1), + .palette = gMonPalette_MimikyuBusted, + .shinyPalette = gMonShinyPalette_MimikyuBusted, + .iconSprite = gMonIcon_MimikyuBusted, + .iconPalIndex = 1, + FOOTPRINT(Mimikyu) + .levelUpLearnset = sMimikyuLevelUpLearnset, + .teachableLearnset = sMimikyuTeachableLearnset, + .formSpeciesIdTable = sMimikyuFormSpeciesIdTable, + .formChangeTable = sMimikyuFormChangeTable, }, #endif //P_FAMILY_MIMIKYU @@ -3150,17 +3697,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 8, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Bruxish, 56, 40), + .frontPic = gMonFrontPic_Bruxish, + .frontPicSize = MON_COORDS_SIZE(56, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Bruxish, .frontAnimId = ANIM_RISING_WOBBLE, - BACK_PIC(Bruxish, 64, 48), + .backPic = gMonBackPic_Bruxish, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Bruxish), - ICON(Bruxish, 0), + .palette = gMonPalette_Bruxish, + .shinyPalette = gMonShinyPalette_Bruxish, + .iconSprite = gMonIcon_Bruxish, + .iconPalIndex = 0, FOOTPRINT(Bruxish) - LEARNSETS(Bruxish), + .levelUpLearnset = sBruxishLevelUpLearnset, + .teachableLearnset = sBruxishTeachableLearnset, }, #endif //P_FAMILY_BRUXISH @@ -3200,17 +3752,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Drampa, 64, 64), + .frontPic = gMonFrontPic_Drampa, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Drampa, .frontAnimId = ANIM_V_SHAKE_TWICE, - BACK_PIC(Drampa, 64, 56), + .backPic = gMonBackPic_Drampa, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Drampa), - ICON(Drampa, 0), + .palette = gMonPalette_Drampa, + .shinyPalette = gMonShinyPalette_Drampa, + .iconSprite = gMonIcon_Drampa, + .iconPalIndex = 0, FOOTPRINT(Drampa) - LEARNSETS(Drampa), + .levelUpLearnset = sDrampaLevelUpLearnset, + .teachableLearnset = sDrampaTeachableLearnset, }, #endif //P_FAMILY_DRAMPA @@ -3250,18 +3807,23 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 0, .trainerScale = 510, .trainerOffset = 11, - FRONT_PIC(Dhelmise, 48, 64), + .frontPic = gMonFrontPic_Dhelmise, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Dhelmise, .frontAnimId = ANIM_SWING_CONVEX, .enemyMonElevation = 2, - BACK_PIC(Dhelmise, 64, 64), + .backPic = gMonBackPic_Dhelmise, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Dhelmise), - ICON(Dhelmise, 1), + .palette = gMonPalette_Dhelmise, + .shinyPalette = gMonShinyPalette_Dhelmise, + .iconSprite = gMonIcon_Dhelmise, + .iconPalIndex = 1, FOOTPRINT(Dhelmise) - LEARNSETS(Dhelmise), + .levelUpLearnset = sDhelmiseLevelUpLearnset, + .teachableLearnset = sDhelmiseTeachableLearnset, }, #endif //P_FAMILY_DHELMISE @@ -3301,17 +3863,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(JangmoO, 36, 43), + .frontPic = gMonFrontPic_JangmoO, + .frontPicSize = MON_COORDS_SIZE(36, 43), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Jangmo_O, .frontAnimId = ANIM_H_STRETCH, - BACK_PIC(JangmoO, 42, 56), + .backPic = gMonBackPic_JangmoO, + .backPicSize = MON_COORDS_SIZE(42, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_GROW_STUTTER, - PALETTES(JangmoO), - ICON(JangmoO, 2), + .palette = gMonPalette_JangmoO, + .shinyPalette = gMonShinyPalette_JangmoO, + .iconSprite = gMonIcon_JangmoO, + .iconPalIndex = 2, FOOTPRINT(JangmoO) - LEARNSETS(JangmoO), + .levelUpLearnset = sJangmoOLevelUpLearnset, + .teachableLearnset = sJangmoOTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_HAKAMO_O}), }, @@ -3350,17 +3917,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(HakamoO, 53, 61), + .frontPic = gMonFrontPic_HakamoO, + .frontPicSize = MON_COORDS_SIZE(53, 61), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Hakamo_O, .frontAnimId = ANIM_H_STRETCH, - BACK_PIC(HakamoO, 49, 56), + .backPic = gMonBackPic_HakamoO, + .backPicSize = MON_COORDS_SIZE(49, 56), .backPicYOffset = 5, .backAnimId = BACK_ANIM_H_STRETCH, - PALETTES(HakamoO), - ICON(HakamoO, 2), + .palette = gMonPalette_HakamoO, + .shinyPalette = gMonShinyPalette_HakamoO, + .iconSprite = gMonIcon_HakamoO, + .iconPalIndex = 2, FOOTPRINT(HakamoO) - LEARNSETS(HakamoO), + .levelUpLearnset = sHakamoOLevelUpLearnset, + .teachableLearnset = sHakamoOTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_KOMMO_O}), }, @@ -3399,17 +3971,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(KommoO, 63, 63), + .frontPic = gMonFrontPic_KommoO, + .frontPicSize = MON_COORDS_SIZE(63, 63), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Kommo_O, .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_FAST, - BACK_PIC(KommoO, 60, 60), + .backPic = gMonBackPic_KommoO, + .backPicSize = MON_COORDS_SIZE(60, 60), .backPicYOffset = 2, .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, - PALETTES(KommoO), - ICON(KommoO, 2), + .palette = gMonPalette_KommoO, + .shinyPalette = gMonShinyPalette_KommoO, + .iconSprite = gMonIcon_KommoO, + .iconPalIndex = 2, FOOTPRINT(KommoO) - LEARNSETS(KommoO), + .levelUpLearnset = sKommoOLevelUpLearnset, + .teachableLearnset = sKommoOTeachableLearnset, }, #endif //P_FAMILY_JANGMO_O @@ -3433,7 +4010,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_ELECTRIC_SURGE, ABILITY_NONE, ABILITY_TELEPATHY }, .bodyColor = BODY_COLOR_YELLOW, - .isLegendary = TRUE, .speciesName = _("Tapu Koko"), .cryId = CRY_TAPU_KOKO, .natDexNum = NATIONAL_DEX_TAPU_KOKO, @@ -3449,18 +4025,24 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 2, .trainerScale = 286, .trainerOffset = 1, - FRONT_PIC(TapuKoko, 64, 64), + .frontPic = gMonFrontPic_TapuKoko, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_TapuKoko, .frontAnimId = ANIM_TRIANGLE_DOWN_TWICE, .enemyMonElevation = 9, - BACK_PIC(TapuKoko, 64, 64), + .backPic = gMonBackPic_TapuKoko, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(TapuKoko), - ICON(TapuKoko, 0), + .palette = gMonPalette_TapuKoko, + .shinyPalette = gMonShinyPalette_TapuKoko, + .iconSprite = gMonIcon_TapuKoko, + .iconPalIndex = 0, FOOTPRINT(Tapu_Koko) - LEARNSETS(TapuKoko), + .isLegendary = TRUE, + .levelUpLearnset = sTapuKokoLevelUpLearnset, + .teachableLearnset = sTapuKokoTeachableLearnset, }, #endif //P_FAMILY_TAPU_KOKO @@ -3484,7 +4066,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PSYCHIC_SURGE, ABILITY_NONE, ABILITY_TELEPATHY }, .bodyColor = BODY_COLOR_PINK, - .isLegendary = TRUE, .speciesName = _("Tapu Lele"), .cryId = CRY_TAPU_LELE, .natDexNum = NATIONAL_DEX_TAPU_LELE, @@ -3500,18 +4081,24 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(TapuLele, 48, 56), + .frontPic = gMonFrontPic_TapuLele, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_TapuLele, .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, .enemyMonElevation = 8, - BACK_PIC(TapuLele, 56, 56), + .backPic = gMonBackPic_TapuLele, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(TapuLele), - ICON(TapuLele, 0), + .palette = gMonPalette_TapuLele, + .shinyPalette = gMonShinyPalette_TapuLele, + .iconSprite = gMonIcon_TapuLele, + .iconPalIndex = 0, FOOTPRINT(Tapu_Lele) - LEARNSETS(TapuLele), + .isLegendary = TRUE, + .levelUpLearnset = sTapuLeleLevelUpLearnset, + .teachableLearnset = sTapuLeleTeachableLearnset, }, #endif //P_FAMILY_TAPU_LELE @@ -3535,7 +4122,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_GRASSY_SURGE, ABILITY_NONE, ABILITY_TELEPATHY }, .bodyColor = BODY_COLOR_RED, - .isLegendary = TRUE, .speciesName = _("Tapu Bulu"), .cryId = CRY_TAPU_BULU, .natDexNum = NATIONAL_DEX_TAPU_BULU, @@ -3551,18 +4137,24 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 1, .trainerScale = 326, .trainerOffset = 4, - FRONT_PIC(TapuBulu, 56, 64), + .frontPic = gMonFrontPic_TapuBulu, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_TapuBulu, .frontAnimId = ANIM_V_SHAKE_TWICE, .enemyMonElevation = 5, - BACK_PIC(TapuBulu, 64, 64), + .backPic = gMonBackPic_TapuBulu, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(TapuBulu), - ICON(TapuBulu, 2), + .palette = gMonPalette_TapuBulu, + .shinyPalette = gMonShinyPalette_TapuBulu, + .iconSprite = gMonIcon_TapuBulu, + .iconPalIndex = 2, FOOTPRINT(Tapu_Bulu) - LEARNSETS(TapuBulu), + .isLegendary = TRUE, + .levelUpLearnset = sTapuBuluLevelUpLearnset, + .teachableLearnset = sTapuBuluTeachableLearnset, }, #endif //P_FAMILY_TAPU_BULU @@ -3586,7 +4178,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_MISTY_SURGE, ABILITY_NONE, ABILITY_TELEPATHY }, .bodyColor = BODY_COLOR_PURPLE, - .isLegendary = TRUE, .speciesName = _("Tapu Fini"), .cryId = CRY_TAPU_FINI, .natDexNum = NATIONAL_DEX_TAPU_FINI, @@ -3602,19 +4193,25 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(TapuFini, 56, 64), + .frontPic = gMonFrontPic_TapuFini, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_TapuFini, .frontAnimId = ANIM_SHAKE_GLOW_BLUE_SLOW, .frontAnimDelay = 5, .enemyMonElevation = 6, - BACK_PIC(TapuFini, 64, 56), + .backPic = gMonBackPic_TapuFini, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(TapuFini), - ICON(TapuFini, 0), + .palette = gMonPalette_TapuFini, + .shinyPalette = gMonShinyPalette_TapuFini, + .iconSprite = gMonIcon_TapuFini, + .iconPalIndex = 0, FOOTPRINT(Tapu_Fini) - LEARNSETS(TapuFini), + .isLegendary = TRUE, + .levelUpLearnset = sTapuFiniLevelUpLearnset, + .teachableLearnset = sTapuFiniTeachableLearnset, }, #endif //P_FAMILY_TAPU_FINI @@ -3638,7 +4235,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_UNAWARE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, - .isLegendary = TRUE, .speciesName = _("Cosmog"), .cryId = CRY_COSMOG, .natDexNum = NATIONAL_DEX_COSMOG, @@ -3654,19 +4250,25 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cosmog, 56, 48), + .frontPic = gMonFrontPic_Cosmog, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Cosmog, .frontAnimId = ANIM_H_JUMPS_V_STRETCH, .enemyMonElevation = 7, - BACK_PIC(Cosmog, 64, 48), + .backPic = gMonBackPic_Cosmog, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Cosmog), - ICON(Cosmog, 2), + .palette = gMonPalette_Cosmog, + .shinyPalette = gMonShinyPalette_Cosmog, + .iconSprite = gMonIcon_Cosmog, + .iconPalIndex = 2, FOOTPRINT(Cosmog) - LEARNSETS(Cosmog), + .isLegendary = TRUE, .tmIlliterate = TRUE, + .levelUpLearnset = sCosmogLevelUpLearnset, + .teachableLearnset = sCosmogTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 43, SPECIES_COSMOEM}), }, @@ -3690,7 +4292,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_STURDY, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, - .isLegendary = TRUE, .speciesName = _("Cosmoem"), .cryId = CRY_COSMOEM, .natDexNum = NATIONAL_DEX_COSMOEM, @@ -3706,19 +4307,25 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cosmoem, 48, 48), + .frontPic = gMonFrontPic_Cosmoem, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Cosmoem, .frontAnimId = ANIM_RISING_WOBBLE, .enemyMonElevation = 3, - BACK_PIC(Cosmoem, 64, 40), + .backPic = gMonBackPic_Cosmoem, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 17, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Cosmoem), - ICON(Cosmoem, 0), + .palette = gMonPalette_Cosmoem, + .shinyPalette = gMonShinyPalette_Cosmoem, + .iconSprite = gMonIcon_Cosmoem, + .iconPalIndex = 0, FOOTPRINT(Cosmoem) - LEARNSETS(Cosmoem), + .isLegendary = TRUE, .tmIlliterate = TRUE, + .levelUpLearnset = sCosmoemLevelUpLearnset, + .teachableLearnset = sCosmoemTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_DAY, 53, SPECIES_SOLGALEO}, {EVO_LEVEL_NIGHT, 53, SPECIES_LUNALA}), }, @@ -3742,7 +4349,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_FULL_METAL_BODY, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, - .isLegendary = TRUE, .speciesName = _("Solgaleo"), .cryId = CRY_SOLGALEO, .natDexNum = NATIONAL_DEX_SOLGALEO, @@ -3758,17 +4364,23 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 0, .trainerScale = 405, .trainerOffset = 8, - FRONT_PIC(Solgaleo, 64, 64), + .frontPic = gMonFrontPic_Solgaleo, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Solgaleo, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Solgaleo, 64, 64), + .backPic = gMonBackPic_Solgaleo, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Solgaleo), - ICON(Solgaleo, 0), + .palette = gMonPalette_Solgaleo, + .shinyPalette = gMonShinyPalette_Solgaleo, + .iconSprite = gMonIcon_Solgaleo, + .iconPalIndex = 0, FOOTPRINT(Solgaleo) - LEARNSETS(Solgaleo), + .isLegendary = TRUE, + .levelUpLearnset = sSolgaleoLevelUpLearnset, + .teachableLearnset = sSolgaleoTeachableLearnset, }, [SPECIES_LUNALA] = @@ -3790,7 +4402,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_SHADOW_SHIELD, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, - .isLegendary = TRUE, .speciesName = _("Lunala"), .cryId = CRY_LUNALA, .natDexNum = NATIONAL_DEX_LUNALA, @@ -3806,18 +4417,24 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 0, .trainerScale = 411, .trainerOffset = 5, - FRONT_PIC(Lunala, 64, 64), + .frontPic = gMonFrontPic_Lunala, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Lunala, .frontAnimId = ANIM_CIRCULAR_VIBRATE, .enemyMonElevation = 6, - BACK_PIC(Lunala, 64, 64), + .backPic = gMonBackPic_Lunala, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Lunala), - ICON(Lunala, 2), + .palette = gMonPalette_Lunala, + .shinyPalette = gMonShinyPalette_Lunala, + .iconSprite = gMonIcon_Lunala, + .iconPalIndex = 2, FOOTPRINT(Lunala) - LEARNSETS(Lunala), + .isLegendary = TRUE, + .levelUpLearnset = sLunalaLevelUpLearnset, + .teachableLearnset = sLunalaTeachableLearnset, }, #endif //P_FAMILY_COSMOG @@ -3841,7 +4458,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, - .isUltraBeast = TRUE, .speciesName = _("Nihilego"), .cryId = CRY_NIHILEGO, .natDexNum = NATIONAL_DEX_NIHILEGO, @@ -3857,18 +4473,24 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Nihilego, 48, 64), + .frontPic = gMonFrontPic_Nihilego, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Nihilego, .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, .enemyMonElevation = 6, - BACK_PIC(Nihilego, 64, 48), + .backPic = gMonBackPic_Nihilego, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Nihilego), - ICON(Nihilego, 0), + .palette = gMonPalette_Nihilego, + .shinyPalette = gMonShinyPalette_Nihilego, + .iconSprite = gMonIcon_Nihilego, + .iconPalIndex = 0, FOOTPRINT(Nihilego) - LEARNSETS(Nihilego), + .isUltraBeast = TRUE, + .levelUpLearnset = sNihilegoLevelUpLearnset, + .teachableLearnset = sNihilegoTeachableLearnset, }, #endif //P_FAMILY_NIHILEGO @@ -3893,7 +4515,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, - .isUltraBeast = TRUE, .speciesName = _("Buzzwole"), .cryId = CRY_BUZZWOLE, .natDexNum = NATIONAL_DEX_BUZZWOLE, @@ -3909,17 +4530,23 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 3, .trainerScale = 369, .trainerOffset = 7, - FRONT_PIC(Buzzwole, 64, 64), + .frontPic = gMonFrontPic_Buzzwole, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Buzzwole, .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_FAST, - BACK_PIC(Buzzwole, 64, 56), + .backPic = gMonBackPic_Buzzwole, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Buzzwole), - ICON(Buzzwole, 0), + .palette = gMonPalette_Buzzwole, + .shinyPalette = gMonShinyPalette_Buzzwole, + .iconSprite = gMonIcon_Buzzwole, + .iconPalIndex = 0, FOOTPRINT(Buzzwole) - LEARNSETS(Buzzwole), + .isUltraBeast = TRUE, + .levelUpLearnset = sBuzzwoleLevelUpLearnset, + .teachableLearnset = sBuzzwoleTeachableLearnset, }, #endif //P_FAMILY_BUZZWOLE @@ -3943,7 +4570,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, - .isUltraBeast = TRUE, .speciesName = _("Pheromosa"), .cryId = CRY_PHEROMOSA, .natDexNum = NATIONAL_DEX_PHEROMOSA, @@ -3959,17 +4585,23 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 2, .trainerScale = 286, .trainerOffset = 1, - FRONT_PIC(Pheromosa, 56, 64), + .frontPic = gMonFrontPic_Pheromosa, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Pheromosa, .frontAnimId = ANIM_SHRINK_GROW, - BACK_PIC(Pheromosa, 64, 64), + .backPic = gMonBackPic_Pheromosa, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Pheromosa), - ICON(Pheromosa, 2), + .palette = gMonPalette_Pheromosa, + .shinyPalette = gMonShinyPalette_Pheromosa, + .iconSprite = gMonIcon_Pheromosa, + .iconPalIndex = 2, FOOTPRINT(Pheromosa) - LEARNSETS(Pheromosa), + .isUltraBeast = TRUE, + .levelUpLearnset = sPheromosaLevelUpLearnset, + .teachableLearnset = sPheromosaTeachableLearnset, }, #endif //P_FAMILY_PHEROMOSA @@ -3993,7 +4625,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, - .isUltraBeast = TRUE, .speciesName = _("Xurkitree"), .cryId = CRY_XURKITREE, .natDexNum = NATIONAL_DEX_XURKITREE, @@ -4009,17 +4640,23 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 0, .trainerScale = 610, .trainerOffset = 17, - FRONT_PIC(Xurkitree, 64, 64), + .frontPic = gMonFrontPic_Xurkitree, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Xurkitree, .frontAnimId = ANIM_SHAKE_FLASH_YELLOW_FAST, - BACK_PIC(Xurkitree, 64, 64), + .backPic = gMonBackPic_Xurkitree, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Xurkitree), - ICON(Xurkitree, 0), + .palette = gMonPalette_Xurkitree, + .shinyPalette = gMonShinyPalette_Xurkitree, + .iconSprite = gMonIcon_Xurkitree, + .iconPalIndex = 0, FOOTPRINT(Xurkitree) - LEARNSETS(Xurkitree), + .isUltraBeast = TRUE, + .levelUpLearnset = sXurkitreeLevelUpLearnset, + .teachableLearnset = sXurkitreeTeachableLearnset, }, #endif //P_FAMILY_XURKITREE @@ -4045,7 +4682,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, - .isUltraBeast = TRUE, .speciesName = _("Celesteela"), .cryId = CRY_CELESTEELA, .natDexNum = NATIONAL_DEX_CELESTEELA, @@ -4061,17 +4697,23 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 0, .trainerScale = 516, .trainerOffset = 13, - FRONT_PIC(Celesteela, 64, 64), + .frontPic = gMonFrontPic_Celesteela, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Celesteela, .frontAnimId = ANIM_GROW_STUTTER_SLOW, - BACK_PIC(Celesteela, 64, 64), + .backPic = gMonBackPic_Celesteela, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Celesteela), - ICON(Celesteela, 0), + .palette = gMonPalette_Celesteela, + .shinyPalette = gMonShinyPalette_Celesteela, + .iconSprite = gMonIcon_Celesteela, + .iconPalIndex = 0, FOOTPRINT(Celesteela) - LEARNSETS(Celesteela), + .isUltraBeast = TRUE, + .levelUpLearnset = sCelesteelaLevelUpLearnset, + .teachableLearnset = sCelesteelaTeachableLearnset, }, #endif //P_FAMILY_CELESTEELA @@ -4095,7 +4737,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, - .isUltraBeast = TRUE, .speciesName = _("Kartana"), .cryId = CRY_KARTANA, .natDexNum = NATIONAL_DEX_KARTANA, @@ -4111,18 +4752,24 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Kartana, 64, 64), + .frontPic = gMonFrontPic_Kartana, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Kartana, .frontAnimId = ANIM_H_VIBRATE, .enemyMonElevation = 3, - BACK_PIC(Kartana, 64, 48), + .backPic = gMonBackPic_Kartana, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Kartana), - ICON(Kartana, 0), + .palette = gMonPalette_Kartana, + .shinyPalette = gMonShinyPalette_Kartana, + .iconSprite = gMonIcon_Kartana, + .iconPalIndex = 0, FOOTPRINT(Kartana) - LEARNSETS(Kartana), + .isUltraBeast = TRUE, + .levelUpLearnset = sKartanaLevelUpLearnset, + .teachableLearnset = sKartanaTeachableLearnset, }, #endif //P_FAMILY_KARTANA @@ -4146,7 +4793,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, - .isUltraBeast = TRUE, .speciesName = _("Guzzlord"), .cryId = CRY_GUZZLORD, .natDexNum = NATIONAL_DEX_GUZZLORD, @@ -4162,43 +4808,29 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 0, .trainerScale = 721, .trainerOffset = 19, - FRONT_PIC(Guzzlord, 64, 64), + .frontPic = gMonFrontPic_Guzzlord, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Guzzlord, .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_FAST, - BACK_PIC(Guzzlord, 64, 56), + .backPic = gMonBackPic_Guzzlord, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 10, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Guzzlord), - ICON(Guzzlord, 0), + .palette = gMonPalette_Guzzlord, + .shinyPalette = gMonShinyPalette_Guzzlord, + .iconSprite = gMonIcon_Guzzlord, + .iconPalIndex = 0, FOOTPRINT(Guzzlord) - LEARNSETS(Guzzlord), + .isUltraBeast = TRUE, + .levelUpLearnset = sGuzzlordLevelUpLearnset, + .teachableLearnset = sGuzzlordTeachableLearnset, }, #endif //P_FAMILY_GUZZLORD #if P_FAMILY_NECROZMA -#define NECROZMA_MISC_INFO \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .noFlip = TRUE, \ - .speciesName = _("Necrozma"), \ - .natDexNum = NATIONAL_DEX_NECROZMA, \ - .categoryName = _("Prism"), \ - .pokemonScale = 256, \ - .pokemonOffset = 3, \ - .trainerScale = 369, \ - .trainerOffset = 7, \ - FOOTPRINT(Necrozma) \ - LEARNSETS(Necrozma), \ - .formSpeciesIdTable = sNecrozmaFormSpeciesIdTable, \ - .isLegendary = TRUE - [SPECIES_NECROZMA] = { - NECROZMA_MISC_INFO, .baseHP = 97, .baseAttack = 107, .baseDefense = 101, @@ -4210,9 +4842,18 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, .evYield_Attack = 1, .evYield_SpAttack = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PRISM_ARMOR, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, + .noFlip = TRUE, + .speciesName = _("Necrozma"), .cryId = CRY_NECROZMA, + .natDexNum = NATIONAL_DEX_NECROZMA, + .categoryName = _("Prism"), .height = 24, .weight = 2300, .description = COMPOUND_STRING( @@ -4220,22 +4861,34 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = "life-form, apparently asleep underground,\n" "is thought to have come from another\n" "world in ancient times."), - FRONT_PIC(Necrozma, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 369, + .trainerOffset = 7, + .frontPic = gMonFrontPic_Necrozma, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Necrozma, .frontAnimId = ANIM_GROW_VIBRATE, .enemyMonElevation = 6, - BACK_PIC(Necrozma, 64, 64), + .backPic = gMonBackPic_Necrozma, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Necrozma), - ICON(Necrozma, 0), + .palette = gMonPalette_Necrozma, + .shinyPalette = gMonShinyPalette_Necrozma, + .iconSprite = gMonIcon_Necrozma, + .iconPalIndex = 0, + FOOTPRINT(Necrozma) + .isLegendary = TRUE, + .levelUpLearnset = sNecrozmaLevelUpLearnset, + .teachableLearnset = sNecrozmaTeachableLearnset, + .formSpeciesIdTable = sNecrozmaFormSpeciesIdTable, }, #if P_FUSION_FORMS [SPECIES_NECROZMA_DUSK_MANE] = { - NECROZMA_MISC_INFO, .baseHP = 97, .baseAttack = 157, .baseDefense = 127, @@ -4246,9 +4899,18 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .catchRate = 255, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 340 : 306, .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PRISM_ARMOR, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, + .noFlip = TRUE, + .speciesName = _("Necrozma"), .cryId = CRY_NECROZMA_DUSK_MANE, + .natDexNum = NATIONAL_DEX_NECROZMA, + .categoryName = _("Prism"), .height = 38, .weight = 4600, .description = COMPOUND_STRING( @@ -4256,22 +4918,34 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = "devouring the light of Solgaleo. It pounces\n" "on foes and then slashes them with\n" "the claws on its four limbs and back."), - FRONT_PIC(NecrozmaDuskMane, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 369, + .trainerOffset = 7, + .frontPic = gMonFrontPic_NecrozmaDuskMane, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Necrozma, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(NecrozmaDuskMane, 64, 64), + .backPic = gMonBackPic_NecrozmaDuskMane, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(NecrozmaDuskMane), - ICON(NecrozmaDuskMane, 0), + .palette = gMonPalette_NecrozmaDuskMane, + .shinyPalette = gMonShinyPalette_NecrozmaDuskMane, + .iconSprite = gMonIcon_NecrozmaDuskMane, + .iconPalIndex = 0, + FOOTPRINT(Necrozma) + .isLegendary = TRUE, .cannotBeTraded = TRUE, + .levelUpLearnset = sNecrozmaLevelUpLearnset, + .teachableLearnset = sNecrozmaTeachableLearnset, + .formSpeciesIdTable = sNecrozmaFormSpeciesIdTable, .formChangeTable = sNecrozmaDuskManeFormChangeTable, }, [SPECIES_NECROZMA_DAWN_WINGS] = { - NECROZMA_MISC_INFO, .baseHP = 97, .baseAttack = 113, .baseDefense = 109, @@ -4282,9 +4956,18 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .catchRate = 255, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 340 : 306, .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PRISM_ARMOR, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + .speciesName = _("Necrozma"), .cryId = CRY_NECROZMA_DAWN_WINGS, + .natDexNum = NATIONAL_DEX_NECROZMA, + .categoryName = _("Prism"), .height = 42, .weight = 3500, .description = COMPOUND_STRING( @@ -4292,24 +4975,36 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = "devouring the light of Lunala. It grasps\n" "foes in its giant claws and rips them\n" "apart with brute force."), - FRONT_PIC(NecrozmaDawnWings, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 369, + .trainerOffset = 7, + .frontPic = gMonFrontPic_NecrozmaDawnWings, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Necrozma, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 6, - BACK_PIC(NecrozmaDawnWings, 64, 64), + .backPic = gMonBackPic_NecrozmaDawnWings, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(NecrozmaDawnWings), - ICON(NecrozmaDawnWings, 0), + .palette = gMonPalette_NecrozmaDawnWings, + .shinyPalette = gMonShinyPalette_NecrozmaDawnWings, + .iconSprite = gMonIcon_NecrozmaDawnWings, + .iconPalIndex = 0, + FOOTPRINT(Necrozma) + .isLegendary = TRUE, .cannotBeTraded = TRUE, + .levelUpLearnset = sNecrozmaLevelUpLearnset, + .teachableLearnset = sNecrozmaTeachableLearnset, + .formSpeciesIdTable = sNecrozmaFormSpeciesIdTable, .formChangeTable = sNecrozmaDawnWingsFormChangeTable, }, #if P_ULTRA_BURST_FORMS [SPECIES_NECROZMA_ULTRA] = { - NECROZMA_MISC_INFO, .baseHP = 97, .baseAttack = 167, .baseDefense = 97, @@ -4322,9 +5017,18 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .evYield_Attack = 1, .evYield_Speed = 1, .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_NEUROFORCE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, + .noFlip = TRUE, + .speciesName = _("Necrozma"), .cryId = CRY_NECROZMA_ULTRA, + .natDexNum = NATIONAL_DEX_NECROZMA, + .categoryName = _("Prism"), .height = 75, .weight = 2300, .description = COMPOUND_STRING( @@ -4332,84 +5036,142 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = "its body affects living things and\n" "nature, impacting them in various\n" "ways."), - FRONT_PIC(NecrozmaUltra, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 369, + .trainerOffset = 7, + .frontPic = gMonFrontPic_NecrozmaUltra, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Necrozma, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 5, - BACK_PIC(NecrozmaUltra, 64, 64), + .backPic = gMonBackPic_NecrozmaUltra, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(NecrozmaUltra), - ICON(NecrozmaUltra, 2), - .cannotBeTraded = TRUE, + .palette = gMonPalette_NecrozmaUltra, + .shinyPalette = gMonShinyPalette_NecrozmaUltra, + .iconSprite = gMonIcon_NecrozmaUltra, + .iconPalIndex = 2, + FOOTPRINT(Necrozma) + .isLegendary = TRUE, .isUltraBurst = TRUE, + .cannotBeTraded = TRUE, + .levelUpLearnset = sNecrozmaLevelUpLearnset, + .teachableLearnset = sNecrozmaTeachableLearnset, + .formSpeciesIdTable = sNecrozmaFormSpeciesIdTable, }, #endif //P_ULTRA_BURST_FORMS #endif //P_FUSION_FORMS #endif //P_FAMILY_NECROZMA #if P_FAMILY_MAGEARNA -#define MAGEARNA_MISC_INFO(Form) \ - .baseHP = 80, \ - .baseAttack = 95, \ - .baseDefense = 115, \ - .baseSpeed = 65, \ - .baseSpAttack = 130, \ - .baseSpDefense = 115, \ - .types = MON_TYPES(TYPE_STEEL, TYPE_FAIRY), \ - .catchRate = 3, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, \ - .evYield_SpAttack = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_SOUL_HEART, ABILITY_NONE }, \ - .speciesName = _("Magearna"), \ - .cryId = CRY_MAGEARNA, \ - .natDexNum = NATIONAL_DEX_MAGEARNA, \ - .categoryName = _("Artificial"), \ - .height = 10, \ - .weight = 805, \ - .pokemonScale = 305, \ - .pokemonOffset = 7, \ - .trainerScale = 257, \ - .trainerOffset = 0, \ - FRONT_PIC(Form, 56, 64), \ - .frontPicYOffset = 0, \ - .frontAnimFrames = sAnims_Magearna, \ - .frontAnimId = ANIM_H_SLIDE_SLOW, \ - BACK_PIC(Form, 64, 56), \ - .backPicYOffset = 4, \ - PALETTES(Form), \ - ICON(Form, 0), \ - FOOTPRINT(Magearna) \ - LEARNSETS(Magearna), \ - .formSpeciesIdTable = sMagearnaFormSpeciesIdTable, \ - .isMythical = TRUE - //.backAnimId = BACK_ANIM_NONE, - [SPECIES_MAGEARNA] = { - MAGEARNA_MISC_INFO(Magearna), + .baseHP = 80, + .baseAttack = 95, + .baseDefense = 115, + .baseSpeed = 65, + .baseSpAttack = 130, + .baseSpDefense = 115, + .types = MON_TYPES(TYPE_STEEL, TYPE_FAIRY), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_SOUL_HEART, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Magearna"), + .cryId = CRY_MAGEARNA, + .natDexNum = NATIONAL_DEX_MAGEARNA, + .categoryName = _("Artificial"), + .height = 10, + .weight = 805, .description = COMPOUND_STRING( "This artificial Pokémon, constructed more\n" "than 500 years ago, can understand human\n" "speech but cannot itself speak. Its true\n" "self is its Soul-Heart, an artificial soul."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Magearna, + .frontPicSize = MON_COORDS_SIZE(56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Magearna, + .frontAnimId = ANIM_H_SLIDE_SLOW, + .backPic = gMonBackPic_Magearna, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicYOffset = 4, + /*.backAnimId = BACK_ANIM_NONE,*/ + .palette = gMonPalette_Magearna, + .shinyPalette = gMonShinyPalette_Magearna, + .iconSprite = gMonIcon_Magearna, + .iconPalIndex = 0, + FOOTPRINT(Magearna) + .isMythical = TRUE, + .levelUpLearnset = sMagearnaLevelUpLearnset, + .teachableLearnset = sMagearnaTeachableLearnset, + .formSpeciesIdTable = sMagearnaFormSpeciesIdTable, }, [SPECIES_MAGEARNA_ORIGINAL_COLOR] = { - MAGEARNA_MISC_INFO(MagearnaOriginalColor), + .baseHP = 80, + .baseAttack = 95, + .baseDefense = 115, + .baseSpeed = 65, + .baseSpAttack = 130, + .baseSpDefense = 115, + .types = MON_TYPES(TYPE_STEEL, TYPE_FAIRY), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_SOUL_HEART, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Magearna"), + .cryId = CRY_MAGEARNA, + .natDexNum = NATIONAL_DEX_MAGEARNA, + .categoryName = _("Artificial"), + .height = 10, + .weight = 805, .description = COMPOUND_STRING( "This is its form from almost 500\n" "years ago. Its body is nothing more\n" "than a container-its artificial heart\n" "is the actual life-form."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + .frontPic = gMonFrontPic_MagearnaOriginalColor, + .frontPicSize = MON_COORDS_SIZE(56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Magearna, + .frontAnimId = ANIM_H_SLIDE_SLOW, + .backPic = gMonBackPic_MagearnaOriginalColor, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicYOffset = 4, + /*.backAnimId = BACK_ANIM_NONE,*/ + .palette = gMonPalette_MagearnaOriginalColor, + .shinyPalette = gMonShinyPalette_MagearnaOriginalColor, + .iconSprite = gMonIcon_MagearnaOriginalColor, + .iconPalIndex = 0, + FOOTPRINT(Magearna) + .isMythical = TRUE, + .levelUpLearnset = sMagearnaLevelUpLearnset, + .teachableLearnset = sMagearnaTeachableLearnset, + .formSpeciesIdTable = sMagearnaFormSpeciesIdTable, }, #endif //P_FAMILY_MAGEARNA @@ -4450,18 +5212,23 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Marshadow, 32, 56), + .frontPic = gMonFrontPic_Marshadow, + .frontPicSize = MON_COORDS_SIZE(32, 56), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Marshadow, .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Marshadow, 40, 56), + .backPic = gMonBackPic_Marshadow, + .backPicSize = MON_COORDS_SIZE(40, 56), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Marshadow), - ICON(Marshadow, 0), + .palette = gMonPalette_Marshadow, + .shinyPalette = gMonShinyPalette_Marshadow, + .iconSprite = gMonIcon_Marshadow, + .iconPalIndex = 0, FOOTPRINT(Marshadow) - LEARNSETS(Marshadow), .isMythical = TRUE, + .levelUpLearnset = sMarshadowLevelUpLearnset, + .teachableLearnset = sMarshadowTeachableLearnset, }, #endif //P_FAMILY_MARSHADOW @@ -4485,7 +5252,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, - .isUltraBeast = TRUE, .speciesName = _("Poipole"), .cryId = CRY_POIPOLE, .natDexNum = NATIONAL_DEX_POIPOLE, @@ -4500,18 +5266,24 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Poipole, 40, 56), + .frontPic = gMonFrontPic_Poipole, + .frontPicSize = MON_COORDS_SIZE(40, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Poipole, .frontAnimId = ANIM_SHAKE_GLOW_PURPLE_SLOW, .enemyMonElevation = 9, - BACK_PIC(Poipole, 48, 56), + .backPic = gMonBackPic_Poipole, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Poipole), - ICON(Poipole, 0), + .palette = gMonPalette_Poipole, + .shinyPalette = gMonShinyPalette_Poipole, + .iconSprite = gMonIcon_Poipole, + .iconPalIndex = 0, FOOTPRINT(Poipole) - LEARNSETS(Poipole), + .isUltraBeast = TRUE, + .levelUpLearnset = sPoipoleLevelUpLearnset, + .teachableLearnset = sPoipoleTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_DRAGON_PULSE, SPECIES_NAGANADEL}), }, @@ -4534,7 +5306,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, - .isUltraBeast = TRUE, .speciesName = _("Naganadel"), .cryId = CRY_NAGANADEL, .natDexNum = NATIONAL_DEX_NAGANADEL, @@ -4549,18 +5320,24 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 0, .trainerScale = 405, .trainerOffset = 8, - FRONT_PIC(Naganadel, 64, 64), + .frontPic = gMonFrontPic_Naganadel, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Naganadel, .frontAnimId = ANIM_TRIANGLE_DOWN_TWICE, .enemyMonElevation = 7, - BACK_PIC(Naganadel, 64, 56), + .backPic = gMonBackPic_Naganadel, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Naganadel), - ICON(Naganadel, 0), + .palette = gMonPalette_Naganadel, + .shinyPalette = gMonShinyPalette_Naganadel, + .iconSprite = gMonIcon_Naganadel, + .iconPalIndex = 0, FOOTPRINT(Naganadel) - LEARNSETS(Naganadel), + .isUltraBeast = TRUE, + .levelUpLearnset = sNaganadelLevelUpLearnset, + .teachableLearnset = sNaganadelTeachableLearnset, }, #endif //P_FAMILY_POIPOLE @@ -4585,7 +5362,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, - .isUltraBeast = TRUE, .speciesName = _("Stakataka"), .cryId = CRY_STAKATAKA, .natDexNum = NATIONAL_DEX_STAKATAKA, @@ -4600,17 +5376,23 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 0, .trainerScale = 721, .trainerOffset = 19, - FRONT_PIC(Stakataka, 64, 64), + .frontPic = gMonFrontPic_Stakataka, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Stakataka, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Stakataka, 64, 48), + .backPic = gMonBackPic_Stakataka, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 12, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Stakataka), - ICON(Stakataka, 0), + .palette = gMonPalette_Stakataka, + .shinyPalette = gMonShinyPalette_Stakataka, + .iconSprite = gMonIcon_Stakataka, + .iconPalIndex = 0, FOOTPRINT(Stakataka) - LEARNSETS(Stakataka), + .isUltraBeast = TRUE, + .levelUpLearnset = sStakatakaLevelUpLearnset, + .teachableLearnset = sStakatakaTeachableLearnset, }, #endif //P_FAMILY_STAKATAKA @@ -4635,7 +5417,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, - .isUltraBeast = TRUE, .speciesName = _("Blacephaln"), .cryId = CRY_BLACEPHALON, .natDexNum = NATIONAL_DEX_BLACEPHALON, @@ -4650,17 +5431,23 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 2, .trainerScale = 286, .trainerOffset = 1, - FRONT_PIC(Blacephalon, 56, 64), + .frontPic = gMonFrontPic_Blacephalon, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Blacephalon, .frontAnimId = ANIM_SHAKE_GLOW_RED, - BACK_PIC(Blacephalon, 64, 48), + .backPic = gMonBackPic_Blacephalon, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Blacephalon), - ICON(Blacephalon, 0), + .palette = gMonPalette_Blacephalon, + .shinyPalette = gMonShinyPalette_Blacephalon, + .iconSprite = gMonIcon_Blacephalon, + .iconPalIndex = 0, FOOTPRINT(Blacephalon) - LEARNSETS(Blacephalon), + .isUltraBeast = TRUE, + .levelUpLearnset = sBlacephalonLevelUpLearnset, + .teachableLearnset = sBlacephalonTeachableLearnset, }, #endif //P_FAMILY_BLACEPHALON @@ -4684,7 +5471,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_VOLT_ABSORB, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, - .isMythical = TRUE, .speciesName = _("Zeraora"), .cryId = CRY_ZERAORA, .natDexNum = NATIONAL_DEX_ZERAORA, @@ -4699,17 +5485,23 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Zeraora, 64, 56), + .frontPic = gMonFrontPic_Zeraora, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Zeraora, .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Zeraora, 64, 56), + .backPic = gMonBackPic_Zeraora, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Zeraora), - ICON(Zeraora, 0), + .palette = gMonPalette_Zeraora, + .shinyPalette = gMonShinyPalette_Zeraora, + .iconSprite = gMonIcon_Zeraora, + .iconPalIndex = 0, FOOTPRINT(Zeraora) - LEARNSETS(Zeraora), + .isMythical = TRUE, + .levelUpLearnset = sZeraoraLevelUpLearnset, + .teachableLearnset = sZeraoraTeachableLearnset, }, #endif //P_FAMILY_ZERAORA @@ -4733,7 +5525,6 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_MAGNET_PULL, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, - .isMythical = TRUE, .speciesName = _("Meltan"), .cryId = CRY_MELTAN, .natDexNum = NATIONAL_DEX_MELTAN, @@ -4748,76 +5539,103 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Meltan, 32, 48), + .frontPic = gMonFrontPic_Meltan, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Meltan, .frontAnimId = ANIM_GROW_STUTTER_SLOW, - BACK_PIC(Meltan, 40, 40), + .backPic = gMonBackPic_Meltan, + .backPicSize = MON_COORDS_SIZE(40, 40), .backPicYOffset = 12, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Meltan), - ICON(Meltan, 2), + .palette = gMonPalette_Meltan, + .shinyPalette = gMonShinyPalette_Meltan, + .iconSprite = gMonIcon_Meltan, + .iconPalIndex = 2, FOOTPRINT(Meltan) - LEARNSETS(Meltan), + .isMythical = TRUE, + .levelUpLearnset = sMeltanLevelUpLearnset, + .teachableLearnset = sMeltanTeachableLearnset, }, -#define MELMETAL_MISC_INFO \ - .baseHP = 135, \ - .baseAttack = 143, \ - .baseDefense = 143, \ - .baseSpeed = 34, \ - .baseSpAttack = 80, \ - .baseSpDefense = 65, \ - .types = MON_TYPES(TYPE_STEEL), \ - .catchRate = 3, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, \ - .evYield_Attack = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_IRON_FIST, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_GRAY, \ - .speciesName = _("Melmetal"), \ - .cryId = CRY_MELMETAL, \ - .natDexNum = NATIONAL_DEX_MELMETAL, \ - .categoryName = _("Hex Nut"), \ - .pokemonScale = 257, \ - .pokemonOffset = 10, \ - .trainerScale = 423, \ - .trainerOffset = 8, \ - FOOTPRINT(Melmetal) \ - LEARNSETS(Melmetal), \ - .formSpeciesIdTable = sMelmetalFormSpeciesIdTable, \ - .formChangeTable = sMelmetalFormChangeTable, \ - .isMythical = TRUE - [SPECIES_MELMETAL] = { - MELMETAL_MISC_INFO, + .baseHP = 135, + .baseAttack = 143, + .baseDefense = 143, + .baseSpeed = 34, + .baseSpAttack = 80, + .baseSpDefense = 65, + .types = MON_TYPES(TYPE_STEEL), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_IRON_FIST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Melmetal"), + .cryId = CRY_MELMETAL, + .natDexNum = NATIONAL_DEX_MELMETAL, + .categoryName = _("Hex Nut"), .height = 25, .weight = 800, .description = COMPOUND_STRING( "Revered long ago for its capacity to create\n" "iron from nothing, for some reason it has\n" "come back to life after 3,000 years."), - FRONT_PIC(Melmetal, 64, 56), + .pokemonScale = 257, + .pokemonOffset = 10, + .trainerScale = 423, + .trainerOffset = 8, + .frontPic = gMonFrontPic_Melmetal, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Melmetal, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Melmetal, 64, 40), + .backPic = gMonBackPic_Melmetal, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Melmetal), - ICON(Melmetal, 2), + .palette = gMonPalette_Melmetal, + .shinyPalette = gMonShinyPalette_Melmetal, + .iconSprite = gMonIcon_Melmetal, + .iconPalIndex = 2, + FOOTPRINT(Melmetal) + .isMythical = TRUE, + .levelUpLearnset = sMelmetalLevelUpLearnset, + .teachableLearnset = sMelmetalTeachableLearnset, + .formSpeciesIdTable = sMelmetalFormSpeciesIdTable, + .formChangeTable = sMelmetalFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_MELMETAL_GIGANTAMAX] = { - MELMETAL_MISC_INFO, - .isGigantamax = TRUE, + .baseHP = 135, + .baseAttack = 143, + .baseDefense = 143, + .baseSpeed = 34, + .baseSpAttack = 80, + .baseSpDefense = 65, + .types = MON_TYPES(TYPE_STEEL), + .catchRate = 3, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_IRON_FIST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Melmetal"), + .cryId = CRY_MELMETAL, + .natDexNum = NATIONAL_DEX_MELMETAL, + .categoryName = _("Hex Nut"), .height = 250, .weight = 0, .description = COMPOUND_STRING( @@ -4825,15 +5643,30 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = "legends about a cyclopean giant. In fact,\n" "the giant was a Melmetal that was\n" "flooded with Gigantamax energy."), - FRONT_PIC(MelmetalGigantamax, 64, 64), + .pokemonScale = 257, + .pokemonOffset = 10, + .trainerScale = 423, + .trainerOffset = 8, + .frontPic = gMonFrontPic_MelmetalGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_MelmetalGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(MelmetalGigantamax, 64, 64), + .backPic = gMonBackPic_MelmetalGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(MelmetalGigantamax), - ICON(MelmetalGigantamax, 0), + .palette = gMonPalette_MelmetalGigantamax, + .shinyPalette = gMonShinyPalette_MelmetalGigantamax, + .iconSprite = gMonIcon_MelmetalGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Melmetal) + .isMythical = TRUE, + .isGigantamax = TRUE, + .levelUpLearnset = sMelmetalLevelUpLearnset, + .teachableLearnset = sMelmetalTeachableLearnset, + .formSpeciesIdTable = sMelmetalFormSpeciesIdTable, + .formChangeTable = sMelmetalFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_MELTAN diff --git a/src/data/pokemon/species_info/gen_8.h b/src/data/pokemon/species_info/gen_8.h index efd5077297..f7146d4142 100644 --- a/src/data/pokemon/species_info/gen_8.h +++ b/src/data/pokemon/species_info/gen_8.h @@ -38,17 +38,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Grookey, 40, 48), + .frontPic = gMonFrontPic_Grookey, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Grookey, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Grookey, 48, 56), + .backPic = gMonBackPic_Grookey, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Grookey), - ICON(Grookey, 1), + .palette = gMonPalette_Grookey, + .shinyPalette = gMonShinyPalette_Grookey, + .iconSprite = gMonIcon_Grookey, + .iconPalIndex = 1, FOOTPRINT(Grookey) - LEARNSETS(Grookey), + .levelUpLearnset = sGrookeyLevelUpLearnset, + .teachableLearnset = sGrookeyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_THWACKEY}), }, @@ -85,95 +90,131 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Thwackey, 48, 56), + .frontPic = gMonFrontPic_Thwackey, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Thwackey, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Thwackey, 56, 56), + .backPic = gMonBackPic_Thwackey, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Thwackey), - ICON(Thwackey, 1), + .palette = gMonPalette_Thwackey, + .shinyPalette = gMonShinyPalette_Thwackey, + .iconSprite = gMonIcon_Thwackey, + .iconPalIndex = 1, FOOTPRINT(Thwackey) - LEARNSETS(Thwackey), + .levelUpLearnset = sThwackeyLevelUpLearnset, + .teachableLearnset = sThwackeyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_RILLABOOM}), }, -#define RILLABOOM_MISC_INFO \ - .baseHP = 100, \ - .baseAttack = 125, \ - .baseDefense = 90, \ - .baseSpeed = 85, \ - .baseSpAttack = 60, \ - .baseSpDefense = 70, \ - .types = MON_TYPES(TYPE_GRASS), \ - .catchRate = 45, \ - .expYield = 265, \ - .evYield_Attack = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_GRASS), \ - .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE }, \ - .bodyColor = BODY_COLOR_GREEN, \ - .speciesName = _("Rillaboom"), \ - .cryId = CRY_RILLABOOM, \ - .natDexNum = NATIONAL_DEX_RILLABOOM, \ - .categoryName = _("Drummer"), \ - FOOTPRINT(Rillaboom) \ - LEARNSETS(Rillaboom), \ - .formSpeciesIdTable = sRillaboomFormSpeciesIdTable, \ - .formChangeTable = sRillaboomFormChangeTable - [SPECIES_RILLABOOM] = { - RILLABOOM_MISC_INFO, + .baseHP = 100, + .baseAttack = 125, + .baseDefense = 90, + .baseSpeed = 85, + .baseSpAttack = 60, + .baseSpDefense = 70, + .types = MON_TYPES(TYPE_GRASS), + .catchRate = 45, + .expYield = 265, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_GRASS), + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Rillaboom"), + .cryId = CRY_RILLABOOM, + .natDexNum = NATIONAL_DEX_RILLABOOM, + .categoryName = _("Drummer"), .height = 21, .weight = 900, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 365, - .trainerOffset = 7, .description = COMPOUND_STRING( "By drumming, it taps into the power of\n" "its special tree stump. The roots of the\n" "stump follow its direction in battle."), - FRONT_PIC(Rillaboom, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, + .frontPic = gMonFrontPic_Rillaboom, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Rillaboom, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Rillaboom, 64, 56), + .backPic = gMonBackPic_Rillaboom, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Rillaboom), - ICON(Rillaboom, 1), + .palette = gMonPalette_Rillaboom, + .shinyPalette = gMonShinyPalette_Rillaboom, + .iconSprite = gMonIcon_Rillaboom, + .iconPalIndex = 1, + FOOTPRINT(Rillaboom) + .levelUpLearnset = sRillaboomLevelUpLearnset, + .teachableLearnset = sRillaboomTeachableLearnset, + .formSpeciesIdTable = sRillaboomFormSpeciesIdTable, + .formChangeTable = sRillaboomFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_RILLABOOM_GIGANTAMAX] = { - RILLABOOM_MISC_INFO, + .baseHP = 100, + .baseAttack = 125, + .baseDefense = 90, + .baseSpeed = 85, + .baseSpAttack = 60, + .baseSpDefense = 70, + .types = MON_TYPES(TYPE_GRASS), + .catchRate = 45, + .expYield = 265, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_GRASS), + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Rillaboom"), + .cryId = CRY_RILLABOOM, + .natDexNum = NATIONAL_DEX_RILLABOOM, + .categoryName = _("Drummer"), .height = 280, .weight = 0, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 365, - .trainerOffset = 7, .description = COMPOUND_STRING( "Rillaboom has become one with its\n" "forest of drums and continues to lay\n" "down beats that shake all of Galar."), - FRONT_PIC(RillaboomGigantamax, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, + .frontPic = gMonFrontPic_RillaboomGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_RillaboomGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(RillaboomGigantamax, 64, 64), + .backPic = gMonBackPic_RillaboomGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(RillaboomGigantamax), - ICON(RillaboomGigantamax, 1), + .palette = gMonPalette_RillaboomGigantamax, + .shinyPalette = gMonShinyPalette_RillaboomGigantamax, + .iconSprite = gMonIcon_RillaboomGigantamax, + .iconPalIndex = 1, + FOOTPRINT(Rillaboom) .isGigantamax = TRUE, + .levelUpLearnset = sRillaboomLevelUpLearnset, + .teachableLearnset = sRillaboomTeachableLearnset, + .formSpeciesIdTable = sRillaboomFormSpeciesIdTable, + .formChangeTable = sRillaboomFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_GROOKEY @@ -213,17 +254,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Scorbunny, 40, 56), + .frontPic = gMonFrontPic_Scorbunny, + .frontPicSize = MON_COORDS_SIZE(40, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Scorbunny, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Scorbunny, 48, 56), + .backPic = gMonBackPic_Scorbunny, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Scorbunny), - ICON(Scorbunny, 0), + .palette = gMonPalette_Scorbunny, + .shinyPalette = gMonShinyPalette_Scorbunny, + .iconSprite = gMonIcon_Scorbunny, + .iconPalIndex = 0, FOOTPRINT(Scorbunny) - LEARNSETS(Scorbunny), + .levelUpLearnset = sScorbunnyLevelUpLearnset, + .teachableLearnset = sScorbunnyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_RABOOT}), }, @@ -260,50 +306,48 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Raboot, 40, 56), + .frontPic = gMonFrontPic_Raboot, + .frontPicSize = MON_COORDS_SIZE(40, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Raboot, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Raboot, 56, 56), + .backPic = gMonBackPic_Raboot, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Raboot), - ICON(Raboot, 0), + .palette = gMonPalette_Raboot, + .shinyPalette = gMonShinyPalette_Raboot, + .iconSprite = gMonIcon_Raboot, + .iconPalIndex = 0, FOOTPRINT(Raboot) - LEARNSETS(Raboot), + .levelUpLearnset = sRabootLevelUpLearnset, + .teachableLearnset = sRabootTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_CINDERACE}), }, -#define CINDERACE_MISC_INFO \ - .baseHP = 80, \ - .baseAttack = 116, \ - .baseDefense = 75, \ - .baseSpeed = 119, \ - .baseSpAttack = 65, \ - .baseSpDefense = 75, \ - .types = MON_TYPES(TYPE_FIRE), \ - .catchRate = 45, \ - .expYield = 265, \ - .evYield_Speed = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE),\ - .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO }, \ - .bodyColor = BODY_COLOR_WHITE, \ - .speciesName = _("Cinderace"), \ - .cryId = CRY_CINDERACE, \ - .natDexNum = NATIONAL_DEX_CINDERACE, \ - .categoryName = _("Striker"), \ - FOOTPRINT(Cinderace) \ - LEARNSETS(Cinderace), \ - .formSpeciesIdTable = sCinderaceFormSpeciesIdTable, \ - .formChangeTable = sCinderaceFormChangeTable - [SPECIES_CINDERACE] = { - CINDERACE_MISC_INFO, + .baseHP = 80, + .baseAttack = 116, + .baseDefense = 75, + .baseSpeed = 119, + .baseSpAttack = 65, + .baseSpDefense = 75, + .types = MON_TYPES(TYPE_FIRE), + .catchRate = 45, + .expYield = 265, + .evYield_Speed = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE), + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Cinderace"), + .cryId = CRY_CINDERACE, + .natDexNum = NATIONAL_DEX_CINDERACE, + .categoryName = _("Striker"), .height = 14, .weight = 330, .description = COMPOUND_STRING( @@ -315,21 +359,50 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 2, .trainerScale = 262, .trainerOffset = 0, - FRONT_PIC(Cinderace, 40, 64), + .frontPic = gMonFrontPic_Cinderace, + .frontPicSize = MON_COORDS_SIZE(40, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Cinderace, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Cinderace, 48, 56), + .backPic = gMonBackPic_Cinderace, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Cinderace), - ICON(Cinderace, 0), + .palette = gMonPalette_Cinderace, + .shinyPalette = gMonShinyPalette_Cinderace, + .iconSprite = gMonIcon_Cinderace, + .iconPalIndex = 0, + FOOTPRINT(Cinderace) + .levelUpLearnset = sCinderaceLevelUpLearnset, + .teachableLearnset = sCinderaceTeachableLearnset, + .formSpeciesIdTable = sCinderaceFormSpeciesIdTable, + .formChangeTable = sCinderaceFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_CINDERACE_GIGANTAMAX] = { - CINDERACE_MISC_INFO, + .baseHP = 80, + .baseAttack = 116, + .baseDefense = 75, + .baseSpeed = 119, + .baseSpAttack = 65, + .baseSpDefense = 75, + .types = MON_TYPES(TYPE_FIRE), + .catchRate = 45, + .expYield = 265, + .evYield_Speed = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE), + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Cinderace"), + .cryId = CRY_CINDERACE, + .natDexNum = NATIONAL_DEX_CINDERACE, + .categoryName = _("Striker"), .height = 270, .weight = 0, .description = COMPOUND_STRING( @@ -341,16 +414,25 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 2, .trainerScale = 262, .trainerOffset = 0, - FRONT_PIC(CinderaceGigantamax, 64, 64), + .frontPic = gMonFrontPic_CinderaceGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_CinderaceGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(CinderaceGigantamax, 64, 64), + .backPic = gMonBackPic_CinderaceGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(CinderaceGigantamax), - ICON(CinderaceGigantamax, 0), + .palette = gMonPalette_CinderaceGigantamax, + .shinyPalette = gMonShinyPalette_CinderaceGigantamax, + .iconSprite = gMonIcon_CinderaceGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Cinderace) .isGigantamax = TRUE, + .levelUpLearnset = sCinderaceLevelUpLearnset, + .teachableLearnset = sCinderaceTeachableLearnset, + .formSpeciesIdTable = sCinderaceFormSpeciesIdTable, + .formChangeTable = sCinderaceFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_SCORBUNNY @@ -391,17 +473,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Sobble, 40, 56), + .frontPic = gMonFrontPic_Sobble, + .frontPicSize = MON_COORDS_SIZE(40, 56), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Sobble, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Sobble, 40, 56), + .backPic = gMonBackPic_Sobble, + .backPicSize = MON_COORDS_SIZE(40, 56), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Sobble), - ICON(Sobble, 2), + .palette = gMonPalette_Sobble, + .shinyPalette = gMonShinyPalette_Sobble, + .iconSprite = gMonIcon_Sobble, + .iconPalIndex = 2, FOOTPRINT(Sobble) - LEARNSETS(Sobble), + .levelUpLearnset = sSobbleLevelUpLearnset, + .teachableLearnset = sSobbleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_DRIZZILE}), }, @@ -438,50 +525,48 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Drizzile, 40, 48), + .frontPic = gMonFrontPic_Drizzile, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Drizzile, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Drizzile, 56, 48), + .backPic = gMonBackPic_Drizzile, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Drizzile), - ICON(Drizzile, 2), + .palette = gMonPalette_Drizzile, + .shinyPalette = gMonShinyPalette_Drizzile, + .iconSprite = gMonIcon_Drizzile, + .iconPalIndex = 2, FOOTPRINT(Drizzile) - LEARNSETS(Drizzile), + .levelUpLearnset = sDrizzileLevelUpLearnset, + .teachableLearnset = sDrizzileTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_INTELEON}), }, -#define INTELEON_MISC_INFO \ - .baseHP = 70, \ - .baseAttack = 85, \ - .baseDefense = 65, \ - .baseSpeed = 120, \ - .baseSpAttack = 125, \ - .baseSpDefense = 65, \ - .types = MON_TYPES(TYPE_WATER), \ - .catchRate = 45, \ - .expYield = 265, \ - .evYield_Speed = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD),\ - .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER }, \ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Inteleon"), \ - .cryId = CRY_INTELEON, \ - .natDexNum = NATIONAL_DEX_INTELEON, \ - .categoryName = _("Secret Agent"), \ - FOOTPRINT(Inteleon) \ - LEARNSETS(Inteleon), \ - .formSpeciesIdTable = sInteleonFormSpeciesIdTable, \ - .formChangeTable = sInteleonFormChangeTable - [SPECIES_INTELEON] = { - INTELEON_MISC_INFO, + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 65, + .baseSpeed = 120, + .baseSpAttack = 125, + .baseSpDefense = 65, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 45, + .expYield = 265, + .evYield_Speed = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Inteleon"), + .cryId = CRY_INTELEON, + .natDexNum = NATIONAL_DEX_INTELEON, + .categoryName = _("Secret Agent"), .height = 19, .weight = 452, .description = COMPOUND_STRING( @@ -493,21 +578,50 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 1, .trainerScale = 326, .trainerOffset = 4, - FRONT_PIC(Inteleon, 48, 64), + .frontPic = gMonFrontPic_Inteleon, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Inteleon, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Inteleon, 56, 64), + .backPic = gMonBackPic_Inteleon, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Inteleon), - ICON(Inteleon, 0), + .palette = gMonPalette_Inteleon, + .shinyPalette = gMonShinyPalette_Inteleon, + .iconSprite = gMonIcon_Inteleon, + .iconPalIndex = 0, + FOOTPRINT(Inteleon) + .levelUpLearnset = sInteleonLevelUpLearnset, + .teachableLearnset = sInteleonTeachableLearnset, + .formSpeciesIdTable = sInteleonFormSpeciesIdTable, + .formChangeTable = sInteleonFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_INTELEON_GIGANTAMAX] = { - INTELEON_MISC_INFO, + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 65, + .baseSpeed = 120, + .baseSpAttack = 125, + .baseSpDefense = 65, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 45, + .expYield = 265, + .evYield_Speed = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Inteleon"), + .cryId = CRY_INTELEON, + .natDexNum = NATIONAL_DEX_INTELEON, + .categoryName = _("Secret Agent"), .height = 400, .weight = 0, .description = COMPOUND_STRING( @@ -519,16 +633,25 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 1, .trainerScale = 326, .trainerOffset = 4, - FRONT_PIC(InteleonGigantamax, 64, 64), + .frontPic = gMonFrontPic_InteleonGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_InteleonGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(InteleonGigantamax, 64, 64), + .backPic = gMonBackPic_InteleonGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(InteleonGigantamax), - ICON(InteleonGigantamax, 0), + .palette = gMonPalette_InteleonGigantamax, + .shinyPalette = gMonShinyPalette_InteleonGigantamax, + .iconSprite = gMonIcon_InteleonGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Inteleon) .isGigantamax = TRUE, + .levelUpLearnset = sInteleonLevelUpLearnset, + .teachableLearnset = sInteleonTeachableLearnset, + .formSpeciesIdTable = sInteleonFormSpeciesIdTable, + .formChangeTable = sInteleonFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_SOBBLE @@ -568,17 +691,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Skwovet, 40, 48), + .frontPic = gMonFrontPic_Skwovet, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Skwovet, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Skwovet, 64, 56), + .backPic = gMonBackPic_Skwovet, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Skwovet), - ICON(Skwovet, 2), + .palette = gMonPalette_Skwovet, + .shinyPalette = gMonShinyPalette_Skwovet, + .iconSprite = gMonIcon_Skwovet, + .iconPalIndex = 2, FOOTPRINT(Skwovet) - LEARNSETS(Skwovet), + .levelUpLearnset = sSkwovetLevelUpLearnset, + .teachableLearnset = sSkwovetTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_GREEDENT}), }, @@ -617,17 +745,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Greedent, 56, 64), + .frontPic = gMonFrontPic_Greedent, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Greedent, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Greedent, 64, 56), + .backPic = gMonBackPic_Greedent, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Greedent), - ICON(Greedent, 0), + .palette = gMonPalette_Greedent, + .shinyPalette = gMonShinyPalette_Greedent, + .iconSprite = gMonIcon_Greedent, + .iconPalIndex = 0, FOOTPRINT(Greedent) - LEARNSETS(Greedent), + .levelUpLearnset = sGreedentLevelUpLearnset, + .teachableLearnset = sGreedentTeachableLearnset, }, #endif //P_FAMILY_SKWOVET @@ -666,17 +799,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Rookidee, 40, 40), + .frontPic = gMonFrontPic_Rookidee, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Rookidee, .frontAnimId = ANIM_H_VIBRATE, - BACK_PIC(Rookidee, 64, 32), + .backPic = gMonBackPic_Rookidee, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 17, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Rookidee), - ICON(Rookidee, 0), + .palette = gMonPalette_Rookidee, + .shinyPalette = gMonShinyPalette_Rookidee, + .iconSprite = gMonIcon_Rookidee, + .iconPalIndex = 0, FOOTPRINT(Rookidee) - LEARNSETS(Rookidee), + .levelUpLearnset = sRookideeLevelUpLearnset, + .teachableLearnset = sRookideeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_CORVISQUIRE}), }, @@ -714,51 +852,49 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Corvisquire, 64, 56), + .frontPic = gMonFrontPic_Corvisquire, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Corvisquire, .frontAnimId = ANIM_CIRCLE_INTO_BG, .enemyMonElevation = 10, - BACK_PIC(Corvisquire, 56, 48), + .backPic = gMonBackPic_Corvisquire, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Corvisquire), - ICON(Corvisquire, 0), + .palette = gMonPalette_Corvisquire, + .shinyPalette = gMonShinyPalette_Corvisquire, + .iconSprite = gMonIcon_Corvisquire, + .iconPalIndex = 0, FOOTPRINT(Corvisquire) - LEARNSETS(Corvisquire), + .levelUpLearnset = sCorvisquireLevelUpLearnset, + .teachableLearnset = sCorvisquireTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_CORVIKNIGHT}), }, -#define CORVIKNIGHT_MISC_INFO \ - .baseHP = 98, \ - .baseAttack = 87, \ - .baseDefense = 105, \ - .baseSpeed = 67, \ - .baseSpAttack = 53, \ - .baseSpDefense = 85, \ - .types = MON_TYPES(TYPE_FLYING, TYPE_STEEL), \ - .catchRate = 45, \ - .expYield = 248, \ - .evYield_Defense = 3, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), \ - .abilities = { ABILITY_PRESSURE, ABILITY_UNNERVE, ABILITY_MIRROR_ARMOR }, \ - .bodyColor = BODY_COLOR_PURPLE, \ - .speciesName = _("Corviknigh"), \ - .cryId = CRY_CORVIKNIGHT, \ - .natDexNum = NATIONAL_DEX_CORVIKNIGHT, \ - .categoryName = _("Raven"), \ - FOOTPRINT(Corviknight) \ - LEARNSETS(Corviknight), \ - .formSpeciesIdTable = sCorviknightFormSpeciesIdTable, \ - .formChangeTable = sCorviknightFormChangeTable - [SPECIES_CORVIKNIGHT] = { - CORVIKNIGHT_MISC_INFO, + .baseHP = 98, + .baseAttack = 87, + .baseDefense = 105, + .baseSpeed = 67, + .baseSpAttack = 53, + .baseSpDefense = 85, + .types = MON_TYPES(TYPE_FLYING, TYPE_STEEL), + .catchRate = 45, + .expYield = 248, + .evYield_Defense = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), + .abilities = { ABILITY_PRESSURE, ABILITY_UNNERVE, ABILITY_MIRROR_ARMOR }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Corviknigh"), + .cryId = CRY_CORVIKNIGHT, + .natDexNum = NATIONAL_DEX_CORVIKNIGHT, + .categoryName = _("Raven"), .height = 22, .weight = 750, .description = COMPOUND_STRING( @@ -770,21 +906,50 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 0, .trainerScale = 348, .trainerOffset = 6, - FRONT_PIC(Corviknight, 56, 64), + .frontPic = gMonFrontPic_Corviknight, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Corviknight, .frontAnimId = ANIM_H_VIBRATE, - BACK_PIC(Corviknight, 64, 64), + .backPic = gMonBackPic_Corviknight, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Corviknight), - ICON(Corviknight, 0), + .palette = gMonPalette_Corviknight, + .shinyPalette = gMonShinyPalette_Corviknight, + .iconSprite = gMonIcon_Corviknight, + .iconPalIndex = 0, + FOOTPRINT(Corviknight) + .levelUpLearnset = sCorviknightLevelUpLearnset, + .teachableLearnset = sCorviknightTeachableLearnset, + .formSpeciesIdTable = sCorviknightFormSpeciesIdTable, + .formChangeTable = sCorviknightFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_CORVIKNIGHT_GIGANTAMAX] = { - CORVIKNIGHT_MISC_INFO, + .baseHP = 98, + .baseAttack = 87, + .baseDefense = 105, + .baseSpeed = 67, + .baseSpAttack = 53, + .baseSpDefense = 85, + .types = MON_TYPES(TYPE_FLYING, TYPE_STEEL), + .catchRate = 45, + .expYield = 248, + .evYield_Defense = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), + .abilities = { ABILITY_PRESSURE, ABILITY_UNNERVE, ABILITY_MIRROR_ARMOR }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Corviknigh"), + .cryId = CRY_CORVIKNIGHT, + .natDexNum = NATIONAL_DEX_CORVIKNIGHT, + .categoryName = _("Raven"), .height = 140, .weight = 0, .description = COMPOUND_STRING( @@ -796,16 +961,25 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 0, .trainerScale = 348, .trainerOffset = 6, - FRONT_PIC(CorviknightGigantamax, 64, 64), + .frontPic = gMonFrontPic_CorviknightGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_CorviknightGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(CorviknightGigantamax, 64, 64), + .backPic = gMonBackPic_CorviknightGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(CorviknightGigantamax), - ICON(CorviknightGigantamax, 0), + .palette = gMonPalette_CorviknightGigantamax, + .shinyPalette = gMonShinyPalette_CorviknightGigantamax, + .iconSprite = gMonIcon_CorviknightGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Corviknight) .isGigantamax = TRUE, + .levelUpLearnset = sCorviknightLevelUpLearnset, + .teachableLearnset = sCorviknightTeachableLearnset, + .formSpeciesIdTable = sCorviknightFormSpeciesIdTable, + .formChangeTable = sCorviknightFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_ROOKIDEE @@ -844,18 +1018,23 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Blipbug, 32, 40), + .frontPic = gMonFrontPic_Blipbug, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Blipbug, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Blipbug, 40, 56), + .backPic = gMonBackPic_Blipbug, + .backPicSize = MON_COORDS_SIZE(40, 56), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Blipbug), - ICON(Blipbug, 0), + .palette = gMonPalette_Blipbug, + .shinyPalette = gMonShinyPalette_Blipbug, + .iconSprite = gMonIcon_Blipbug, + .iconPalIndex = 0, FOOTPRINT(Blipbug) - LEARNSETS(Blipbug), .tmIlliterate = TRUE, + .levelUpLearnset = sBlipbugLevelUpLearnset, + .teachableLearnset = sBlipbugTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_DOTTLER}), }, @@ -894,51 +1073,49 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Dottler, 48, 40), + .frontPic = gMonFrontPic_Dottler, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Dottler, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Dottler, 56, 32), + .backPic = gMonBackPic_Dottler, + .backPicSize = MON_COORDS_SIZE(56, 32), .backPicYOffset = 17, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Dottler), - ICON(Dottler, 2), + .palette = gMonPalette_Dottler, + .shinyPalette = gMonShinyPalette_Dottler, + .iconSprite = gMonIcon_Dottler, + .iconPalIndex = 2, FOOTPRINT(Dottler) - LEARNSETS(Dottler), + .levelUpLearnset = sDottlerLevelUpLearnset, + .teachableLearnset = sDottlerTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ORBEETLE}), }, -#define ORBEETLE_MISC_INFO \ - .baseHP = 60, \ - .baseAttack = 45, \ - .baseDefense = 110, \ - .baseSpeed = 90, \ - .baseSpAttack = 80, \ - .baseSpDefense = 120, \ - .types = MON_TYPES(TYPE_BUG, TYPE_PSYCHIC), \ - .catchRate = 45, \ - .expYield = 253, \ - .evYield_SpDefense = 3, \ - .itemRare = ITEM_PSYCHIC_SEED, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), \ - .abilities = { ABILITY_SWARM, ABILITY_FRISK, ABILITY_TELEPATHY }, \ - .bodyColor = BODY_COLOR_RED, \ - .speciesName = _("Orbeetle"), \ - .cryId = CRY_ORBEETLE, \ - .natDexNum = NATIONAL_DEX_ORBEETLE, \ - .categoryName = _("Seven Spot"), \ - FOOTPRINT(Orbeetle) \ - LEARNSETS(Orbeetle), \ - .formSpeciesIdTable = sOrbeetleFormSpeciesIdTable, \ - .formChangeTable = sOrbeetleFormChangeTable - [SPECIES_ORBEETLE] = { - ORBEETLE_MISC_INFO, + .baseHP = 60, + .baseAttack = 45, + .baseDefense = 110, + .baseSpeed = 90, + .baseSpAttack = 80, + .baseSpDefense = 120, + .types = MON_TYPES(TYPE_BUG, TYPE_PSYCHIC), + .catchRate = 45, + .expYield = 253, + .evYield_SpDefense = 3, + .itemRare = ITEM_PSYCHIC_SEED, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + .abilities = { ABILITY_SWARM, ABILITY_FRISK, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Orbeetle"), + .cryId = CRY_ORBEETLE, + .natDexNum = NATIONAL_DEX_ORBEETLE, + .categoryName = _("Seven Spot"), .height = 4, .weight = 408, .description = COMPOUND_STRING( @@ -950,22 +1127,52 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Orbeetle, 48, 56), + .frontPic = gMonFrontPic_Orbeetle, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Orbeetle, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 8, - BACK_PIC(Orbeetle, 64, 56), + .backPic = gMonBackPic_Orbeetle, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Orbeetle), - ICON(Orbeetle, 0), + .palette = gMonPalette_Orbeetle, + .shinyPalette = gMonShinyPalette_Orbeetle, + .iconSprite = gMonIcon_Orbeetle, + .iconPalIndex = 0, + FOOTPRINT(Orbeetle) + .levelUpLearnset = sOrbeetleLevelUpLearnset, + .teachableLearnset = sOrbeetleTeachableLearnset, + .formSpeciesIdTable = sOrbeetleFormSpeciesIdTable, + .formChangeTable = sOrbeetleFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_ORBEETLE_GIGANTAMAX] = { - ORBEETLE_MISC_INFO, + .baseHP = 60, + .baseAttack = 45, + .baseDefense = 110, + .baseSpeed = 90, + .baseSpAttack = 80, + .baseSpDefense = 120, + .types = MON_TYPES(TYPE_BUG, TYPE_PSYCHIC), + .catchRate = 45, + .expYield = 253, + .evYield_SpDefense = 3, + .itemRare = ITEM_PSYCHIC_SEED, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + .abilities = { ABILITY_SWARM, ABILITY_FRISK, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Orbeetle"), + .cryId = CRY_ORBEETLE, + .natDexNum = NATIONAL_DEX_ORBEETLE, + .categoryName = _("Seven Spot"), .height = 140, .weight = 0, .description = COMPOUND_STRING( @@ -977,16 +1184,25 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(OrbeetleGigantamax, 64, 64), + .frontPic = gMonFrontPic_OrbeetleGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_OrbeetleGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(OrbeetleGigantamax, 64, 64), + .backPic = gMonBackPic_OrbeetleGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(OrbeetleGigantamax), - ICON(OrbeetleGigantamax, 0), + .palette = gMonPalette_OrbeetleGigantamax, + .shinyPalette = gMonShinyPalette_OrbeetleGigantamax, + .iconSprite = gMonIcon_OrbeetleGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Orbeetle) .isGigantamax = TRUE, + .levelUpLearnset = sOrbeetleLevelUpLearnset, + .teachableLearnset = sOrbeetleTeachableLearnset, + .formSpeciesIdTable = sOrbeetleFormSpeciesIdTable, + .formChangeTable = sOrbeetleFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_BLIPBUG @@ -1026,17 +1242,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Nickit, 56, 48), + .frontPic = gMonFrontPic_Nickit, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Nickit, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Nickit, 64, 56), + .backPic = gMonBackPic_Nickit, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Nickit), - ICON(Nickit, 2), + .palette = gMonPalette_Nickit, + .shinyPalette = gMonShinyPalette_Nickit, + .iconSprite = gMonIcon_Nickit, + .iconPalIndex = 2, FOOTPRINT(Nickit) - LEARNSETS(Nickit), + .levelUpLearnset = sNickitLevelUpLearnset, + .teachableLearnset = sNickitTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_THIEVUL}), }, @@ -1074,17 +1295,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Thievul, 64, 56), + .frontPic = gMonFrontPic_Thievul, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Thievul, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Thievul, 56, 64), + .backPic = gMonBackPic_Thievul, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Thievul), - ICON(Thievul, 2), + .palette = gMonPalette_Thievul, + .shinyPalette = gMonShinyPalette_Thievul, + .iconSprite = gMonIcon_Thievul, + .iconPalIndex = 2, FOOTPRINT(Thievul) - LEARNSETS(Thievul), + .levelUpLearnset = sThievulLevelUpLearnset, + .teachableLearnset = sThievulTeachableLearnset, }, #endif //P_FAMILY_NICKIT @@ -1123,17 +1349,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Gossifleur, 48, 56), + .frontPic = gMonFrontPic_Gossifleur, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Gossifleur, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Gossifleur, 56, 48), + .backPic = gMonBackPic_Gossifleur, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 15, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Gossifleur), - ICON(Gossifleur, 1), + .palette = gMonPalette_Gossifleur, + .shinyPalette = gMonShinyPalette_Gossifleur, + .iconSprite = gMonIcon_Gossifleur, + .iconPalIndex = 1, FOOTPRINT(Gossifleur) - LEARNSETS(Gossifleur), + .levelUpLearnset = sGossifleurLevelUpLearnset, + .teachableLearnset = sGossifleurTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_ELDEGOSS}), }, @@ -1171,17 +1402,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Eldegoss, 48, 56), + .frontPic = gMonFrontPic_Eldegoss, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Eldegoss, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Eldegoss, 64, 40), + .backPic = gMonBackPic_Eldegoss, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 15, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Eldegoss), - ICON(Eldegoss, 1), + .palette = gMonPalette_Eldegoss, + .shinyPalette = gMonShinyPalette_Eldegoss, + .iconSprite = gMonIcon_Eldegoss, + .iconPalIndex = 1, FOOTPRINT(Eldegoss) - LEARNSETS(Eldegoss), + .levelUpLearnset = sEldegossLevelUpLearnset, + .teachableLearnset = sEldegossTeachableLearnset, }, #endif //P_FAMILY_GOSSIFLEUR @@ -1220,17 +1456,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Wooloo, 40, 40), + .frontPic = gMonFrontPic_Wooloo, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Wooloo, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Wooloo, 56, 32), + .backPic = gMonBackPic_Wooloo, + .backPicSize = MON_COORDS_SIZE(56, 32), .backPicYOffset = 18, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Wooloo), - ICON(Wooloo, 0), + .palette = gMonPalette_Wooloo, + .shinyPalette = gMonShinyPalette_Wooloo, + .iconSprite = gMonIcon_Wooloo, + .iconPalIndex = 0, FOOTPRINT(Wooloo) - LEARNSETS(Wooloo), + .levelUpLearnset = sWoolooLevelUpLearnset, + .teachableLearnset = sWoolooTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_DUBWOOL}), }, @@ -1268,17 +1509,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Dubwool, 48, 56), + .frontPic = gMonFrontPic_Dubwool, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Dubwool, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Dubwool, 64, 40), + .backPic = gMonBackPic_Dubwool, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Dubwool), - ICON(Dubwool, 2), + .palette = gMonPalette_Dubwool, + .shinyPalette = gMonShinyPalette_Dubwool, + .iconSprite = gMonIcon_Dubwool, + .iconPalIndex = 2, FOOTPRINT(Dubwool) - LEARNSETS(Dubwool), + .levelUpLearnset = sDubwoolLevelUpLearnset, + .teachableLearnset = sDubwoolTeachableLearnset, }, #endif //P_FAMILY_WOOLOO @@ -1316,50 +1562,48 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Chewtle, 32, 48), + .frontPic = gMonFrontPic_Chewtle, + .frontPicSize = MON_COORDS_SIZE(32, 48), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Chewtle, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Chewtle, 56, 56), + .backPic = gMonBackPic_Chewtle, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Chewtle), - ICON(Chewtle, 0), + .palette = gMonPalette_Chewtle, + .shinyPalette = gMonShinyPalette_Chewtle, + .iconSprite = gMonIcon_Chewtle, + .iconPalIndex = 0, FOOTPRINT(Chewtle) - LEARNSETS(Chewtle), + .levelUpLearnset = sChewtleLevelUpLearnset, + .teachableLearnset = sChewtleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_DREDNAW}), }, -#define DREDNAW_MISC_INFO \ - .baseHP = 90, \ - .baseAttack = 115, \ - .baseDefense = 90, \ - .baseSpeed = 74, \ - .baseSpAttack = 48, \ - .baseSpDefense = 68, \ - .types = MON_TYPES(TYPE_WATER, TYPE_ROCK), \ - .catchRate = 75, \ - .expYield = 170, \ - .evYield_Attack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), \ - .abilities = { ABILITY_STRONG_JAW, ABILITY_SHELL_ARMOR, ABILITY_SWIFT_SWIM }, \ - .bodyColor = BODY_COLOR_GREEN, \ - .speciesName = _("Drednaw"), \ - .cryId = CRY_DREDNAW, \ - .natDexNum = NATIONAL_DEX_DREDNAW, \ - .categoryName = _("Bite"), \ - FOOTPRINT(Drednaw) \ - LEARNSETS(Drednaw), \ - .formSpeciesIdTable = sDrednawFormSpeciesIdTable, \ - .formChangeTable = sDrednawFormChangeTable - [SPECIES_DREDNAW] = { - DREDNAW_MISC_INFO, + .baseHP = 90, + .baseAttack = 115, + .baseDefense = 90, + .baseSpeed = 74, + .baseSpAttack = 48, + .baseSpDefense = 68, + .types = MON_TYPES(TYPE_WATER, TYPE_ROCK), + .catchRate = 75, + .expYield = 170, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), + .abilities = { ABILITY_STRONG_JAW, ABILITY_SHELL_ARMOR, ABILITY_SWIFT_SWIM }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Drednaw"), + .cryId = CRY_DREDNAW, + .natDexNum = NATIONAL_DEX_DREDNAW, + .categoryName = _("Bite"), .height = 10, .weight = 1155, .description = COMPOUND_STRING( @@ -1370,21 +1614,50 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Drednaw, 64, 56), + .frontPic = gMonFrontPic_Drednaw, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Drednaw, .frontAnimId = ANIM_GROW_VIBRATE, - BACK_PIC(Drednaw, 64, 40), + .backPic = gMonBackPic_Drednaw, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 18, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Drednaw), - ICON(Drednaw, 0), + .palette = gMonPalette_Drednaw, + .shinyPalette = gMonShinyPalette_Drednaw, + .iconSprite = gMonIcon_Drednaw, + .iconPalIndex = 0, + FOOTPRINT(Drednaw) + .levelUpLearnset = sDrednawLevelUpLearnset, + .teachableLearnset = sDrednawTeachableLearnset, + .formSpeciesIdTable = sDrednawFormSpeciesIdTable, + .formChangeTable = sDrednawFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_DREDNAW_GIGANTAMAX] = { - DREDNAW_MISC_INFO, + .baseHP = 90, + .baseAttack = 115, + .baseDefense = 90, + .baseSpeed = 74, + .baseSpAttack = 48, + .baseSpDefense = 68, + .types = MON_TYPES(TYPE_WATER, TYPE_ROCK), + .catchRate = 75, + .expYield = 170, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_WATER_1), + .abilities = { ABILITY_STRONG_JAW, ABILITY_SHELL_ARMOR, ABILITY_SWIFT_SWIM }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Drednaw"), + .cryId = CRY_DREDNAW, + .natDexNum = NATIONAL_DEX_DREDNAW, + .categoryName = _("Bite"), .height = 240, .weight = 0, .description = COMPOUND_STRING( @@ -1396,16 +1669,25 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(DrednawGigantamax, 64, 64), + .frontPic = gMonFrontPic_DrednawGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_DrednawGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(DrednawGigantamax, 64, 64), + .backPic = gMonBackPic_DrednawGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 12, //.backAnimId = BACK_ANIM_NONE, - PALETTES(DrednawGigantamax), - ICON(DrednawGigantamax, 0), + .palette = gMonPalette_DrednawGigantamax, + .shinyPalette = gMonShinyPalette_DrednawGigantamax, + .iconSprite = gMonIcon_DrednawGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Drednaw) .isGigantamax = TRUE, + .levelUpLearnset = sDrednawLevelUpLearnset, + .teachableLearnset = sDrednawTeachableLearnset, + .formSpeciesIdTable = sDrednawFormSpeciesIdTable, + .formChangeTable = sDrednawFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_CHEWTLE @@ -1445,17 +1727,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Yamper, 40, 48), + .frontPic = gMonFrontPic_Yamper, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Yamper, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Yamper, 48, 48), + .backPic = gMonBackPic_Yamper, + .backPicSize = MON_COORDS_SIZE(48, 48), .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Yamper), - ICON(Yamper, 1), + .palette = gMonPalette_Yamper, + .shinyPalette = gMonShinyPalette_Yamper, + .iconSprite = gMonIcon_Yamper, + .iconPalIndex = 1, FOOTPRINT(Yamper) - LEARNSETS(Yamper), + .levelUpLearnset = sYamperLevelUpLearnset, + .teachableLearnset = sYamperTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_BOLTUND}), }, @@ -1493,17 +1780,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Boltund, 48, 56), + .frontPic = gMonFrontPic_Boltund, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Boltund, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Boltund, 64, 56), + .backPic = gMonBackPic_Boltund, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Boltund), - ICON(Boltund, 1), + .palette = gMonPalette_Boltund, + .shinyPalette = gMonShinyPalette_Boltund, + .iconSprite = gMonIcon_Boltund, + .iconPalIndex = 1, FOOTPRINT(Boltund) - LEARNSETS(Boltund), + .levelUpLearnset = sBoltundLevelUpLearnset, + .teachableLearnset = sBoltundTeachableLearnset, }, #endif //P_FAMILY_YAMPER @@ -1542,17 +1834,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Rolycoly, 40, 40), + .frontPic = gMonFrontPic_Rolycoly, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Rolycoly, .frontAnimId = ANIM_H_SLIDE_SLOW, - BACK_PIC(Rolycoly, 64, 32), + .backPic = gMonBackPic_Rolycoly, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 17, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Rolycoly), - ICON(Rolycoly, 0), + .palette = gMonPalette_Rolycoly, + .shinyPalette = gMonShinyPalette_Rolycoly, + .iconSprite = gMonIcon_Rolycoly, + .iconPalIndex = 0, FOOTPRINT(Rolycoly) - LEARNSETS(Rolycoly), + .levelUpLearnset = sRolycolyLevelUpLearnset, + .teachableLearnset = sRolycolyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_CARKOL}), }, @@ -1589,50 +1886,48 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Carkol, 48, 56), + .frontPic = gMonFrontPic_Carkol, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Carkol, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Carkol, 64, 48), + .backPic = gMonBackPic_Carkol, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Carkol), - ICON(Carkol, 0), + .palette = gMonPalette_Carkol, + .shinyPalette = gMonShinyPalette_Carkol, + .iconSprite = gMonIcon_Carkol, + .iconPalIndex = 0, FOOTPRINT(Carkol) - LEARNSETS(Carkol), + .levelUpLearnset = sCarkolLevelUpLearnset, + .teachableLearnset = sCarkolTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_COALOSSAL}), }, -#define COALOSSAL_MISC_INFO \ - .baseHP = 110, \ - .baseAttack = 80, \ - .baseDefense = 120, \ - .baseSpeed = 30, \ - .baseSpAttack = 80, \ - .baseSpDefense = 90, \ - .types = MON_TYPES(TYPE_ROCK, TYPE_FIRE), \ - .catchRate = 45, \ - .expYield = 255, \ - .evYield_Defense = 3, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), \ - .abilities = { ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE }, \ - .bodyColor = BODY_COLOR_BLACK, \ - .speciesName = _("Coalossal"), \ - .cryId = CRY_COALOSSAL, \ - .natDexNum = NATIONAL_DEX_COALOSSAL, \ - .categoryName = _("Coal"), \ - FOOTPRINT(Coalossal) \ - LEARNSETS(Coalossal), \ - .formSpeciesIdTable = sCoalossalFormSpeciesIdTable, \ - .formChangeTable = sCoalossalFormChangeTable - [SPECIES_COALOSSAL] = { - COALOSSAL_MISC_INFO, + .baseHP = 110, + .baseAttack = 80, + .baseDefense = 120, + .baseSpeed = 30, + .baseSpAttack = 80, + .baseSpDefense = 90, + .types = MON_TYPES(TYPE_ROCK, TYPE_FIRE), + .catchRate = 45, + .expYield = 255, + .evYield_Defense = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + .abilities = { ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Coalossal"), + .cryId = CRY_COALOSSAL, + .natDexNum = NATIONAL_DEX_COALOSSAL, + .categoryName = _("Coal"), .height = 28, .weight = 3105, .description = COMPOUND_STRING( @@ -1644,21 +1939,50 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Coalossal, 56, 64), + .frontPic = gMonFrontPic_Coalossal, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Coalossal, .frontAnimId = ANIM_GLOW_RED, - BACK_PIC(Coalossal, 64, 48), + .backPic = gMonBackPic_Coalossal, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Coalossal), - ICON(Coalossal, 0), + .palette = gMonPalette_Coalossal, + .shinyPalette = gMonShinyPalette_Coalossal, + .iconSprite = gMonIcon_Coalossal, + .iconPalIndex = 0, + FOOTPRINT(Coalossal) + .levelUpLearnset = sCoalossalLevelUpLearnset, + .teachableLearnset = sCoalossalTeachableLearnset, + .formSpeciesIdTable = sCoalossalFormSpeciesIdTable, + .formChangeTable = sCoalossalFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_COALOSSAL_GIGANTAMAX] = { - COALOSSAL_MISC_INFO, + .baseHP = 110, + .baseAttack = 80, + .baseDefense = 120, + .baseSpeed = 30, + .baseSpAttack = 80, + .baseSpDefense = 90, + .types = MON_TYPES(TYPE_ROCK, TYPE_FIRE), + .catchRate = 45, + .expYield = 255, + .evYield_Defense = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + .abilities = { ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Coalossal"), + .cryId = CRY_COALOSSAL, + .natDexNum = NATIONAL_DEX_COALOSSAL, + .categoryName = _("Coal"), .height = 420, .weight = 0, .description = COMPOUND_STRING( @@ -1670,16 +1994,25 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(CoalossalGigantamax, 64, 64), + .frontPic = gMonFrontPic_CoalossalGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_CoalossalGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(CoalossalGigantamax, 64, 64), + .backPic = gMonBackPic_CoalossalGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(CoalossalGigantamax), - ICON(CoalossalGigantamax, 0), + .palette = gMonPalette_CoalossalGigantamax, + .shinyPalette = gMonShinyPalette_CoalossalGigantamax, + .iconSprite = gMonIcon_CoalossalGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Coalossal) .isGigantamax = TRUE, + .levelUpLearnset = sCoalossalLevelUpLearnset, + .teachableLearnset = sCoalossalTeachableLearnset, + .formSpeciesIdTable = sCoalossalFormSpeciesIdTable, + .formChangeTable = sCoalossalFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_ROLYCOLY @@ -1719,53 +2052,51 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Applin, 32, 40), + .frontPic = gMonFrontPic_Applin, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Applin, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Applin, 40, 48), + .backPic = gMonBackPic_Applin, + .backPicSize = MON_COORDS_SIZE(40, 48), .backPicYOffset = 15, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Applin), - ICON(Applin, 1), + .palette = gMonPalette_Applin, + .shinyPalette = gMonShinyPalette_Applin, + .iconSprite = gMonIcon_Applin, + .iconPalIndex = 1, FOOTPRINT(Applin) - LEARNSETS(Applin), .tmIlliterate = TRUE, + .levelUpLearnset = sApplinLevelUpLearnset, + .teachableLearnset = sApplinTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_TART_APPLE, SPECIES_FLAPPLE}, {EVO_ITEM, ITEM_SWEET_APPLE, SPECIES_APPLETUN}, {EVO_ITEM, ITEM_SYRUPY_APPLE, SPECIES_DIPPLIN}), }, -#define FLAPPLE_MISC_INFO \ - .baseHP = 70, \ - .baseAttack = 110, \ - .baseDefense = 80, \ - .baseSpeed = 70, \ - .baseSpAttack = 95, \ - .baseSpDefense = 60, \ - .types = MON_TYPES(TYPE_GRASS, TYPE_DRAGON), \ - .catchRate = 45, \ - .expYield = 170, \ - .evYield_Attack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_ERRATIC, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS, EGG_GROUP_DRAGON), \ - .abilities = { ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_HUSTLE }, \ - .bodyColor = BODY_COLOR_GREEN, \ - .speciesName = _("Flapple"), \ - .cryId = CRY_FLAPPLE, \ - .natDexNum = NATIONAL_DEX_FLAPPLE, \ - .categoryName = _("Apple Wing"), \ - FOOTPRINT(Flapple) \ - LEARNSETS(Flapple), \ - .formSpeciesIdTable = sFlappleFormSpeciesIdTable, \ - .formChangeTable = sFlappleFormChangeTable - [SPECIES_FLAPPLE] = { - FLAPPLE_MISC_INFO, + .baseHP = 70, + .baseAttack = 110, + .baseDefense = 80, + .baseSpeed = 70, + .baseSpAttack = 95, + .baseSpDefense = 60, + .types = MON_TYPES(TYPE_GRASS, TYPE_DRAGON), + .catchRate = 45, + .expYield = 170, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS, EGG_GROUP_DRAGON), + .abilities = { ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_HUSTLE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Flapple"), + .cryId = CRY_FLAPPLE, + .natDexNum = NATIONAL_DEX_FLAPPLE, + .categoryName = _("Apple Wing"), .height = 3, .weight = 10, .description = COMPOUND_STRING( @@ -1776,22 +2107,51 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Flapple, 56, 48), + .frontPic = gMonFrontPic_Flapple, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Flapple, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 9, - BACK_PIC(Flapple, 48, 56), + .backPic = gMonBackPic_Flapple, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Flapple), - ICON(Flapple, 1), + .palette = gMonPalette_Flapple, + .shinyPalette = gMonShinyPalette_Flapple, + .iconSprite = gMonIcon_Flapple, + .iconPalIndex = 1, + FOOTPRINT(Flapple) + .levelUpLearnset = sFlappleLevelUpLearnset, + .teachableLearnset = sFlappleTeachableLearnset, + .formSpeciesIdTable = sFlappleFormSpeciesIdTable, + .formChangeTable = sFlappleFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_FLAPPLE_GIGANTAMAX] = { - FLAPPLE_MISC_INFO, + .baseHP = 70, + .baseAttack = 110, + .baseDefense = 80, + .baseSpeed = 70, + .baseSpAttack = 95, + .baseSpDefense = 60, + .types = MON_TYPES(TYPE_GRASS, TYPE_DRAGON), + .catchRate = 45, + .expYield = 170, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS, EGG_GROUP_DRAGON), + .abilities = { ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_HUSTLE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Flapple"), + .cryId = CRY_FLAPPLE, + .natDexNum = NATIONAL_DEX_FLAPPLE, + .categoryName = _("Apple Wing"), .height = 240, .weight = 0, .description = COMPOUND_STRING( @@ -1803,49 +2163,51 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(FlappleGigantamax, 64, 64), + .frontPic = gMonFrontPic_FlappleGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_FlappleGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(FlappleGigantamax, 64, 64), + .backPic = gMonBackPic_FlappleGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(FlappleGigantamax), - ICON(FlappleGigantamax, 1), + .palette = gMonPalette_FlappleGigantamax, + .shinyPalette = gMonShinyPalette_FlappleGigantamax, + .iconSprite = gMonIcon_FlappleGigantamax, + .iconPalIndex = 1, + FOOTPRINT(Flapple) .isGigantamax = TRUE, + .levelUpLearnset = sFlappleLevelUpLearnset, + .teachableLearnset = sFlappleTeachableLearnset, + .formSpeciesIdTable = sFlappleFormSpeciesIdTable, + .formChangeTable = sFlappleFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS -#define APPLETUN_MISC_INFO \ - .baseHP = 110, \ - .baseAttack = 85, \ - .baseDefense = 80, \ - .baseSpeed = 30, \ - .baseSpAttack = 100, \ - .baseSpDefense = 80, \ - .types = MON_TYPES(TYPE_GRASS, TYPE_DRAGON), \ - .catchRate = 45, \ - .expYield = 170, \ - .evYield_HP = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_ERRATIC, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS, EGG_GROUP_DRAGON), \ - .abilities = { ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_THICK_FAT }, \ - .bodyColor = BODY_COLOR_GREEN, \ - .speciesName = _("Appletun"), \ - .cryId = CRY_APPLETUN, \ - .natDexNum = NATIONAL_DEX_APPLETUN, \ - .categoryName = _("Apple Nectar"), \ - FOOTPRINT(Appletun) \ - LEARNSETS(Appletun), \ - .formSpeciesIdTable = sAppletunFormSpeciesIdTable, \ - .formChangeTable = sAppletunFormChangeTable - [SPECIES_APPLETUN] = { - APPLETUN_MISC_INFO, + .baseHP = 110, + .baseAttack = 85, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 100, + .baseSpDefense = 80, + .types = MON_TYPES(TYPE_GRASS, TYPE_DRAGON), + .catchRate = 45, + .expYield = 170, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS, EGG_GROUP_DRAGON), + .abilities = { ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_THICK_FAT }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Appletun"), + .cryId = CRY_APPLETUN, + .natDexNum = NATIONAL_DEX_APPLETUN, + .categoryName = _("Apple Nectar"), .height = 4, .weight = 130, .description = COMPOUND_STRING( @@ -1856,21 +2218,50 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Appletun, 64, 56), + .frontPic = gMonFrontPic_Appletun, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Appletun, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Appletun, 64, 56), + .backPic = gMonBackPic_Appletun, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Appletun), - ICON(Appletun, 1), + .palette = gMonPalette_Appletun, + .shinyPalette = gMonShinyPalette_Appletun, + .iconSprite = gMonIcon_Appletun, + .iconPalIndex = 1, + FOOTPRINT(Appletun) + .levelUpLearnset = sAppletunLevelUpLearnset, + .teachableLearnset = sAppletunTeachableLearnset, + .formSpeciesIdTable = sAppletunFormSpeciesIdTable, + .formChangeTable = sAppletunFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_APPLETUN_GIGANTAMAX] = { - APPLETUN_MISC_INFO, + .baseHP = 110, + .baseAttack = 85, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 100, + .baseSpDefense = 80, + .types = MON_TYPES(TYPE_GRASS, TYPE_DRAGON), + .catchRate = 45, + .expYield = 170, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS, EGG_GROUP_DRAGON), + .abilities = { ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_THICK_FAT }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Appletun"), + .cryId = CRY_APPLETUN, + .natDexNum = NATIONAL_DEX_APPLETUN, + .categoryName = _("Apple Nectar"), .height = 240, .weight = 0, .description = COMPOUND_STRING( @@ -1882,16 +2273,25 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(AppletunGigantamax, 64, 64), + .frontPic = gMonFrontPic_AppletunGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_AppletunGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(AppletunGigantamax, 64, 64), + .backPic = gMonBackPic_AppletunGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(AppletunGigantamax), - ICON(AppletunGigantamax, 1), + .palette = gMonPalette_AppletunGigantamax, + .shinyPalette = gMonShinyPalette_AppletunGigantamax, + .iconSprite = gMonIcon_AppletunGigantamax, + .iconPalIndex = 1, + FOOTPRINT(Appletun) .isGigantamax = TRUE, + .levelUpLearnset = sAppletunLevelUpLearnset, + .teachableLearnset = sAppletunTeachableLearnset, + .formSpeciesIdTable = sAppletunFormSpeciesIdTable, + .formChangeTable = sAppletunFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS @@ -1929,17 +2329,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Dipplin, 64, 64), + .frontPic = gMonFrontPic_Dipplin, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Dipplin, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Dipplin, 64, 64), + .backPic = gMonBackPic_Dipplin, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Dipplin), - ICON(Dipplin, 1), + .palette = gMonPalette_Dipplin, + .shinyPalette = gMonShinyPalette_Dipplin, + .iconSprite = gMonIcon_Dipplin, + .iconPalIndex = 1, //FOOTPRINT(Dipplin) - LEARNSETS(Dipplin), + .levelUpLearnset = sDipplinLevelUpLearnset, + .teachableLearnset = sDipplinTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_DRAGON_CHEER, SPECIES_HYDRAPPLE}), }, @@ -1977,17 +2382,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Hydrapple, 64, 64), + .frontPic = gMonFrontPic_Hydrapple, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Hydrapple, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Hydrapple, 64, 64), + .backPic = gMonBackPic_Hydrapple, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_NONE, - PALETTES(Hydrapple), - ICON(Hydrapple, 1), + .palette = gMonPalette_Hydrapple, + .shinyPalette = gMonShinyPalette_Hydrapple, + .iconSprite = gMonIcon_Hydrapple, + .iconPalIndex = 1, //FOOTPRINT(Hydrapple) - LEARNSETS(Hydrapple), + .levelUpLearnset = sHydrappleLevelUpLearnset, + .teachableLearnset = sHydrappleTeachableLearnset, }, #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_APPLIN @@ -2026,50 +2436,48 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 0, .trainerScale = 348, .trainerOffset = 6, - FRONT_PIC(Silicobra, 40, 40), + .frontPic = gMonFrontPic_Silicobra, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Silicobra, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Silicobra, 56, 48), + .backPic = gMonBackPic_Silicobra, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 10, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Silicobra), - ICON(Silicobra, 1), + .palette = gMonPalette_Silicobra, + .shinyPalette = gMonShinyPalette_Silicobra, + .iconSprite = gMonIcon_Silicobra, + .iconPalIndex = 1, FOOTPRINT(Silicobra) - LEARNSETS(Silicobra), + .levelUpLearnset = sSilicobraLevelUpLearnset, + .teachableLearnset = sSilicobraTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SANDACONDA}), }, -#define SANDACONDA_MISC_INFO \ - .baseHP = 72, \ - .baseAttack = 107, \ - .baseDefense = 125, \ - .baseSpeed = 71, \ - .baseSpAttack = 65, \ - .baseSpDefense = 70, \ - .types = MON_TYPES(TYPE_GROUND), \ - .catchRate = 120, \ - .expYield = 179, \ - .evYield_Defense = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_DRAGON), \ - .abilities = { ABILITY_SAND_SPIT, ABILITY_SHED_SKIN, ABILITY_SAND_VEIL }, \ - .bodyColor = BODY_COLOR_GREEN, \ - .speciesName = _("Sandaconda"), \ - .cryId = CRY_SANDACONDA, \ - .natDexNum = NATIONAL_DEX_SANDACONDA, \ - .categoryName = _("Sand Snake"), \ - FOOTPRINT(Sandaconda) \ - LEARNSETS(Sandaconda), \ - .formSpeciesIdTable = sSandacondaFormSpeciesIdTable, \ - .formChangeTable = sSandacondaFormChangeTable - [SPECIES_SANDACONDA] = { - SANDACONDA_MISC_INFO, + .baseHP = 72, + .baseAttack = 107, + .baseDefense = 125, + .baseSpeed = 71, + .baseSpAttack = 65, + .baseSpDefense = 70, + .types = MON_TYPES(TYPE_GROUND), + .catchRate = 120, + .expYield = 179, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_DRAGON), + .abilities = { ABILITY_SAND_SPIT, ABILITY_SHED_SKIN, ABILITY_SAND_VEIL }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Sandaconda"), + .cryId = CRY_SANDACONDA, + .natDexNum = NATIONAL_DEX_SANDACONDA, + .categoryName = _("Sand Snake"), .height = 38, .weight = 655, .description = COMPOUND_STRING( @@ -2081,21 +2489,50 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 0, .trainerScale = 610, .trainerOffset = 17, - FRONT_PIC(Sandaconda, 64, 40), + .frontPic = gMonFrontPic_Sandaconda, + .frontPicSize = MON_COORDS_SIZE(64, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Sandaconda, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Sandaconda, 64, 40), + .backPic = gMonBackPic_Sandaconda, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Sandaconda), - ICON(Sandaconda, 1), + .palette = gMonPalette_Sandaconda, + .shinyPalette = gMonShinyPalette_Sandaconda, + .iconSprite = gMonIcon_Sandaconda, + .iconPalIndex = 1, + FOOTPRINT(Sandaconda) + .levelUpLearnset = sSandacondaLevelUpLearnset, + .teachableLearnset = sSandacondaTeachableLearnset, + .formSpeciesIdTable = sSandacondaFormSpeciesIdTable, + .formChangeTable = sSandacondaFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_SANDACONDA_GIGANTAMAX] = { - SANDACONDA_MISC_INFO, + .baseHP = 72, + .baseAttack = 107, + .baseDefense = 125, + .baseSpeed = 71, + .baseSpAttack = 65, + .baseSpDefense = 70, + .types = MON_TYPES(TYPE_GROUND), + .catchRate = 120, + .expYield = 179, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_DRAGON), + .abilities = { ABILITY_SAND_SPIT, ABILITY_SHED_SKIN, ABILITY_SAND_VEIL }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Sandaconda"), + .cryId = CRY_SANDACONDA, + .natDexNum = NATIONAL_DEX_SANDACONDA, + .categoryName = _("Sand Snake"), .height = 220, .weight = 0, .description = COMPOUND_STRING( @@ -2107,108 +2544,189 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 0, .trainerScale = 610, .trainerOffset = 17, - FRONT_PIC(SandacondaGigantamax, 64, 64), + .frontPic = gMonFrontPic_SandacondaGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_SandacondaGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SandacondaGigantamax, 64, 64), + .backPic = gMonBackPic_SandacondaGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(SandacondaGigantamax), - ICON(SandacondaGigantamax, 1), + .palette = gMonPalette_SandacondaGigantamax, + .shinyPalette = gMonShinyPalette_SandacondaGigantamax, + .iconSprite = gMonIcon_SandacondaGigantamax, + .iconPalIndex = 1, + FOOTPRINT(Sandaconda) .isGigantamax = TRUE, + .levelUpLearnset = sSandacondaLevelUpLearnset, + .teachableLearnset = sSandacondaTeachableLearnset, + .formSpeciesIdTable = sSandacondaFormSpeciesIdTable, + .formChangeTable = sSandacondaFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_SILICOBRA #if P_FAMILY_CRAMORANT -#define CRAMORANT_MISC_INFO \ - .baseHP = 70, \ - .baseAttack = 85, \ - .baseDefense = 55, \ - .baseSpeed = 85, \ - .baseSpAttack = 85, \ - .baseSpDefense = 95, \ - .types = MON_TYPES(TYPE_FLYING, TYPE_WATER), \ - .catchRate = 45, \ - .expYield = 166, \ - .evYield_SpDefense = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FLYING),\ - .abilities = { ABILITY_GULP_MISSILE, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Cramorant"), \ - .cryId = CRY_CRAMORANT, \ - .natDexNum = NATIONAL_DEX_CRAMORANT, \ - .categoryName = _("Gulp"), \ - .height = 8, \ - .weight = 180, \ - .pokemonScale = 366, \ - .pokemonOffset = 7, \ - .trainerScale = 257, \ - .trainerOffset = 0, \ - FOOTPRINT(Cramorant) \ - LEARNSETS(Cramorant), \ - .formSpeciesIdTable = sCramorantFormSpeciesIdTable, \ - .formChangeTable = sCramorantFormChangeTable - [SPECIES_CRAMORANT] = { - CRAMORANT_MISC_INFO, + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 85, + .baseSpDefense = 95, + .types = MON_TYPES(TYPE_FLYING, TYPE_WATER), + .catchRate = 45, + .expYield = 166, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FLYING), + .abilities = { ABILITY_GULP_MISSILE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Cramorant"), + .cryId = CRY_CRAMORANT, + .natDexNum = NATIONAL_DEX_CRAMORANT, + .categoryName = _("Gulp"), + .height = 8, + .weight = 180, .description = COMPOUND_STRING( "It's so strong that it can knock out some\n" "opponents in a single hit, but it also may\n" "forget what it's battling midfight."), - FRONT_PIC(Cramorant, 64, 64), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Cramorant, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Cramorant, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Cramorant, 56, 64), + .backPic = gMonBackPic_Cramorant, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Cramorant), - ICON(Cramorant, 0), + .palette = gMonPalette_Cramorant, + .shinyPalette = gMonShinyPalette_Cramorant, + .iconSprite = gMonIcon_Cramorant, + .iconPalIndex = 0, + FOOTPRINT(Cramorant) + .levelUpLearnset = sCramorantLevelUpLearnset, + .teachableLearnset = sCramorantTeachableLearnset, + .formSpeciesIdTable = sCramorantFormSpeciesIdTable, + .formChangeTable = sCramorantFormChangeTable, }, [SPECIES_CRAMORANT_GULPING] = { - CRAMORANT_MISC_INFO, + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 85, + .baseSpDefense = 95, + .types = MON_TYPES(TYPE_FLYING, TYPE_WATER), + .catchRate = 45, + .expYield = 166, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FLYING), + .abilities = { ABILITY_GULP_MISSILE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Cramorant"), + .cryId = CRY_CRAMORANT, + .natDexNum = NATIONAL_DEX_CRAMORANT, + .categoryName = _("Gulp"), + .height = 8, + .weight = 180, .description = COMPOUND_STRING( "Cramorant's gluttony led it to try\n" "to swallow an Arrokuda whole, which\n" "in turn led to Cramorant getting an\n" "Arrokuda stuck in its throat."), - FRONT_PIC(CramorantGulping, 64, 64), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + .frontPic = gMonFrontPic_CramorantGulping, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Cramorant, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(CramorantGulping, 64, 64), + .backPic = gMonBackPic_CramorantGulping, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(CramorantGulping), - ICON(CramorantGulping, 0), + .palette = gMonPalette_CramorantGulping, + .shinyPalette = gMonShinyPalette_CramorantGulping, + .iconSprite = gMonIcon_CramorantGulping, + .iconPalIndex = 0, + FOOTPRINT(Cramorant) + .levelUpLearnset = sCramorantLevelUpLearnset, + .teachableLearnset = sCramorantTeachableLearnset, + .formSpeciesIdTable = sCramorantFormSpeciesIdTable, + .formChangeTable = sCramorantFormChangeTable, }, [SPECIES_CRAMORANT_GORGING] = { - CRAMORANT_MISC_INFO, + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 85, + .baseSpDefense = 95, + .types = MON_TYPES(TYPE_FLYING, TYPE_WATER), + .catchRate = 45, + .expYield = 166, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FLYING), + .abilities = { ABILITY_GULP_MISSILE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Cramorant"), + .cryId = CRY_CRAMORANT, + .natDexNum = NATIONAL_DEX_CRAMORANT, + .categoryName = _("Gulp"), + .height = 8, + .weight = 180, .description = COMPOUND_STRING( "This Cramorant has accidentally\n" "gotten a Pikachu lodged in its gullet.\n" "Cramorant is choking a little, but it\n" "isn't really bothered."), - FRONT_PIC(CramorantGorging, 64, 64), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + .frontPic = gMonFrontPic_CramorantGorging, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Cramorant, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(CramorantGorging, 64, 64), + .backPic = gMonBackPic_CramorantGorging, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(CramorantGorging), - ICON(CramorantGorging, 0), + .palette = gMonPalette_CramorantGorging, + .shinyPalette = gMonShinyPalette_CramorantGorging, + .iconSprite = gMonIcon_CramorantGorging, + .iconPalIndex = 0, + FOOTPRINT(Cramorant) + .levelUpLearnset = sCramorantLevelUpLearnset, + .teachableLearnset = sCramorantTeachableLearnset, + .formSpeciesIdTable = sCramorantFormSpeciesIdTable, + .formChangeTable = sCramorantFormChangeTable, }, #endif //P_FAMILY_CRAMORANT @@ -2247,17 +2765,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Arrokuda, 56, 32), + .frontPic = gMonFrontPic_Arrokuda, + .frontPicSize = MON_COORDS_SIZE(56, 32), .frontPicYOffset = 17, .frontAnimFrames = sAnims_Arrokuda, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Arrokuda, 48, 40), + .backPic = gMonBackPic_Arrokuda, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 15, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Arrokuda), - ICON(Arrokuda, 2), + .palette = gMonPalette_Arrokuda, + .shinyPalette = gMonShinyPalette_Arrokuda, + .iconSprite = gMonIcon_Arrokuda, + .iconPalIndex = 2, FOOTPRINT(Arrokuda) - LEARNSETS(Arrokuda), + .levelUpLearnset = sArrokudaLevelUpLearnset, + .teachableLearnset = sArrokudaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_BARRASKEWDA}), }, @@ -2295,17 +2818,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Barraskewda, 56, 48), + .frontPic = gMonFrontPic_Barraskewda, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Barraskewda, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Barraskewda, 64, 48), + .backPic = gMonBackPic_Barraskewda, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Barraskewda), - ICON(Barraskewda, 2), + .palette = gMonPalette_Barraskewda, + .shinyPalette = gMonShinyPalette_Barraskewda, + .iconSprite = gMonIcon_Barraskewda, + .iconPalIndex = 2, FOOTPRINT(Barraskewda) - LEARNSETS(Barraskewda), + .levelUpLearnset = sBarraskewdaLevelUpLearnset, + .teachableLearnset = sBarraskewdaTeachableLearnset, }, #endif //P_FAMILY_ARROKUDA @@ -2344,49 +2872,49 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Toxel, 40, 48), + .frontPic = gMonFrontPic_Toxel, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Toxel, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Toxel, 48, 56), + .backPic = gMonBackPic_Toxel, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Toxel), - ICON(Toxel, 2), + .palette = gMonPalette_Toxel, + .shinyPalette = gMonShinyPalette_Toxel, + .iconSprite = gMonIcon_Toxel, + .iconPalIndex = 2, FOOTPRINT(Toxel) - LEARNSETS(Toxel), + .levelUpLearnset = sToxelLevelUpLearnset, + .teachableLearnset = sToxelTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_NATURE_AMPED, 30, SPECIES_TOXTRICITY_AMPED}, {EVO_LEVEL_NATURE_LOW_KEY, 30, SPECIES_TOXTRICITY_LOW_KEY}), }, -#define TOXTRICITY_MISC_INFO \ - .baseHP = 75, \ - .baseAttack = 98, \ - .baseDefense = 70, \ - .baseSpeed = 75, \ - .baseSpAttack = 114, \ - .baseSpDefense = 70, \ - .types = MON_TYPES(TYPE_ELECTRIC, TYPE_POISON), \ - .catchRate = 45, \ - .expYield = 176, \ - .evYield_SpAttack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), \ - .bodyColor = BODY_COLOR_PURPLE, \ - .speciesName = _("Toxtricity"), \ - .natDexNum = NATIONAL_DEX_TOXTRICITY, \ - .categoryName = _("Punk"), \ - .formSpeciesIdTable = sToxtricityFormSpeciesIdTable, \ - .formChangeTable = sToxtricityAmpedFormChangeTable - [SPECIES_TOXTRICITY_AMPED] = { - TOXTRICITY_MISC_INFO, + .baseHP = 75, + .baseAttack = 98, + .baseDefense = 70, + .baseSpeed = 75, + .baseSpAttack = 114, + .baseSpDefense = 70, + .types = MON_TYPES(TYPE_ELECTRIC, TYPE_POISON), + .catchRate = 45, + .expYield = 176, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), .abilities = { ABILITY_PUNK_ROCK, ABILITY_PLUS, ABILITY_TECHNICIAN }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Toxtricity"), .cryId = CRY_TOXTRICITY_AMPED, + .natDexNum = NATIONAL_DEX_TOXTRICITY, + .categoryName = _("Punk"), .height = 16, .weight = 400, .description = COMPOUND_STRING( @@ -2398,26 +2926,50 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(ToxtricityAmped, 48, 64), + .frontPic = gMonFrontPic_ToxtricityAmped, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Toxtricity, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ToxtricityAmped, 56, 64), + .backPic = gMonBackPic_ToxtricityAmped, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ToxtricityAmped), - ICON(ToxtricityAmped, 2), + .palette = gMonPalette_ToxtricityAmped, + .shinyPalette = gMonShinyPalette_ToxtricityAmped, + .iconSprite = gMonIcon_ToxtricityAmped, + .iconPalIndex = 2, FOOTPRINT(Toxtricity) - LEARNSETS(ToxtricityAmped), - + .levelUpLearnset = sToxtricityAmpedLevelUpLearnset, + .teachableLearnset = sToxtricityAmpedTeachableLearnset, + .formSpeciesIdTable = sToxtricityFormSpeciesIdTable, + .formChangeTable = sToxtricityAmpedFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = { - TOXTRICITY_MISC_INFO, + .baseHP = 75, + .baseAttack = 98, + .baseDefense = 70, + .baseSpeed = 75, + .baseSpAttack = 114, + .baseSpDefense = 70, + .types = MON_TYPES(TYPE_ELECTRIC, TYPE_POISON), + .catchRate = 45, + .expYield = 176, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), .abilities = { ABILITY_PUNK_ROCK, ABILITY_PLUS, ABILITY_TECHNICIAN }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Toxtricity"), .cryId = CRY_TOXTRICITY_AMPED, + .natDexNum = NATIONAL_DEX_TOXTRICITY, + .categoryName = _("Punk"), .height = 240, .weight = 0, .description = gToxtricityGigantamaxPokedexText, @@ -2425,26 +2977,51 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(ToxtricityGigantamax, 64, 64), + .frontPic = gMonFrontPic_ToxtricityGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_ToxtricityGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ToxtricityGigantamax, 64, 64), + .backPic = gMonBackPic_ToxtricityGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ToxtricityGigantamax), - ICON(ToxtricityGigantamax, 0), + .palette = gMonPalette_ToxtricityGigantamax, + .shinyPalette = gMonShinyPalette_ToxtricityGigantamax, + .iconSprite = gMonIcon_ToxtricityGigantamax, + .iconPalIndex = 0, FOOTPRINT(Toxtricity) - LEARNSETS(ToxtricityAmped), .isGigantamax = TRUE, + .levelUpLearnset = sToxtricityAmpedLevelUpLearnset, + .teachableLearnset = sToxtricityAmpedTeachableLearnset, + .formSpeciesIdTable = sToxtricityFormSpeciesIdTable, + .formChangeTable = sToxtricityAmpedFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS [SPECIES_TOXTRICITY_LOW_KEY] = { - TOXTRICITY_MISC_INFO, + .baseHP = 75, + .baseAttack = 98, + .baseDefense = 70, + .baseSpeed = 75, + .baseSpAttack = 114, + .baseSpDefense = 70, + .types = MON_TYPES(TYPE_ELECTRIC, TYPE_POISON), + .catchRate = 45, + .expYield = 176, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), .abilities = { ABILITY_PUNK_ROCK, ABILITY_MINUS, ABILITY_TECHNICIAN }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Toxtricity"), .cryId = CRY_TOXTRICITY_LOW_KEY, + .natDexNum = NATIONAL_DEX_TOXTRICITY, + .categoryName = _("Punk"), .height = 16, .weight = 400, .description = COMPOUND_STRING( @@ -2455,25 +3032,50 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(ToxtricityLowKey, 48, 64), + .frontPic = gMonFrontPic_ToxtricityLowKey, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Toxtricity, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ToxtricityLowKey, 48, 64), + .backPic = gMonBackPic_ToxtricityLowKey, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ToxtricityLowKey), - ICON(ToxtricityLowKey, 2), + .palette = gMonPalette_ToxtricityLowKey, + .shinyPalette = gMonShinyPalette_ToxtricityLowKey, + .iconSprite = gMonIcon_ToxtricityLowKey, + .iconPalIndex = 2, FOOTPRINT(Toxtricity) - LEARNSETS(ToxtricityLowKey), + .levelUpLearnset = sToxtricityLowKeyLevelUpLearnset, + .teachableLearnset = sToxtricityLowKeyTeachableLearnset, + .formSpeciesIdTable = sToxtricityFormSpeciesIdTable, + .formChangeTable = sToxtricityAmpedFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = { - TOXTRICITY_MISC_INFO, + .baseHP = 75, + .baseAttack = 98, + .baseDefense = 70, + .baseSpeed = 75, + .baseSpAttack = 114, + .baseSpDefense = 70, + .types = MON_TYPES(TYPE_ELECTRIC, TYPE_POISON), + .catchRate = 45, + .expYield = 176, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), .abilities = { ABILITY_PUNK_ROCK, ABILITY_MINUS, ABILITY_TECHNICIAN }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Toxtricity"), .cryId = CRY_TOXTRICITY_LOW_KEY, + .natDexNum = NATIONAL_DEX_TOXTRICITY, + .categoryName = _("Punk"), .height = 240, .weight = 0, .description = gToxtricityGigantamaxPokedexText, @@ -2481,18 +3083,25 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(ToxtricityGigantamax, 64, 64), + .frontPic = gMonFrontPic_ToxtricityGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_ToxtricityGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ToxtricityGigantamax, 64, 64), + .backPic = gMonBackPic_ToxtricityGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ToxtricityGigantamax), - ICON(ToxtricityGigantamax, 0), + .palette = gMonPalette_ToxtricityGigantamax, + .shinyPalette = gMonShinyPalette_ToxtricityGigantamax, + .iconSprite = gMonIcon_ToxtricityGigantamax, + .iconPalIndex = 0, FOOTPRINT(Toxtricity) - LEARNSETS(ToxtricityLowKey), .isGigantamax = TRUE, + .levelUpLearnset = sToxtricityLowKeyLevelUpLearnset, + .teachableLearnset = sToxtricityLowKeyTeachableLearnset, + .formSpeciesIdTable = sToxtricityFormSpeciesIdTable, + .formChangeTable = sToxtricityAmpedFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_TOXEL @@ -2531,50 +3140,48 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Sizzlipede, 48, 32), + .frontPic = gMonFrontPic_Sizzlipede, + .frontPicSize = MON_COORDS_SIZE(48, 32), .frontPicYOffset = 17, .frontAnimFrames = sAnims_Sizzlipede, .frontAnimId = ANIM_H_VIBRATE, - BACK_PIC(Sizzlipede, 40, 32), + .backPic = gMonBackPic_Sizzlipede, + .backPicSize = MON_COORDS_SIZE(40, 32), .backPicYOffset = 16, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Sizzlipede), - ICON(Sizzlipede, 0), + .palette = gMonPalette_Sizzlipede, + .shinyPalette = gMonShinyPalette_Sizzlipede, + .iconSprite = gMonIcon_Sizzlipede, + .iconPalIndex = 0, FOOTPRINT(Sizzlipede) - LEARNSETS(Sizzlipede), + .levelUpLearnset = sSizzlipedeLevelUpLearnset, + .teachableLearnset = sSizzlipedeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_CENTISKORCH}), }, -#define CENTISKORCH_MISC_INFO \ - .baseHP = 100, \ - .baseAttack = 115, \ - .baseDefense = 65, \ - .baseSpeed = 65, \ - .baseSpAttack = 90, \ - .baseSpDefense = 90, \ - .types = MON_TYPES(TYPE_FIRE, TYPE_BUG), \ - .catchRate = 75, \ - .expYield = 184, \ - .evYield_Attack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), \ - .abilities = { ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY }, \ - .bodyColor = BODY_COLOR_RED, \ - .speciesName = _("Centiskorc"), \ - .cryId = CRY_CENTISKORCH, \ - .natDexNum = NATIONAL_DEX_CENTISKORCH, \ - .categoryName = _("Radiator"), \ - FOOTPRINT(Centiskorch) \ - LEARNSETS(Centiskorch), \ - .formSpeciesIdTable = sCentiskorchFormSpeciesIdTable, \ - .formChangeTable = sCentiskorchFormChangeTable - [SPECIES_CENTISKORCH] = { - CENTISKORCH_MISC_INFO, + .baseHP = 100, + .baseAttack = 115, + .baseDefense = 65, + .baseSpeed = 65, + .baseSpAttack = 90, + .baseSpDefense = 90, + .types = MON_TYPES(TYPE_FIRE, TYPE_BUG), + .catchRate = 75, + .expYield = 184, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + .abilities = { ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Centiskorc"), + .cryId = CRY_CENTISKORCH, + .natDexNum = NATIONAL_DEX_CENTISKORCH, + .categoryName = _("Radiator"), .height = 30, .weight = 1200, .description = COMPOUND_STRING( @@ -2586,21 +3193,50 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Centiskorch, 64, 56), + .frontPic = gMonFrontPic_Centiskorch, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Centiskorch, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Centiskorch, 56, 64), + .backPic = gMonBackPic_Centiskorch, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Centiskorch), - ICON(Centiskorch, 0), + .palette = gMonPalette_Centiskorch, + .shinyPalette = gMonShinyPalette_Centiskorch, + .iconSprite = gMonIcon_Centiskorch, + .iconPalIndex = 0, + FOOTPRINT(Centiskorch) + .levelUpLearnset = sCentiskorchLevelUpLearnset, + .teachableLearnset = sCentiskorchTeachableLearnset, + .formSpeciesIdTable = sCentiskorchFormSpeciesIdTable, + .formChangeTable = sCentiskorchFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_CENTISKORCH_GIGANTAMAX] = { - CENTISKORCH_MISC_INFO, + .baseHP = 100, + .baseAttack = 115, + .baseDefense = 65, + .baseSpeed = 65, + .baseSpAttack = 90, + .baseSpDefense = 90, + .types = MON_TYPES(TYPE_FIRE, TYPE_BUG), + .catchRate = 75, + .expYield = 184, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + .abilities = { ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Centiskorc"), + .cryId = CRY_CENTISKORCH, + .natDexNum = NATIONAL_DEX_CENTISKORCH, + .categoryName = _("Radiator"), .height = 750, .weight = 0, .description = COMPOUND_STRING( @@ -2612,16 +3248,25 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(CentiskorchGigantamax, 64, 64), + .frontPic = gMonFrontPic_CentiskorchGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_CentiskorchGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(CentiskorchGigantamax, 64, 64), + .backPic = gMonBackPic_CentiskorchGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(CentiskorchGigantamax), - ICON(CentiskorchGigantamax, 0), + .palette = gMonPalette_CentiskorchGigantamax, + .shinyPalette = gMonShinyPalette_CentiskorchGigantamax, + .iconSprite = gMonIcon_CentiskorchGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Centiskorch) .isGigantamax = TRUE, + .levelUpLearnset = sCentiskorchLevelUpLearnset, + .teachableLearnset = sCentiskorchTeachableLearnset, + .formSpeciesIdTable = sCentiskorchFormSpeciesIdTable, + .formChangeTable = sCentiskorchFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_SIZZLIPEDE @@ -2661,17 +3306,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Clobbopus, 48, 40), + .frontPic = gMonFrontPic_Clobbopus, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Clobbopus, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Clobbopus, 64, 40), + .backPic = gMonBackPic_Clobbopus, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Clobbopus), - ICON(Clobbopus, 0), + .palette = gMonPalette_Clobbopus, + .shinyPalette = gMonShinyPalette_Clobbopus, + .iconSprite = gMonIcon_Clobbopus, + .iconPalIndex = 0, FOOTPRINT(Clobbopus) - LEARNSETS(Clobbopus), + .levelUpLearnset = sClobbopusLevelUpLearnset, + .teachableLearnset = sClobbopusTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_TAUNT, SPECIES_GRAPPLOCT}), }, @@ -2708,145 +3358,240 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 1, .trainerScale = 296, .trainerOffset = 1, - FRONT_PIC(Grapploct, 48, 56), + .frontPic = gMonFrontPic_Grapploct, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Grapploct, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Grapploct, 56, 56), + .backPic = gMonBackPic_Grapploct, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Grapploct), - ICON(Grapploct, 2), + .palette = gMonPalette_Grapploct, + .shinyPalette = gMonShinyPalette_Grapploct, + .iconSprite = gMonIcon_Grapploct, + .iconPalIndex = 2, FOOTPRINT(Grapploct) - LEARNSETS(Grapploct), + .levelUpLearnset = sGrapploctLevelUpLearnset, + .teachableLearnset = sGrapploctTeachableLearnset, }, #endif //P_FAMILY_CLOBBOPUS #if P_FAMILY_SINISTEA -#define SINISTEA_MISC_INFO \ - .baseHP = 40, \ - .baseAttack = 45, \ - .baseDefense = 45, \ - .baseSpeed = 50, \ - .baseSpAttack = 74, \ - .baseSpDefense = 54, \ - .types = MON_TYPES(TYPE_GHOST), \ - .catchRate = 120, \ - .expYield = 62, \ - .evYield_SpAttack = 1, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), \ - .abilities = { ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY }, \ - .bodyColor = BODY_COLOR_PURPLE, \ - .speciesName = _("Sinistea"), \ - .cryId = CRY_SINISTEA, \ - .natDexNum = NATIONAL_DEX_SINISTEA, \ - .categoryName = _("Black Tea"), \ - .height = 1, \ - .weight = 2, \ - .pokemonScale = 682, \ - .pokemonOffset = 24, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FRONT_PIC(Sinistea, 40, 32), \ - .frontPicYOffset = 17, \ - .frontAnimFrames = sAnims_Sinistea, \ - BACK_PIC(Sinistea, 48, 32), \ - .backPicYOffset = 16, \ - PALETTES(Sinistea), \ - ICON(Sinistea, 2), \ - FOOTPRINT(Sinistea) \ - LEARNSETS(Sinistea), \ - .formSpeciesIdTable = sSinisteaFormSpeciesIdTable - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //.backAnimId = BACK_ANIM_NONE, - [SPECIES_SINISTEA_PHONY] = { - SINISTEA_MISC_INFO, + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 45, + .baseSpeed = 50, + .baseSpAttack = 74, + .baseSpDefense = 54, + .types = MON_TYPES(TYPE_GHOST), + .catchRate = 120, + .expYield = 62, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Sinistea"), + .cryId = CRY_SINISTEA, + .natDexNum = NATIONAL_DEX_SINISTEA, + .categoryName = _("Black Tea"), + .height = 1, + .weight = 2, .description = COMPOUND_STRING( "This Pokémon is said to have been born\n" "when a lonely spirit possessed a cold,\n" "leftover cup of tea."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Sinistea, + .frontPicSize = MON_COORDS_SIZE(40, 32), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_Sinistea, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 9, + .backPic = gMonBackPic_Sinistea, + .backPicSize = MON_COORDS_SIZE(48, 32), + .backPicYOffset = 16, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Sinistea, + .shinyPalette = gMonShinyPalette_Sinistea, + .iconSprite = gMonIcon_Sinistea, + .iconPalIndex = 2, + FOOTPRINT(Sinistea) + .levelUpLearnset = sSinisteaLevelUpLearnset, + .teachableLearnset = sSinisteaTeachableLearnset, + .formSpeciesIdTable = sSinisteaFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_CRACKED_POT, SPECIES_POLTEAGEIST_PHONY}), }, [SPECIES_SINISTEA_ANTIQUE] = { - SINISTEA_MISC_INFO, + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 45, + .baseSpeed = 50, + .baseSpAttack = 74, + .baseSpDefense = 54, + .types = MON_TYPES(TYPE_GHOST), + .catchRate = 120, + .expYield = 62, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Sinistea"), + .cryId = CRY_SINISTEA, + .natDexNum = NATIONAL_DEX_SINISTEA, + .categoryName = _("Black Tea"), + .height = 1, + .weight = 2, .description = COMPOUND_STRING( "The swirl pattern in this Pokémon's\n" "body is its weakness. If it gets\n" "stirred, the swirl loses its shape, and\n" "Sinistea gets dizzy."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Sinistea, + .frontPicSize = MON_COORDS_SIZE(40, 32), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_Sinistea, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 10, + .backPic = gMonBackPic_Sinistea, + .backPicSize = MON_COORDS_SIZE(48, 32), + .backPicYOffset = 16, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Sinistea, + .shinyPalette = gMonShinyPalette_Sinistea, + .iconSprite = gMonIcon_Sinistea, + .iconPalIndex = 2, + FOOTPRINT(Sinistea) + .levelUpLearnset = sSinisteaLevelUpLearnset, + .teachableLearnset = sSinisteaTeachableLearnset, + .formSpeciesIdTable = sSinisteaFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_CHIPPED_POT, SPECIES_POLTEAGEIST_ANTIQUE}), }, -#define POLTEAGEIST_MISC_INFO \ - .baseHP = 60, \ - .baseAttack = 65, \ - .baseDefense = 65, \ - .baseSpeed = 70, \ - .baseSpAttack = 134, \ - .baseSpDefense = 114, \ - .types = MON_TYPES(TYPE_GHOST), \ - .catchRate = 60, \ - .expYield = 178, \ - .evYield_SpAttack = 2, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), \ - .abilities = { ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY }, \ - .bodyColor = BODY_COLOR_PURPLE, \ - .speciesName = _("Polteageis"), \ - .cryId = CRY_POLTEAGEIST, \ - .natDexNum = NATIONAL_DEX_POLTEAGEIST, \ - .categoryName = _("Black Tea"), \ - .height = 2, \ - .weight = 4, \ - .pokemonScale = 682, \ - .pokemonOffset = 24, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FRONT_PIC(Polteageist, 48, 48), \ - .frontPicYOffset = 11, \ - .frontAnimFrames = sAnims_Polteageist, \ - BACK_PIC(Polteageist, 64, 40), \ - .backPicYOffset = 13, \ - PALETTES(Polteageist), \ - ICON(Polteageist, 2), \ - FOOTPRINT(Polteageist) \ - LEARNSETS(Polteageist), \ - .formSpeciesIdTable = sPolteageistFormSpeciesIdTable - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //.backAnimId = BACK_ANIM_NONE, - [SPECIES_POLTEAGEIST_PHONY] = { - POLTEAGEIST_MISC_INFO, + .baseHP = 60, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 134, + .baseSpDefense = 114, + .types = MON_TYPES(TYPE_GHOST), + .catchRate = 60, + .expYield = 178, + .evYield_SpAttack = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Polteageis"), + .cryId = CRY_POLTEAGEIST, + .natDexNum = NATIONAL_DEX_POLTEAGEIST, + .categoryName = _("Black Tea"), + .height = 2, + .weight = 4, .description = COMPOUND_STRING( "This species lives in antique teapots.\n" "Most pots are forgeries, but on rare\n" "occasions, an authentic work is found."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Polteageist, + .frontPicSize = MON_COORDS_SIZE(48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Polteageist, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 12, + .backPic = gMonBackPic_Polteageist, + .backPicSize = MON_COORDS_SIZE(64, 40), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Polteageist, + .shinyPalette = gMonShinyPalette_Polteageist, + .iconSprite = gMonIcon_Polteageist, + .iconPalIndex = 2, + FOOTPRINT(Polteageist) + .levelUpLearnset = sPolteageistLevelUpLearnset, + .teachableLearnset = sPolteageistTeachableLearnset, + .formSpeciesIdTable = sPolteageistFormSpeciesIdTable, }, [SPECIES_POLTEAGEIST_ANTIQUE] = { - POLTEAGEIST_MISC_INFO, + .baseHP = 60, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 134, + .baseSpDefense = 114, + .types = MON_TYPES(TYPE_GHOST), + .catchRate = 60, + .expYield = 178, + .evYield_SpAttack = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Polteageis"), + .cryId = CRY_POLTEAGEIST, + .natDexNum = NATIONAL_DEX_POLTEAGEIST, + .categoryName = _("Black Tea"), + .height = 2, + .weight = 4, .description = COMPOUND_STRING( "Trainers Polteageist trusts will be\n" "allowed to experience its\n" "distinctive flavor and aroma firsthand by\n" "sampling just a tiny bit of its tea."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Polteageist, + .frontPicSize = MON_COORDS_SIZE(48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Polteageist, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 11, + .backPic = gMonBackPic_Polteageist, + .backPicSize = MON_COORDS_SIZE(64, 40), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Polteageist, + .shinyPalette = gMonShinyPalette_Polteageist, + .iconSprite = gMonIcon_Polteageist, + .iconPalIndex = 2, + FOOTPRINT(Polteageist) + .levelUpLearnset = sPolteageistLevelUpLearnset, + .teachableLearnset = sPolteageistTeachableLearnset, + .formSpeciesIdTable = sPolteageistFormSpeciesIdTable, }, #endif //P_FAMILY_SINISTEA @@ -2885,17 +3630,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Hatenna, 48, 48), + .frontPic = gMonFrontPic_Hatenna, + .frontPicSize = MON_COORDS_SIZE(48, 48), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Hatenna, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Hatenna, 40, 40), + .backPic = gMonBackPic_Hatenna, + .backPicSize = MON_COORDS_SIZE(40, 40), .backPicYOffset = 12, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Hatenna), - ICON(Hatenna, 0), + .palette = gMonPalette_Hatenna, + .shinyPalette = gMonShinyPalette_Hatenna, + .iconSprite = gMonIcon_Hatenna, + .iconPalIndex = 0, FOOTPRINT(Hatenna) - LEARNSETS(Hatenna), + .levelUpLearnset = sHatennaLevelUpLearnset, + .teachableLearnset = sHatennaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_HATTREM}), }, @@ -2932,50 +3682,48 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Hattrem, 56, 48), + .frontPic = gMonFrontPic_Hattrem, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Hattrem, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Hattrem, 56, 48), + .backPic = gMonBackPic_Hattrem, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Hattrem), - ICON(Hattrem, 0), + .palette = gMonPalette_Hattrem, + .shinyPalette = gMonShinyPalette_Hattrem, + .iconSprite = gMonIcon_Hattrem, + .iconPalIndex = 0, FOOTPRINT(Hattrem) - LEARNSETS(Hattrem), + .levelUpLearnset = sHattremLevelUpLearnset, + .teachableLearnset = sHattremTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_HATTERENE}), }, -#define HATTERENE_MISC_INFO \ - .baseHP = 57, \ - .baseAttack = 90, \ - .baseDefense = 95, \ - .baseSpeed = 29, \ - .baseSpAttack = 136, \ - .baseSpDefense = 103, \ - .types = MON_TYPES(TYPE_PSYCHIC, TYPE_FAIRY), \ - .catchRate = 45, \ - .expYield = 255, \ - .evYield_SpAttack = 3, \ - .genderRatio = MON_FEMALE, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY), \ - .abilities = { ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE }, \ - .bodyColor = BODY_COLOR_PINK, \ - .speciesName = _("Hatterene"), \ - .cryId = CRY_HATTERENE, \ - .natDexNum = NATIONAL_DEX_HATTERENE, \ - .categoryName = _("Silent"), \ - FOOTPRINT(Hatterene) \ - LEARNSETS(Hatterene), \ - .formSpeciesIdTable = sHattereneFormSpeciesIdTable, \ - .formChangeTable = sHattereneFormChangeTable - [SPECIES_HATTERENE] = { - HATTERENE_MISC_INFO, + .baseHP = 57, + .baseAttack = 90, + .baseDefense = 95, + .baseSpeed = 29, + .baseSpAttack = 136, + .baseSpDefense = 103, + .types = MON_TYPES(TYPE_PSYCHIC, TYPE_FAIRY), + .catchRate = 45, + .expYield = 255, + .evYield_SpAttack = 3, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY), + .abilities = { ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Hatterene"), + .cryId = CRY_HATTERENE, + .natDexNum = NATIONAL_DEX_HATTERENE, + .categoryName = _("Silent"), .height = 21, .weight = 51, .description = COMPOUND_STRING( @@ -2986,21 +3734,50 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 0, .trainerScale = 365, .trainerOffset = 7, - FRONT_PIC(Hatterene, 48, 64), + .frontPic = gMonFrontPic_Hatterene, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Hatterene, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Hatterene, 56, 64), + .backPic = gMonBackPic_Hatterene, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Hatterene), - ICON(Hatterene, 0), + .palette = gMonPalette_Hatterene, + .shinyPalette = gMonShinyPalette_Hatterene, + .iconSprite = gMonIcon_Hatterene, + .iconPalIndex = 0, + FOOTPRINT(Hatterene) + .levelUpLearnset = sHattereneLevelUpLearnset, + .teachableLearnset = sHattereneTeachableLearnset, + .formSpeciesIdTable = sHattereneFormSpeciesIdTable, + .formChangeTable = sHattereneFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_HATTERENE_GIGANTAMAX] = { - HATTERENE_MISC_INFO, + .baseHP = 57, + .baseAttack = 90, + .baseDefense = 95, + .baseSpeed = 29, + .baseSpAttack = 136, + .baseSpDefense = 103, + .types = MON_TYPES(TYPE_PSYCHIC, TYPE_FAIRY), + .catchRate = 45, + .expYield = 255, + .evYield_SpAttack = 3, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY), + .abilities = { ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Hatterene"), + .cryId = CRY_HATTERENE, + .natDexNum = NATIONAL_DEX_HATTERENE, + .categoryName = _("Silent"), .height = 260, .weight = 0, .description = COMPOUND_STRING( @@ -3012,16 +3789,25 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 0, .trainerScale = 365, .trainerOffset = 7, - FRONT_PIC(HattereneGigantamax, 64, 64), + .frontPic = gMonFrontPic_HattereneGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_HattereneGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(HattereneGigantamax, 64, 64), + .backPic = gMonBackPic_HattereneGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(HattereneGigantamax), - ICON(HattereneGigantamax, 0), + .palette = gMonPalette_HattereneGigantamax, + .shinyPalette = gMonShinyPalette_HattereneGigantamax, + .iconSprite = gMonIcon_HattereneGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Hatterene) .isGigantamax = TRUE, + .levelUpLearnset = sHattereneLevelUpLearnset, + .teachableLearnset = sHattereneTeachableLearnset, + .formSpeciesIdTable = sHattereneFormSpeciesIdTable, + .formChangeTable = sHattereneFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_HATENNA @@ -3061,17 +3847,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Impidimp, 48, 40), + .frontPic = gMonFrontPic_Impidimp, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Impidimp, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Impidimp, 48, 40), + .backPic = gMonBackPic_Impidimp, + .backPicSize = MON_COORDS_SIZE(48, 40), .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Impidimp), - ICON(Impidimp, 0), + .palette = gMonPalette_Impidimp, + .shinyPalette = gMonShinyPalette_Impidimp, + .iconSprite = gMonIcon_Impidimp, + .iconPalIndex = 0, FOOTPRINT(Impidimp) - LEARNSETS(Impidimp), + .levelUpLearnset = sImpidimpLevelUpLearnset, + .teachableLearnset = sImpidimpTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_MORGREM}), }, @@ -3109,50 +3900,49 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 257, .trainerOffset = 0, - FRONT_PIC(Morgrem, 48, 56), + .frontPic = gMonFrontPic_Morgrem, + .frontPicSize = MON_COORDS_SIZE(48, 56), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Morgrem, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Morgrem, 56, 48), + .backPic = gMonBackPic_Morgrem, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Morgrem), - ICON(Morgrem, 0), + .palette = gMonPalette_Morgrem, + .shinyPalette = gMonShinyPalette_Morgrem, + .iconSprite = gMonIcon_Morgrem, + .iconPalIndex = 0, FOOTPRINT(Morgrem) - LEARNSETS(Morgrem), + .levelUpLearnset = sMorgremLevelUpLearnset, + .teachableLearnset = sMorgremTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_GRIMMSNARL}), }, -#define GRIMMSNARL_MISC_INFO \ - .baseHP = 95, \ - .baseAttack = 120, \ - .baseDefense = 65, \ - .baseSpeed = 60, \ - .baseSpAttack = 95, \ - .baseSpDefense = 75, \ - .types = MON_TYPES(TYPE_DARK, TYPE_FAIRY), \ - .catchRate = 45, \ - .expYield = 255, \ - .evYield_Attack = 3, \ - .genderRatio = MON_MALE, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE), \ - .abilities = { ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET }, \ - .bodyColor = BODY_COLOR_PURPLE, \ - .speciesName = _("Grimmsnarl"), \ - .cryId = CRY_GRIMMSNARL, \ - .natDexNum = NATIONAL_DEX_GRIMMSNARL, \ - .categoryName = _("Bulk Up"), \ - FOOTPRINT(Grimmsnarl) \ - LEARNSETS(Grimmsnarl), \ - .formSpeciesIdTable = sGrimmsnarlFormSpeciesIdTable, \ - .formChangeTable = sGrimmsnarlFormChangeTable [SPECIES_GRIMMSNARL] = { - GRIMMSNARL_MISC_INFO, + .baseHP = 95, + .baseAttack = 120, + .baseDefense = 65, + .baseSpeed = 60, + .baseSpAttack = 95, + .baseSpDefense = 75, + .types = MON_TYPES(TYPE_DARK, TYPE_FAIRY), + .catchRate = 45, + .expYield = 255, + .evYield_Attack = 3, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE), + .abilities = { ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Grimmsnarl"), + .cryId = CRY_GRIMMSNARL, + .natDexNum = NATIONAL_DEX_GRIMMSNARL, + .categoryName = _("Bulk Up"), .height = 15, .weight = 610, .description = COMPOUND_STRING( @@ -3163,21 +3953,50 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(Grimmsnarl, 64, 64), + .frontPic = gMonFrontPic_Grimmsnarl, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Grimmsnarl, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Grimmsnarl, 64, 48), + .backPic = gMonBackPic_Grimmsnarl, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 10, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Grimmsnarl), - ICON(Grimmsnarl, 0), + .palette = gMonPalette_Grimmsnarl, + .shinyPalette = gMonShinyPalette_Grimmsnarl, + .iconSprite = gMonIcon_Grimmsnarl, + .iconPalIndex = 0, + FOOTPRINT(Grimmsnarl) + .levelUpLearnset = sGrimmsnarlLevelUpLearnset, + .teachableLearnset = sGrimmsnarlTeachableLearnset, + .formSpeciesIdTable = sGrimmsnarlFormSpeciesIdTable, + .formChangeTable = sGrimmsnarlFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_GRIMMSNARL_GIGANTAMAX] = { - GRIMMSNARL_MISC_INFO, + .baseHP = 95, + .baseAttack = 120, + .baseDefense = 65, + .baseSpeed = 60, + .baseSpAttack = 95, + .baseSpDefense = 75, + .types = MON_TYPES(TYPE_DARK, TYPE_FAIRY), + .catchRate = 45, + .expYield = 255, + .evYield_Attack = 3, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE), + .abilities = { ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Grimmsnarl"), + .cryId = CRY_GRIMMSNARL, + .natDexNum = NATIONAL_DEX_GRIMMSNARL, + .categoryName = _("Bulk Up"), .height = 320, .weight = 0, .description = COMPOUND_STRING( @@ -3189,16 +4008,25 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 2, .trainerScale = 271, .trainerOffset = 0, - FRONT_PIC(GrimmsnarlGigantamax, 64, 64), + .frontPic = gMonFrontPic_GrimmsnarlGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_GrimmsnarlGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(GrimmsnarlGigantamax, 64, 64), + .backPic = gMonBackPic_GrimmsnarlGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 10, //.backAnimId = BACK_ANIM_NONE, - PALETTES(GrimmsnarlGigantamax), - ICON(GrimmsnarlGigantamax, 0), + .palette = gMonPalette_GrimmsnarlGigantamax, + .shinyPalette = gMonShinyPalette_GrimmsnarlGigantamax, + .iconSprite = gMonIcon_GrimmsnarlGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Grimmsnarl) .isGigantamax = TRUE, + .levelUpLearnset = sGrimmsnarlLevelUpLearnset, + .teachableLearnset = sGrimmsnarlTeachableLearnset, + .formSpeciesIdTable = sGrimmsnarlFormSpeciesIdTable, + .formChangeTable = sGrimmsnarlFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_IMPIDIMP @@ -3237,18 +4065,23 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 24, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Milcery, 40, 40), + .frontPic = gMonFrontPic_Milcery, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Milcery, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 10, - BACK_PIC(Milcery, 56, 48), + .backPic = gMonBackPic_Milcery, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 16, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Milcery), - ICON(Milcery, 1), + .palette = gMonPalette_Milcery, + .shinyPalette = gMonShinyPalette_Milcery, + .iconSprite = gMonIcon_Milcery, + .iconPalIndex = 1, FOOTPRINT(Milcery) - LEARNSETS(Milcery), + .levelUpLearnset = sMilceryLevelUpLearnset, + .teachableLearnset = sMilceryTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM}, {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM}, {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM}, @@ -3279,36 +4112,39 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .abilities = { ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_AROMA_VEIL }, \ .bodyColor = color -#define ALCREMIE_REGULAR_SPECIES_INFO(sweet, cream, color) \ - { \ - ALCREMIE_MISC_INFO(color), \ - .speciesName = _("Alcremie"), \ - .cryId = CRY_ALCREMIE, \ - .natDexNum = NATIONAL_DEX_ALCREMIE, \ - .categoryName = _("Cream"), \ - .height = 3, \ - .weight = 5, \ - .description = gAlcremie ##cream##PokedexText, \ - .pokemonScale = 530, \ - .pokemonOffset = 13, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FRONT_PIC(Alcremie ##sweet, 40, 56), \ - .frontPicYOffset = 7, \ - .frontAnimFrames = sAnims_Alcremie, \ - BACK_PIC(Alcremie ##sweet, 48, 56), \ - .backPicYOffset = 9, \ - .palette = gMonPalette_Alcremie ##sweet##cream, \ - .shinyPalette = gMonShinyPalette_Alcremie ##sweet, \ - ICON(AlcremieStrawberryVanillaCream, 1), \ - FOOTPRINT(Alcremie) \ - LEARNSETS(Alcremie), \ - .formSpeciesIdTable = sAlcremieFormSpeciesIdTable, \ - .formChangeTable = sAlcremieFormChangeTable, \ +#define ALCREMIE_REGULAR_SPECIES_INFO(sweet, cream, color) \ + { \ + ALCREMIE_MISC_INFO(color), \ + .speciesName = _("Alcremie"), \ + .cryId = CRY_ALCREMIE, \ + .natDexNum = NATIONAL_DEX_ALCREMIE, \ + .categoryName = _("Cream"), \ + .height = 3, \ + .weight = 5, \ + .description = gAlcremie ##cream##PokedexText, \ + .pokemonScale = 530, \ + .pokemonOffset = 13, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontPic = gMonFrontPic_Alcremie ##sweet, \ + .frontPicSize = MON_COORDS_SIZE(40, 56), \ + .frontPicYOffset = 7, \ + .frontAnimFrames = sAnims_Alcremie, \ + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ \ + .backPic = gMonBackPic_Alcremie ##sweet, \ + .backPicSize = MON_COORDS_SIZE(48, 56), \ + .backPicYOffset = 9, \ + /*.backAnimId = BACK_ANIM_NONE,*/ \ + .palette = gMonPalette_Alcremie ##sweet##cream, \ + .shinyPalette = gMonShinyPalette_Alcremie ##sweet, \ + .iconSprite = gMonIcon_AlcremieStrawberryVanillaCream, /*AlcremieStrawberry##cream##*/ \ + .iconPalIndex = 1, \ + FOOTPRINT(Alcremie) \ + .levelUpLearnset = sAlcremieLevelUpLearnset, \ + .teachableLearnset = sAlcremieTeachableLearnset, \ + .formSpeciesIdTable = sAlcremieFormSpeciesIdTable, \ + .formChangeTable = sAlcremieFormChangeTable, \ } - //ICON(AlcremieStrawberry##cream##, 1), - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //.backAnimId = BACK_ANIM_NONE, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Strawberry, VanillaCream, BODY_COLOR_WHITE), [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Strawberry, RubyCream, BODY_COLOR_PINK), @@ -3377,7 +4213,6 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = [SPECIES_ALCREMIE_GIGANTAMAX] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW), - .isGigantamax = TRUE, .speciesName = _("Alcremie"), .cryId = CRY_ALCREMIE, .natDexNum = NATIONAL_DEX_ALCREMIE, @@ -3393,17 +4228,23 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(AlcremieGigantamax, 64, 64), + .frontPic = gMonFrontPic_AlcremieGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_AlcremieGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(AlcremieGigantamax, 64, 64), + .backPic = gMonBackPic_AlcremieGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(AlcremieGigantamax), - ICON(AlcremieGigantamax, 1), + .palette = gMonPalette_AlcremieGigantamax, + .shinyPalette = gMonShinyPalette_AlcremieGigantamax, + .iconSprite = gMonIcon_AlcremieGigantamax, + .iconPalIndex = 1, FOOTPRINT(Alcremie) - LEARNSETS(Alcremie), + .isGigantamax = TRUE, + .levelUpLearnset = sAlcremieLevelUpLearnset, + .teachableLearnset = sAlcremieTeachableLearnset, .formSpeciesIdTable = sAlcremieFormSpeciesIdTable, .formChangeTable = sAlcremieFormChangeTable, }, @@ -3444,17 +4285,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Falinks, 56, 48), + .frontPic = gMonFrontPic_Falinks, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Falinks, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Falinks, 64, 40), + .backPic = gMonBackPic_Falinks, + .backPicSize = MON_COORDS_SIZE(64, 40), .backPicYOffset = 15, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Falinks), - ICON(Falinks, 0), + .palette = gMonPalette_Falinks, + .shinyPalette = gMonShinyPalette_Falinks, + .iconSprite = gMonIcon_Falinks, + .iconPalIndex = 0, FOOTPRINT(Falinks) - LEARNSETS(Falinks), + .levelUpLearnset = sFalinksLevelUpLearnset, + .teachableLearnset = sFalinksTeachableLearnset, }, #endif //P_FAMILY_FALINKS @@ -3492,17 +4338,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pincurchin, 40, 40), + .frontPic = gMonFrontPic_Pincurchin, + .frontPicSize = MON_COORDS_SIZE(40, 40), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Pincurchin, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Pincurchin, 56, 40), + .backPic = gMonBackPic_Pincurchin, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Pincurchin), - ICON(Pincurchin, 0), + .palette = gMonPalette_Pincurchin, + .shinyPalette = gMonShinyPalette_Pincurchin, + .iconSprite = gMonIcon_Pincurchin, + .iconPalIndex = 0, FOOTPRINT(Pincurchin) - LEARNSETS(Pincurchin), + .levelUpLearnset = sPincurchinLevelUpLearnset, + .teachableLearnset = sPincurchinTeachableLearnset, }, #endif //P_FAMILY_PINCURCHIN @@ -3542,17 +4393,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Snom, 40, 32), + .frontPic = gMonFrontPic_Snom, + .frontPicSize = MON_COORDS_SIZE(40, 32), .frontPicYOffset = 20, .frontAnimFrames = sAnims_Snom, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Snom, 48, 32), + .backPic = gMonBackPic_Snom, + .backPicSize = MON_COORDS_SIZE(48, 32), .backPicYOffset = 17, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Snom), - ICON(Snom, 0), + .palette = gMonPalette_Snom, + .shinyPalette = gMonShinyPalette_Snom, + .iconSprite = gMonIcon_Snom, + .iconPalIndex = 0, FOOTPRINT(Snom) - LEARNSETS(Snom), + .levelUpLearnset = sSnomLevelUpLearnset, + .teachableLearnset = sSnomTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP_NIGHT, 0, SPECIES_FROSMOTH}), }, @@ -3590,18 +4446,23 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 3, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Frosmoth, 64, 56), + .frontPic = gMonFrontPic_Frosmoth, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Frosmoth, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 7, - BACK_PIC(Frosmoth, 64, 64), + .backPic = gMonBackPic_Frosmoth, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Frosmoth), - ICON(Frosmoth, 0), + .palette = gMonPalette_Frosmoth, + .shinyPalette = gMonShinyPalette_Frosmoth, + .iconSprite = gMonIcon_Frosmoth, + .iconPalIndex = 0, FOOTPRINT(Frosmoth) - LEARNSETS(Frosmoth), + .levelUpLearnset = sFrosmothLevelUpLearnset, + .teachableLearnset = sFrosmothTeachableLearnset, }, #endif //P_FAMILY_SNOM @@ -3640,254 +4501,350 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 10, .trainerScale = 423, .trainerOffset = 8, - FRONT_PIC(Stonjourner, 48, 64), + .frontPic = gMonFrontPic_Stonjourner, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Stonjourner, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Stonjourner, 64, 56), + .backPic = gMonBackPic_Stonjourner, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Stonjourner), - ICON(Stonjourner, 2), + .palette = gMonPalette_Stonjourner, + .shinyPalette = gMonShinyPalette_Stonjourner, + .iconSprite = gMonIcon_Stonjourner, + .iconPalIndex = 2, FOOTPRINT(Stonjourner) - LEARNSETS(Stonjourner), + .levelUpLearnset = sStonjournerLevelUpLearnset, + .teachableLearnset = sStonjournerTeachableLearnset, }, #endif //P_FAMILY_STONJOURNER #if P_FAMILY_EISCUE -#define EISCUE_MISC_INFO \ - .types = MON_TYPES(TYPE_ICE), \ - .catchRate = 60, \ - .expYield = 165, \ - .evYield_Defense = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD),\ - .abilities = { ABILITY_ICE_FACE, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Eiscue"), \ - .natDexNum = NATIONAL_DEX_EISCUE, \ - .categoryName = _("Penguin"), \ - .height = 14, \ - .weight = 890, \ - .pokemonScale = 265, \ - .pokemonOffset = 2, \ - .trainerScale = 262, \ - .trainerOffset = 0, \ - FOOTPRINT(Eiscue) \ - LEARNSETS(Eiscue), \ - .formSpeciesIdTable = sEiscueFormSpeciesIdTable, \ - .formChangeTable = sEiscueFormChangeTable - [SPECIES_EISCUE_ICE_FACE] = { - EISCUE_MISC_INFO, .baseHP = 75, .baseAttack = 80, .baseDefense = 110, .baseSpeed = 50, .baseSpAttack = 65, .baseSpDefense = 90, + .types = MON_TYPES(TYPE_ICE), + .catchRate = 60, + .expYield = 165, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), + .abilities = { ABILITY_ICE_FACE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Eiscue"), .cryId = CRY_EISCUE_ICE_FACE, + .natDexNum = NATIONAL_DEX_EISCUE, + .categoryName = _("Penguin"), + .height = 14, + .weight = 890, .description = COMPOUND_STRING( "It drifted in on the flow of ocean waters\n" "from a frigid place. It keeps its head\n" "iced constantly to make sure it stays\n" "nice and cold."), - FRONT_PIC(EiscueIceFace, 40, 64), + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, + .trainerOffset = 0, + .frontPic = gMonFrontPic_EiscueIceFace, + .frontPicSize = MON_COORDS_SIZE(40, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Eiscue, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(EiscueIceFace, 48, 64), + .backPic = gMonBackPic_EiscueIceFace, + .backPicSize = MON_COORDS_SIZE(48, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(EiscueIceFace), - ICON(EiscueIceFace, 0), + .palette = gMonPalette_EiscueIceFace, + .shinyPalette = gMonShinyPalette_EiscueIceFace, + .iconSprite = gMonIcon_EiscueIceFace, + .iconPalIndex = 0, + FOOTPRINT(Eiscue) + .levelUpLearnset = sEiscueLevelUpLearnset, + .teachableLearnset = sEiscueTeachableLearnset, + .formSpeciesIdTable = sEiscueFormSpeciesIdTable, + .formChangeTable = sEiscueFormChangeTable, }, [SPECIES_EISCUE_NOICE_FACE] = { - EISCUE_MISC_INFO, .baseHP = 75, .baseAttack = 80, .baseDefense = 70, .baseSpeed = 130, .baseSpAttack = 65, .baseSpDefense = 50, + .types = MON_TYPES(TYPE_ICE), + .catchRate = 60, + .expYield = 165, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), + .abilities = { ABILITY_ICE_FACE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Eiscue"), .cryId = CRY_EISCUE_NOICE_FACE, + .natDexNum = NATIONAL_DEX_EISCUE, + .categoryName = _("Penguin"), + .height = 14, + .weight = 890, .description = COMPOUND_STRING( "The hair on its head connects to\n" "the surface of its brain. When this\n" "Pokémon has something on its mind,\n" "its hair chills the air around it."), - FRONT_PIC(EiscueNoiceFace, 40, 64), + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, + .trainerOffset = 0, + .frontPic = gMonFrontPic_EiscueNoiceFace, + .frontPicSize = MON_COORDS_SIZE(40, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Eiscue, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(EiscueNoiceFace, 40, 64), + .backPic = gMonBackPic_EiscueNoiceFace, + .backPicSize = MON_COORDS_SIZE(40, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(EiscueNoiceFace), - ICON(EiscueNoiceFace, 0), + .palette = gMonPalette_EiscueNoiceFace, + .shinyPalette = gMonShinyPalette_EiscueNoiceFace, + .iconSprite = gMonIcon_EiscueNoiceFace, + .iconPalIndex = 0, + FOOTPRINT(Eiscue) + .levelUpLearnset = sEiscueLevelUpLearnset, + .teachableLearnset = sEiscueTeachableLearnset, + .formSpeciesIdTable = sEiscueFormSpeciesIdTable, + .formChangeTable = sEiscueFormChangeTable, }, #endif //P_FAMILY_EISCUE #if P_FAMILY_INDEEDEE -#define INDEEDEE_MISC_INFO \ - .types = MON_TYPES(TYPE_PSYCHIC, TYPE_NORMAL), \ - .catchRate = 30, \ - .expYield = 166, \ - .eggCycles = 40, \ - .friendship = 140, \ - .growthRate = GROWTH_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY), \ - .bodyColor = BODY_COLOR_PURPLE, \ - .speciesName = _("Indeedee"), \ - .natDexNum = NATIONAL_DEX_INDEEDEE, \ - .categoryName = _("Emotion"), \ - .height = 9, \ - .weight = 280, \ - .pokemonScale = 338, \ - .pokemonOffset = 8, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Indeedee) \ - .formSpeciesIdTable = sIndeedeeFormSpeciesIdTable - [SPECIES_INDEEDEE_MALE] = { - INDEEDEE_MISC_INFO, .baseHP = 60, .baseAttack = 65, .baseDefense = 55, .baseSpeed = 95, .baseSpAttack = 105, .baseSpDefense = 95, + .types = MON_TYPES(TYPE_PSYCHIC, TYPE_NORMAL), + .catchRate = 30, + .expYield = 166, .evYield_SpAttack = 2, .genderRatio = MON_MALE, + .eggCycles = 40, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY), .abilities = { ABILITY_INNER_FOCUS, ABILITY_SYNCHRONIZE, ABILITY_PSYCHIC_SURGE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Indeedee"), .cryId = CRY_INDEEDEE_MALE, + .natDexNum = NATIONAL_DEX_INDEEDEE, + .categoryName = _("Emotion"), + .height = 9, + .weight = 280, .description = COMPOUND_STRING( "It uses the horns on its head to sense the\n" "emotions of others. Males will act as\n" "valets for those they serve, looking\n" "after their every need."), - FRONT_PIC(IndeedeeMale, 40, 56), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_IndeedeeMale, + .frontPicSize = MON_COORDS_SIZE(40, 56), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Indeedee, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(IndeedeeMale, 56, 56), + .backPic = gMonBackPic_IndeedeeMale, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(IndeedeeMale), - ICON(IndeedeeMale, 2), - LEARNSETS(IndeedeeMale), + .palette = gMonPalette_IndeedeeMale, + .shinyPalette = gMonShinyPalette_IndeedeeMale, + .iconSprite = gMonIcon_IndeedeeMale, + .iconPalIndex = 2, + FOOTPRINT(Indeedee) + .levelUpLearnset = sIndeedeeMaleLevelUpLearnset, + .teachableLearnset = sIndeedeeMaleTeachableLearnset, + .formSpeciesIdTable = sIndeedeeFormSpeciesIdTable, }, [SPECIES_INDEEDEE_FEMALE] = { - INDEEDEE_MISC_INFO, .baseHP = 70, .baseAttack = 55, .baseDefense = 65, .baseSpeed = 85, .baseSpAttack = 95, .baseSpDefense = 105, + .types = MON_TYPES(TYPE_PSYCHIC, TYPE_NORMAL), + .catchRate = 30, + .expYield = 166, .evYield_SpDefense = 2, .genderRatio = MON_FEMALE, + .eggCycles = 40, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY), .abilities = { ABILITY_OWN_TEMPO, ABILITY_SYNCHRONIZE, ABILITY_PSYCHIC_SURGE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Indeedee"), .cryId = CRY_INDEEDEE_FEMALE, + .natDexNum = NATIONAL_DEX_INDEEDEE, + .categoryName = _("Emotion"), + .height = 9, + .weight = 280, .description = COMPOUND_STRING( "They diligently serve people and\n" "Pokémon so they can gather feelings\n" "of gratitude. The females are\n" "particularly good at babysitting."), - FRONT_PIC(IndeedeeFemale, 40, 48), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_IndeedeeFemale, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Indeedee, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(IndeedeeFemale, 64, 56), + .backPic = gMonBackPic_IndeedeeFemale, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(IndeedeeFemale), - ICON(IndeedeeFemale, 2), - LEARNSETS(IndeedeeFemale), + .palette = gMonPalette_IndeedeeFemale, + .shinyPalette = gMonShinyPalette_IndeedeeFemale, + .iconSprite = gMonIcon_IndeedeeFemale, + .iconPalIndex = 2, + FOOTPRINT(Indeedee) + .levelUpLearnset = sIndeedeeFemaleLevelUpLearnset, + .teachableLearnset = sIndeedeeFemaleTeachableLearnset, + .formSpeciesIdTable = sIndeedeeFormSpeciesIdTable, }, #endif //P_FAMILY_INDEEDEE #if P_FAMILY_MORPEKO -#define MORPEKO_MISC_INFO \ - .baseHP = 58, \ - .baseAttack = 95, \ - .baseDefense = 58, \ - .baseSpeed = 97, \ - .baseSpAttack = 70, \ - .baseSpDefense = 58, \ - .types = MON_TYPES(TYPE_ELECTRIC, TYPE_DARK), \ - .catchRate = 180, \ - .expYield = 153, \ - .evYield_Speed = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 10, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY),\ - .abilities = { ABILITY_HUNGER_SWITCH, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_YELLOW, \ - .speciesName = _("Morpeko"), \ - .natDexNum = NATIONAL_DEX_MORPEKO, \ - .categoryName = _("Two-Sided"), \ - .height = 3, \ - .weight = 30, \ - .pokemonScale = 530, \ - .pokemonOffset = 13, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Morpeko) \ - LEARNSETS(Morpeko), \ - .formSpeciesIdTable = sMorpekoFormSpeciesIdTable, \ - .formChangeTable = sMorpekoFormChangeTable - [SPECIES_MORPEKO_FULL_BELLY] = { - MORPEKO_MISC_INFO, + .baseHP = 58, + .baseAttack = 95, + .baseDefense = 58, + .baseSpeed = 97, + .baseSpAttack = 70, + .baseSpDefense = 58, + .types = MON_TYPES(TYPE_ELECTRIC, TYPE_DARK), + .catchRate = 180, + .expYield = 153, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), + .abilities = { ABILITY_HUNGER_SWITCH, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Morpeko"), .cryId = CRY_MORPEKO_FULL_BELLY, + .natDexNum = NATIONAL_DEX_MORPEKO, + .categoryName = _("Two-Sided"), + .height = 3, + .weight = 30, .description = COMPOUND_STRING( "As it eats the seeds stored up in its\n" "pocket-like pouches, this Pokémon is not\n" "just satisfying its constant hunger. It's\n" "also generating electricity."), - FRONT_PIC(MorpekoFullBelly, 32, 40), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_MorpekoFullBelly, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Morpeko, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(MorpekoFullBelly, 48, 56), + .backPic = gMonBackPic_MorpekoFullBelly, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(MorpekoFullBelly), - ICON(MorpekoFullBelly, 2), + .palette = gMonPalette_MorpekoFullBelly, + .shinyPalette = gMonShinyPalette_MorpekoFullBelly, + .iconSprite = gMonIcon_MorpekoFullBelly, + .iconPalIndex = 2, + FOOTPRINT(Morpeko) + .levelUpLearnset = sMorpekoLevelUpLearnset, + .teachableLearnset = sMorpekoTeachableLearnset, + .formSpeciesIdTable = sMorpekoFormSpeciesIdTable, + .formChangeTable = sMorpekoFormChangeTable, }, [SPECIES_MORPEKO_HANGRY] = { - MORPEKO_MISC_INFO, + .baseHP = 58, + .baseAttack = 95, + .baseDefense = 58, + .baseSpeed = 97, + .baseSpAttack = 70, + .baseSpDefense = 58, + .types = MON_TYPES(TYPE_ELECTRIC, TYPE_DARK), + .catchRate = 180, + .expYield = 153, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), + .abilities = { ABILITY_HUNGER_SWITCH, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Morpeko"), .cryId = CRY_MORPEKO_HANGRY, + .natDexNum = NATIONAL_DEX_MORPEKO, + .categoryName = _("Two-Sided"), + .height = 3, + .weight = 30, .description = COMPOUND_STRING( "Intense hunger drives it to\n" "extremes of violence, and the electricity\n" "in its cheek sacs has converted into\n" "a Dark-type energy."), - FRONT_PIC(MorpekoHangry, 32, 40), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_MorpekoHangry, + .frontPicSize = MON_COORDS_SIZE(32, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Morpeko, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(MorpekoHangry, 48, 56), + .backPic = gMonBackPic_MorpekoHangry, + .backPicSize = MON_COORDS_SIZE(48, 56), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(MorpekoHangry), - ICON(MorpekoHangry, 2), + .palette = gMonPalette_MorpekoHangry, + .shinyPalette = gMonShinyPalette_MorpekoHangry, + .iconSprite = gMonIcon_MorpekoHangry, + .iconPalIndex = 2, + FOOTPRINT(Morpeko) + .levelUpLearnset = sMorpekoLevelUpLearnset, + .teachableLearnset = sMorpekoTeachableLearnset, + .formSpeciesIdTable = sMorpekoFormSpeciesIdTable, + .formChangeTable = sMorpekoFormChangeTable, }, #endif //P_FAMILY_MORPEKO @@ -3927,51 +4884,49 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cufant, 56, 48), + .frontPic = gMonFrontPic_Cufant, + .frontPicSize = MON_COORDS_SIZE(56, 48), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Cufant, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Cufant, 64, 48), + .backPic = gMonBackPic_Cufant, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Cufant), - ICON(Cufant, 0), + .palette = gMonPalette_Cufant, + .shinyPalette = gMonShinyPalette_Cufant, + .iconSprite = gMonIcon_Cufant, + .iconPalIndex = 0, FOOTPRINT(Cufant) - LEARNSETS(Cufant), + .levelUpLearnset = sCufantLevelUpLearnset, + .teachableLearnset = sCufantTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_COPPERAJAH}), }, -#define COPPERAJAH_MISC_INFO \ - .baseHP = 122, \ - .baseAttack = 130, \ - .baseDefense = 69, \ - .baseSpeed = 30, \ - .baseSpAttack = 80, \ - .baseSpDefense = 69, \ - .types = MON_TYPES(TYPE_STEEL), \ - .catchRate = 90, \ - .expYield = 175, \ - .evYield_Attack = 2, \ - .itemRare = ITEM_LAGGING_TAIL, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_MINERAL), \ - .abilities = { ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL }, \ - .bodyColor = BODY_COLOR_GREEN, \ - .speciesName = _("Copperajah"), \ - .cryId = CRY_COPPERAJAH, \ - .natDexNum = NATIONAL_DEX_COPPERAJAH, \ - .categoryName = _("Copperderm"), \ - FOOTPRINT(Copperajah) \ - LEARNSETS(Copperajah), \ - .formSpeciesIdTable = sCopperajahFormSpeciesIdTable, \ - .formChangeTable = sCopperajahFormChangeTable - [SPECIES_COPPERAJAH] = { - COPPERAJAH_MISC_INFO, + .baseHP = 122, + .baseAttack = 130, + .baseDefense = 69, + .baseSpeed = 30, + .baseSpAttack = 80, + .baseSpDefense = 69, + .types = MON_TYPES(TYPE_STEEL), + .catchRate = 90, + .expYield = 175, + .evYield_Attack = 2, + .itemRare = ITEM_LAGGING_TAIL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_MINERAL), + .abilities = { ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Copperajah"), + .cryId = CRY_COPPERAJAH, + .natDexNum = NATIONAL_DEX_COPPERAJAH, + .categoryName = _("Copperderm"), .height = 30, .weight = 6500, .description = COMPOUND_STRING( @@ -3982,21 +4937,51 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Copperajah, 64, 56), + .frontPic = gMonFrontPic_Copperajah, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Copperajah, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Copperajah, 64, 32), + .backPic = gMonBackPic_Copperajah, + .backPicSize = MON_COORDS_SIZE(64, 32), .backPicYOffset = 16, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Copperajah), - ICON(Copperajah, 0), + .palette = gMonPalette_Copperajah, + .shinyPalette = gMonShinyPalette_Copperajah, + .iconSprite = gMonIcon_Copperajah, + .iconPalIndex = 0, + FOOTPRINT(Copperajah) + .levelUpLearnset = sCopperajahLevelUpLearnset, + .teachableLearnset = sCopperajahTeachableLearnset, + .formSpeciesIdTable = sCopperajahFormSpeciesIdTable, + .formChangeTable = sCopperajahFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_COPPERAJAH_GIGANTAMAX] = { - COPPERAJAH_MISC_INFO, + .baseHP = 122, + .baseAttack = 130, + .baseDefense = 69, + .baseSpeed = 30, + .baseSpAttack = 80, + .baseSpDefense = 69, + .types = MON_TYPES(TYPE_STEEL), + .catchRate = 90, + .expYield = 175, + .evYield_Attack = 2, + .itemRare = ITEM_LAGGING_TAIL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_MINERAL), + .abilities = { ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Copperajah"), + .cryId = CRY_COPPERAJAH, + .natDexNum = NATIONAL_DEX_COPPERAJAH, + .categoryName = _("Copperderm"), .height = 230, .weight = 0, .description = COMPOUND_STRING( @@ -4008,16 +4993,25 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(CopperajahGigantamax, 64, 64), + .frontPic = gMonFrontPic_CopperajahGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_CopperajahGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(CopperajahGigantamax, 64, 64), + .backPic = gMonBackPic_CopperajahGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(CopperajahGigantamax), - ICON(CopperajahGigantamax, 0), + .palette = gMonPalette_CopperajahGigantamax, + .shinyPalette = gMonShinyPalette_CopperajahGigantamax, + .iconSprite = gMonIcon_CopperajahGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Copperajah) .isGigantamax = TRUE, + .levelUpLearnset = sCopperajahLevelUpLearnset, + .teachableLearnset = sCopperajahTeachableLearnset, + .formSpeciesIdTable = sCopperajahFormSpeciesIdTable, + .formChangeTable = sCopperajahFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_CUFANT @@ -4057,17 +5051,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 2, .trainerScale = 286, .trainerOffset = 1, - FRONT_PIC(Dracozolt, 64, 64), + .frontPic = gMonFrontPic_Dracozolt, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Dracozolt, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Dracozolt, 64, 56), + .backPic = gMonBackPic_Dracozolt, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Dracozolt), - ICON(Dracozolt, 1), + .palette = gMonPalette_Dracozolt, + .shinyPalette = gMonShinyPalette_Dracozolt, + .iconSprite = gMonIcon_Dracozolt, + .iconPalIndex = 1, FOOTPRINT(Dracozolt) - LEARNSETS(Dracozolt), + .levelUpLearnset = sDracozoltLevelUpLearnset, + .teachableLearnset = sDracozoltTeachableLearnset, }, #endif //P_FAMILY_DRACOZOLT @@ -4105,17 +5104,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 0, .trainerScale = 342, .trainerOffset = 7, - FRONT_PIC(Arctozolt, 56, 64), + .frontPic = gMonFrontPic_Arctozolt, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Arctozolt, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Arctozolt, 56, 48), + .backPic = gMonBackPic_Arctozolt, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Arctozolt), - ICON(Arctozolt, 2), + .palette = gMonPalette_Arctozolt, + .shinyPalette = gMonShinyPalette_Arctozolt, + .iconSprite = gMonIcon_Arctozolt, + .iconPalIndex = 2, FOOTPRINT(Arctozolt) - LEARNSETS(Arctozolt), + .levelUpLearnset = sArctozoltLevelUpLearnset, + .teachableLearnset = sArctozoltTeachableLearnset, }, #endif //P_FAMILY_ARCTOZOLT @@ -4154,17 +5158,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 0, .trainerScale = 342, .trainerOffset = 7, - FRONT_PIC(Dracovish, 48, 64), + .frontPic = gMonFrontPic_Dracovish, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Dracovish, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Dracovish, 64, 64), + .backPic = gMonBackPic_Dracovish, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Dracovish), - ICON(Dracovish, 0), + .palette = gMonPalette_Dracovish, + .shinyPalette = gMonShinyPalette_Dracovish, + .iconSprite = gMonIcon_Dracovish, + .iconPalIndex = 0, FOOTPRINT(Dracovish) - LEARNSETS(Dracovish), + .levelUpLearnset = sDracovishLevelUpLearnset, + .teachableLearnset = sDracovishTeachableLearnset, }, #endif //P_FAMILY_DRACOVISH @@ -4203,51 +5212,49 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 1, .trainerScale = 334, .trainerOffset = 4, - FRONT_PIC(Arctovish, 64, 64), + .frontPic = gMonFrontPic_Arctovish, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Arctovish, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Arctovish, 64, 48), + .backPic = gMonBackPic_Arctovish, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Arctovish), - ICON(Arctovish, 0), + .palette = gMonPalette_Arctovish, + .shinyPalette = gMonShinyPalette_Arctovish, + .iconSprite = gMonIcon_Arctovish, + .iconPalIndex = 0, FOOTPRINT(Arctovish) - LEARNSETS(Arctovish), + .levelUpLearnset = sArctovishLevelUpLearnset, + .teachableLearnset = sArctovishTeachableLearnset, }, #endif //P_FAMILY_ARCTOVISH #if P_FAMILY_DURALUDON -#define DURALUDON_MISC_INFO \ - .baseHP = 70, \ - .baseAttack = 95, \ - .baseDefense = 115, \ - .baseSpeed = 85, \ - .baseSpAttack = 120, \ - .baseSpDefense = 50, \ - .types = MON_TYPES(TYPE_STEEL, TYPE_DRAGON), \ - .catchRate = 45, \ - .expYield = 187, \ - .evYield_SpAttack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 30, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_DRAGON), \ - .abilities = { ABILITY_LIGHT_METAL, ABILITY_HEAVY_METAL, ABILITY_STALWART }, \ - .bodyColor = BODY_COLOR_WHITE, \ - .speciesName = _("Duraludon"), \ - .cryId = CRY_DURALUDON, \ - .natDexNum = NATIONAL_DEX_DURALUDON, \ - .categoryName = _("Alloy"), \ - FOOTPRINT(Duraludon) \ - LEARNSETS(Duraludon), \ - .formSpeciesIdTable = sDuraludonFormSpeciesIdTable, \ - .formChangeTable = sDuraludonFormChangeTable - [SPECIES_DURALUDON] = { - DURALUDON_MISC_INFO, + .baseHP = 70, + .baseAttack = 95, + .baseDefense = 115, + .baseSpeed = 85, + .baseSpAttack = 120, + .baseSpDefense = 50, + .types = MON_TYPES(TYPE_STEEL, TYPE_DRAGON), + .catchRate = 45, + .expYield = 187, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_DRAGON), + .abilities = { ABILITY_LIGHT_METAL, ABILITY_HEAVY_METAL, ABILITY_STALWART }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Duraludon"), + .cryId = CRY_DURALUDON, + .natDexNum = NATIONAL_DEX_DURALUDON, + .categoryName = _("Alloy"), .height = 18, .weight = 400, .description = COMPOUND_STRING( @@ -4258,22 +5265,51 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 2, .trainerScale = 286, .trainerOffset = 1, - FRONT_PIC(Duraludon, 56, 64), + .frontPic = gMonFrontPic_Duraludon, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Duraludon, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Duraludon, 64, 64), + .backPic = gMonBackPic_Duraludon, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Duraludon), - ICON(Duraludon, 0), + .palette = gMonPalette_Duraludon, + .shinyPalette = gMonShinyPalette_Duraludon, + .iconSprite = gMonIcon_Duraludon, + .iconPalIndex = 0, + FOOTPRINT(Duraludon) + .levelUpLearnset = sDuraludonLevelUpLearnset, + .teachableLearnset = sDuraludonTeachableLearnset, + .formSpeciesIdTable = sDuraludonFormSpeciesIdTable, + .formChangeTable = sDuraludonFormChangeTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_METAL_ALLOY, SPECIES_ARCHALUDON}), }, #if P_GIGANTAMAX_FORMS [SPECIES_DURALUDON_GIGANTAMAX] = { - DURALUDON_MISC_INFO, + .baseHP = 70, + .baseAttack = 95, + .baseDefense = 115, + .baseSpeed = 85, + .baseSpAttack = 120, + .baseSpDefense = 50, + .types = MON_TYPES(TYPE_STEEL, TYPE_DRAGON), + .catchRate = 45, + .expYield = 187, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_DRAGON), + .abilities = { ABILITY_LIGHT_METAL, ABILITY_HEAVY_METAL, ABILITY_STALWART }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Duraludon"), + .cryId = CRY_DURALUDON, + .natDexNum = NATIONAL_DEX_DURALUDON, + .categoryName = _("Alloy"), .height = 430, .weight = 0, .description = COMPOUND_STRING( @@ -4285,16 +5321,25 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 2, .trainerScale = 286, .trainerOffset = 1, - FRONT_PIC(DuraludonGigantamax, 64, 64), + .frontPic = gMonFrontPic_DuraludonGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_DuraludonGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(DuraludonGigantamax, 64, 64), + .backPic = gMonBackPic_DuraludonGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(DuraludonGigantamax), - ICON(DuraludonGigantamax, 0), + .palette = gMonPalette_DuraludonGigantamax, + .shinyPalette = gMonShinyPalette_DuraludonGigantamax, + .iconSprite = gMonIcon_DuraludonGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Duraludon) .isGigantamax = TRUE, + .levelUpLearnset = sDuraludonLevelUpLearnset, + .teachableLearnset = sDuraludonTeachableLearnset, + .formSpeciesIdTable = sDuraludonFormSpeciesIdTable, + .formChangeTable = sDuraludonFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS @@ -4333,17 +5378,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 2, .trainerScale = 286, .trainerOffset = 1, - FRONT_PIC(Archaludon, 64, 64), + .frontPic = gMonFrontPic_Archaludon, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Archaludon, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Archaludon, 64, 64), + .backPic = gMonBackPic_Archaludon, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, .backAnimId = BACK_ANIM_NONE, - PALETTES(Archaludon), - //ICON(Archaludon, 0), + .palette = gMonPalette_Archaludon, + .shinyPalette = gMonShinyPalette_Archaludon, + //.iconSprite = gMonIcon_Archaludon, + //.iconPalIndex = 0, //FOOTPRINT(Archaludon) - LEARNSETS(Archaludon), + .levelUpLearnset = sArchaludonLevelUpLearnset, + .teachableLearnset = sArchaludonTeachableLearnset, }, #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_DURALUDON @@ -4383,18 +5433,23 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Dreepy, 48, 40), + .frontPic = gMonFrontPic_Dreepy, + .frontPicSize = MON_COORDS_SIZE(48, 40), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Dreepy, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 5, - BACK_PIC(Dreepy, 56, 40), + .backPic = gMonBackPic_Dreepy, + .backPicSize = MON_COORDS_SIZE(56, 40), .backPicYOffset = 15, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Dreepy), - ICON(Dreepy, 0), + .palette = gMonPalette_Dreepy, + .shinyPalette = gMonShinyPalette_Dreepy, + .iconSprite = gMonIcon_Dreepy, + .iconPalIndex = 0, FOOTPRINT(Dreepy) - LEARNSETS(Dreepy), + .levelUpLearnset = sDreepyLevelUpLearnset, + .teachableLearnset = sDreepyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_DRAKLOAK}), }, @@ -4431,18 +5486,23 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 2, .trainerScale = 262, .trainerOffset = 0, - FRONT_PIC(Drakloak, 64, 56), + .frontPic = gMonFrontPic_Drakloak, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Drakloak, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 5, - BACK_PIC(Drakloak, 64, 48), + .backPic = gMonBackPic_Drakloak, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Drakloak), - ICON(Drakloak, 0), + .palette = gMonPalette_Drakloak, + .shinyPalette = gMonShinyPalette_Drakloak, + .iconSprite = gMonIcon_Drakloak, + .iconPalIndex = 0, FOOTPRINT(Drakloak) - LEARNSETS(Drakloak), + .levelUpLearnset = sDrakloakLevelUpLearnset, + .teachableLearnset = sDrakloakTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 60, SPECIES_DRAGAPULT}), }, @@ -4480,49 +5540,29 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Dragapult, 64, 64), + .frontPic = gMonFrontPic_Dragapult, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Dragapult, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 3, - BACK_PIC(Dragapult, 64, 56), + .backPic = gMonBackPic_Dragapult, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Dragapult), - ICON(Dragapult, 0), + .palette = gMonPalette_Dragapult, + .shinyPalette = gMonShinyPalette_Dragapult, + .iconSprite = gMonIcon_Dragapult, + .iconPalIndex = 0, FOOTPRINT(Dragapult) - LEARNSETS(Dragapult), + .levelUpLearnset = sDragapultLevelUpLearnset, + .teachableLearnset = sDragapultTeachableLearnset, }, #endif //P_FAMILY_DREEPY #if P_FAMILY_ZACIAN -#define ZACIAN_MISC_INFO \ - .catchRate = 10, \ - .evYield_Speed = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_INTREPID_SWORD, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_BLUE, \ - .isLegendary = TRUE, \ - .speciesName = _("Zacian"), \ - .natDexNum = NATIONAL_DEX_ZACIAN, \ - .categoryName = _("Warrior"), \ - .height = 28, \ - .pokemonScale = 275, \ - .pokemonOffset = 7, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Zacian) \ - LEARNSETS(Zacian), \ - .formSpeciesIdTable = sZacianFormSpeciesIdTable, \ - .formChangeTable = sZacianFormChangeTable - [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = { - ZACIAN_MISC_INFO, .baseHP = 92, .baseAttack = P_UPDATED_STATS >= GEN_9 ? 120 : 130, .baseDefense = 115, @@ -4530,27 +5570,53 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .baseSpAttack = 80, .baseSpDefense = 115, .types = MON_TYPES(TYPE_FAIRY), + .catchRate = 10, .expYield = 335, + .evYield_Speed = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_INTREPID_SWORD, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Zacian"), .cryId = CRY_ZACIAN_HERO_OF_MANY_BATTLES, + .natDexNum = NATIONAL_DEX_ZACIAN, + .categoryName = _("Warrior"), + .height = 28, .weight = 1100, .description = COMPOUND_STRING( "Known as a legendary hero, this Pokémon\n" "absorbs metal particles, transforming them\n" "into a weapon it uses to battle."), - FRONT_PIC(ZacianHeroOfManyBattles, 64, 64), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_ZacianHeroOfManyBattles, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Zacian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ZacianHeroOfManyBattles, 64, 56), + .backPic = gMonBackPic_ZacianHeroOfManyBattles, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ZacianHeroOfManyBattles), - ICON(ZacianHeroOfManyBattles, 2), + .palette = gMonPalette_ZacianHeroOfManyBattles, + .shinyPalette = gMonShinyPalette_ZacianHeroOfManyBattles, + .iconSprite = gMonIcon_ZacianHeroOfManyBattles, + .iconPalIndex = 2, + FOOTPRINT(Zacian) + .isLegendary = TRUE, + .levelUpLearnset = sZacianLevelUpLearnset, + .teachableLearnset = sZacianTeachableLearnset, + .formSpeciesIdTable = sZacianFormSpeciesIdTable, + .formChangeTable = sZacianFormChangeTable, }, [SPECIES_ZACIAN_CROWNED_SWORD] = { - ZACIAN_MISC_INFO, .baseHP = 92, .baseAttack = P_UPDATED_STATS >= GEN_9 ? 150 : 170, .baseDefense = 115, @@ -4558,54 +5624,56 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .baseSpAttack = 80, .baseSpDefense = 115, .types = MON_TYPES(TYPE_FAIRY, TYPE_STEEL), + .catchRate = 10, .expYield = 360, + .evYield_Speed = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_INTREPID_SWORD, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Zacian"), .cryId = CRY_ZACIAN_CROWNED_SWORD, + .natDexNum = NATIONAL_DEX_ZACIAN, + .categoryName = _("Warrior"), + .height = 28, .weight = 3550, .description = COMPOUND_STRING( "Able to cut down anything with a\n" "single strike, it became known as the\n" "Fairy King's Sword, and it inspired\n" "awe in friend and foe alike."), - FRONT_PIC(ZacianCrownedSword, 64, 64), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_ZacianCrownedSword, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Zacian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ZacianCrownedSword, 64, 56), + .backPic = gMonBackPic_ZacianCrownedSword, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ZacianCrownedSword), - ICON(ZacianCrownedSword, 2), + .palette = gMonPalette_ZacianCrownedSword, + .shinyPalette = gMonShinyPalette_ZacianCrownedSword, + .iconSprite = gMonIcon_ZacianCrownedSword, + .iconPalIndex = 2, + FOOTPRINT(Zacian) + .isLegendary = TRUE, + .levelUpLearnset = sZacianLevelUpLearnset, + .teachableLearnset = sZacianTeachableLearnset, + .formSpeciesIdTable = sZacianFormSpeciesIdTable, + .formChangeTable = sZacianFormChangeTable, }, #endif //P_FAMILY_ZACIAN #if P_FAMILY_ZAMAZENTA -#define ZAMAZENTA_MISC_INFO \ - .catchRate = 10, \ - .evYield_Speed = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_DAUNTLESS_SHIELD, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_RED, \ - .isLegendary = TRUE, \ - .speciesName = _("Zamazenta"), \ - .natDexNum = NATIONAL_DEX_ZAMAZENTA, \ - .categoryName = _("Warrior"), \ - .height = 29, \ - .pokemonScale = 275, \ - .pokemonOffset = 7, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Zamazenta) \ - LEARNSETS(Zamazenta), \ - .formSpeciesIdTable = sZamazentaFormSpeciesIdTable, \ - .formChangeTable = sZamazentaFormChangeTable - [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = { - ZAMAZENTA_MISC_INFO, .baseHP = 92, .baseAttack = P_UPDATED_STATS >= GEN_9 ? 120 : 130, .baseDefense = 115, @@ -4613,28 +5681,54 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .baseSpAttack = 80, .baseSpDefense = 115, .types = MON_TYPES(TYPE_FIGHTING), + .catchRate = 10, .expYield = 335, + .evYield_Speed = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_DAUNTLESS_SHIELD, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Zamazenta"), .cryId = CRY_ZAMAZENTA_HERO_OF_MANY_BATTLES, + .natDexNum = NATIONAL_DEX_ZAMAZENTA, + .categoryName = _("Warrior"), + .height = 29, .weight = 2100, .description = COMPOUND_STRING( "In times past, it worked together with a\n" "king of the people to save the Galar\n" "region. It absorbs metal that it then\n" "uses in battle."), - FRONT_PIC(ZamazentaHeroOfManyBattles, 64, 64), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_ZamazentaHeroOfManyBattles, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Zamazenta, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ZamazentaHeroOfManyBattles, 64, 56), + .backPic = gMonBackPic_ZamazentaHeroOfManyBattles, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ZamazentaHeroOfManyBattles), - ICON(ZamazentaHeroOfManyBattles, 2), + .palette = gMonPalette_ZamazentaHeroOfManyBattles, + .shinyPalette = gMonShinyPalette_ZamazentaHeroOfManyBattles, + .iconSprite = gMonIcon_ZamazentaHeroOfManyBattles, + .iconPalIndex = 2, + FOOTPRINT(Zamazenta) + .isLegendary = TRUE, + .levelUpLearnset = sZamazentaLevelUpLearnset, + .teachableLearnset = sZamazentaTeachableLearnset, + .formSpeciesIdTable = sZamazentaFormSpeciesIdTable, + .formChangeTable = sZamazentaFormChangeTable, }, [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = { - ZAMAZENTA_MISC_INFO, .baseHP = 92, .baseAttack = P_UPDATED_STATS >= GEN_9 ? 120 : 130, .baseDefense = P_UPDATED_STATS >= GEN_9 ? 140 : 145, @@ -4642,112 +5736,162 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .baseSpAttack = 80, .baseSpDefense = P_UPDATED_STATS >= GEN_9 ? 140 : 145, .types = MON_TYPES(TYPE_FIGHTING, TYPE_STEEL), + .catchRate = 10, .expYield = 360, + .evYield_Speed = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_DAUNTLESS_SHIELD, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Zamazenta"), .cryId = CRY_ZAMAZENTA_CROWNED_SHIELD, + .natDexNum = NATIONAL_DEX_ZAMAZENTA, + .categoryName = _("Warrior"), + .height = 29, .weight = 7850, .description = COMPOUND_STRING( "Its ability to deflect any attack\n" "led to it being known as the Fighting\n" "Master's Shield. It was feared and\n" "respected by all."), - FRONT_PIC(ZamazentaCrownedShield, 56, 64), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_ZamazentaCrownedShield, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Zamazenta, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ZamazentaCrownedShield, 64, 64), + .backPic = gMonBackPic_ZamazentaCrownedShield, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ZamazentaCrownedShield), - ICON(ZamazentaCrownedShield, 2), + .palette = gMonPalette_ZamazentaCrownedShield, + .shinyPalette = gMonShinyPalette_ZamazentaCrownedShield, + .iconSprite = gMonIcon_ZamazentaCrownedShield, + .iconPalIndex = 2, + FOOTPRINT(Zamazenta) + .isLegendary = TRUE, + .levelUpLearnset = sZamazentaLevelUpLearnset, + .teachableLearnset = sZamazentaTeachableLearnset, + .formSpeciesIdTable = sZamazentaFormSpeciesIdTable, + .formChangeTable = sZamazentaFormChangeTable, }, #endif //P_FAMILY_ZAMAZENTA #if P_FAMILY_ETERNATUS -#define ETERNATUS_MISC_INFO \ - .types = MON_TYPES(TYPE_POISON, TYPE_DRAGON), \ - .catchRate = 255, \ - .evYield_HP = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_PURPLE, \ - .isLegendary = TRUE, \ - .speciesName = _("Eternatus"), \ - .natDexNum = NATIONAL_DEX_ETERNATUS, \ - .categoryName = _("Gigantic"), \ - FOOTPRINT(Eternatus) \ - LEARNSETS(Eternatus), \ - .formSpeciesIdTable = sEternatusFormSpeciesIdTable - [SPECIES_ETERNATUS] = { - ETERNATUS_MISC_INFO, .baseHP = 140, .baseAttack = 85, .baseDefense = 95, .baseSpeed = 130, .baseSpAttack = 145, .baseSpDefense = 95, + .types = MON_TYPES(TYPE_POISON, TYPE_DRAGON), + .catchRate = 255, .expYield = 345, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Eternatus"), .cryId = CRY_ETERNATUS, + .natDexNum = NATIONAL_DEX_ETERNATUS, + .categoryName = _("Gigantic"), .height = 200, .weight = 9500, - .pokemonScale = 230, - .pokemonOffset = 0, - .trainerScale = 4852, - .trainerOffset = 20, .description = COMPOUND_STRING( "The core on its chest absorbs energy\n" "emanating from the lands of the Galar\n" "region. This energy is what allows\n" "Eternatus to stay active."), - FRONT_PIC(Eternatus, 64, 64), + .pokemonScale = 230, + .pokemonOffset = 0, + .trainerScale = 4852, + .trainerOffset = 20, + .frontPic = gMonFrontPic_Eternatus, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Eternatus, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 4, - BACK_PIC(Eternatus, 64, 64), + .backPic = gMonBackPic_Eternatus, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Eternatus), - ICON(Eternatus, 0), + .palette = gMonPalette_Eternatus, + .shinyPalette = gMonShinyPalette_Eternatus, + .iconSprite = gMonIcon_Eternatus, + .iconPalIndex = 0, + FOOTPRINT(Eternatus) + .isLegendary = TRUE, + .levelUpLearnset = sEternatusLevelUpLearnset, + .teachableLearnset = sEternatusTeachableLearnset, + .formSpeciesIdTable = sEternatusFormSpeciesIdTable, }, [SPECIES_ETERNATUS_ETERNAMAX] = { - ETERNATUS_MISC_INFO, .baseHP = 255, .baseAttack = 115, .baseDefense = 250, .baseSpeed = 130, .baseSpAttack = 125, .baseSpDefense = 250, + .types = MON_TYPES(TYPE_POISON, TYPE_DRAGON), + .catchRate = 255, .expYield = 563, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Eternatus"), .cryId = CRY_ETERNATUS_ETERNAMAX, + .natDexNum = NATIONAL_DEX_ETERNATUS, + .categoryName = _("Gigantic"), .height = 1000, .weight = 0, - .pokemonScale = 230, - .pokemonOffset = 0, - .trainerScale = 4852, - .trainerOffset = 20, .description = COMPOUND_STRING( "As a result of Rose's meddling,\n" "Eternatus absorbed all the energy in\n" "the Galar region. It's now in a state\n" "of power overload."), - FRONT_PIC(EternatusEternamax, 64, 64), + .pokemonScale = 230, + .pokemonOffset = 0, + .trainerScale = 4852, + .trainerOffset = 20, + .frontPic = gMonFrontPic_EternatusEternamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Eternatus, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 13, - BACK_PIC(EternatusEternamax, 64, 56), + .backPic = gMonBackPic_EternatusEternamax, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(EternatusEternamax), - ICON(EternatusEternamax, 0), + .palette = gMonPalette_EternatusEternamax, + .shinyPalette = gMonShinyPalette_EternatusEternamax, + .iconSprite = gMonIcon_EternatusEternamax, + .iconPalIndex = 0, + FOOTPRINT(Eternatus) + .isLegendary = TRUE, + .levelUpLearnset = sEternatusLevelUpLearnset, + .teachableLearnset = sEternatusTeachableLearnset, + .formSpeciesIdTable = sEternatusFormSpeciesIdTable, }, #endif //P_FAMILY_ETERNATUS @@ -4771,7 +5915,6 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_INNER_FOCUS, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, - .isLegendary = TRUE, .speciesName = _("Kubfu"), .cryId = CRY_KUBFU, .natDexNum = NATIONAL_DEX_KUBFU, @@ -4786,238 +5929,361 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 12, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Kubfu, 40, 48), + .frontPic = gMonFrontPic_Kubfu, + .frontPicSize = MON_COORDS_SIZE(40, 48), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Kubfu, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Kubfu, 56, 48), + .backPic = gMonBackPic_Kubfu, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Kubfu), - ICON(Kubfu, 1), + .palette = gMonPalette_Kubfu, + .shinyPalette = gMonShinyPalette_Kubfu, + .iconSprite = gMonIcon_Kubfu, + .iconPalIndex = 1, FOOTPRINT(Kubfu) - LEARNSETS(Kubfu), + .isLegendary = TRUE, + .levelUpLearnset = sKubfuLevelUpLearnset, + .teachableLearnset = sKubfuTeachableLearnset, .evolutions = EVOLUTION({EVO_DARK_SCROLL, 0, SPECIES_URSHIFU_SINGLE_STRIKE_STYLE}, {EVO_ITEM, ITEM_SCROLL_OF_DARKNESS, SPECIES_URSHIFU_SINGLE_STRIKE_STYLE}, {EVO_WATER_SCROLL, 0, SPECIES_URSHIFU_RAPID_STRIKE_STYLE}, {EVO_ITEM, ITEM_SCROLL_OF_WATERS, SPECIES_URSHIFU_RAPID_STRIKE_STYLE}), }, -#define URSHIFU_MISC_INFO(style) \ - .baseHP = 100, \ - .baseAttack = 130, \ - .baseDefense = 100, \ - .baseSpeed = 97, \ - .baseSpAttack = 63, \ - .baseSpDefense = 60, \ - .catchRate = 3, \ - .expYield = 275, \ - .evYield_Attack = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 120, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_UNSEEN_FIST, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_GRAY, \ - .isLegendary = TRUE, \ - .speciesName = _("Urshifu"), \ - .natDexNum = NATIONAL_DEX_URSHIFU, \ - .categoryName = _("Wushu"), \ - FOOTPRINT(Urshifu) \ - .formSpeciesIdTable = sUrshifuFormSpeciesIdTable - -#define URSHIFU_SINGLE_STRIKE_STYLE_MISC_INFO \ - .types = MON_TYPES(TYPE_FIGHTING, TYPE_DARK),\ - .cryId = CRY_URSHIFU_SINGLE_STRIKE_STYLE, \ - LEARNSETS(UrshifuSingleStrikeStyle), \ - URSHIFU_MISC_INFO(SingleStrike) - [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = { - URSHIFU_SINGLE_STRIKE_STYLE_MISC_INFO, + .baseHP = 100, + .baseAttack = 130, + .baseDefense = 100, + .baseSpeed = 97, + .baseSpAttack = 63, + .baseSpDefense = 60, + .types = MON_TYPES(TYPE_FIGHTING, TYPE_DARK), + .catchRate = 3, + .expYield = 275, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 120, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_UNSEEN_FIST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Urshifu"), + .cryId = CRY_URSHIFU_SINGLE_STRIKE_STYLE, + .natDexNum = NATIONAL_DEX_URSHIFU, + .categoryName = _("Wushu"), .height = 19, .weight = 1050, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 326, - .trainerOffset = 4, .description = COMPOUND_STRING( "This form of Urshifu is a strong believer\n" "in the one-hit KO. Its strategy is to leap\n" "in close to foes and land a devastating\n" "blow with a hardened fist."), - FRONT_PIC(UrshifuSingleStrikeStyle, 56, 64), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + .frontPic = gMonFrontPic_UrshifuSingleStrikeStyle, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Urshifu, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(UrshifuSingleStrikeStyle, 64, 56), + .backPic = gMonBackPic_UrshifuSingleStrikeStyle, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(UrshifuSingleStrikeStyle), - ICON(Urshifu, 2), + .palette = gMonPalette_UrshifuSingleStrikeStyle, + .shinyPalette = gMonShinyPalette_UrshifuSingleStrikeStyle, + .iconSprite = gMonIcon_Urshifu, + .iconPalIndex = 2, + FOOTPRINT(Urshifu) + .isLegendary = TRUE, + .levelUpLearnset = sUrshifuSingleStrikeStyleLevelUpLearnset, + .teachableLearnset = sUrshifuSingleStrikeStyleTeachableLearnset, + .formSpeciesIdTable = sUrshifuFormSpeciesIdTable, .formChangeTable = sUrshifuSingleStrikeFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = { - URSHIFU_SINGLE_STRIKE_STYLE_MISC_INFO, + .baseHP = 100, + .baseAttack = 130, + .baseDefense = 100, + .baseSpeed = 97, + .baseSpAttack = 63, + .baseSpDefense = 60, + .types = MON_TYPES(TYPE_FIGHTING, TYPE_DARK), + .catchRate = 3, + .expYield = 275, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 120, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_UNSEEN_FIST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Urshifu"), + .cryId = CRY_URSHIFU_SINGLE_STRIKE_STYLE, + .natDexNum = NATIONAL_DEX_URSHIFU, + .categoryName = _("Wushu"), .height = 290, .weight = 0, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 326, - .trainerOffset = 4, .description = COMPOUND_STRING( "People call it the embodiment of\n" "rage. It's said that this Pokémon's\n" "terrifying expression and shout will\n" "rid the world of malevolence."), - FRONT_PIC(UrshifuSingleStrikeStyleGigantamax, 64, 64), - .frontPicYOffset = 0, - .frontAnimFrames = sAnims_UrshifuSingleStrikeStyleGigantamax, - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(UrshifuSingleStrikeStyleGigantamax, 64, 64), - .backPicYOffset = 4, - //.backAnimId = BACK_ANIM_NONE, - PALETTES(UrshifuSingleStrikeStyleGigantamax), - ICON(UrshifuSingleStrikeStyleGigantamax, 0), - .isGigantamax = TRUE, - }, -#endif //P_GIGANTAMAX_FORMS - -#define URSHIFU_RAPID_STRIKE_STYLE_MISC_INFO \ - .types = MON_TYPES(TYPE_FIGHTING, TYPE_WATER), \ - .cryId = CRY_URSHIFU_RAPID_STRIKE_STYLE, \ - LEARNSETS(UrshifuRapidStrikeStyle), \ - URSHIFU_MISC_INFO(RapidStrike) - - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = - { - URSHIFU_RAPID_STRIKE_STYLE_MISC_INFO, - .height = 19, - .weight = 1050, .pokemonScale = 256, .pokemonOffset = 1, .trainerScale = 326, .trainerOffset = 4, + .frontPic = gMonFrontPic_UrshifuSingleStrikeStyleGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_UrshifuSingleStrikeStyleGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_UrshifuSingleStrikeStyleGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_UrshifuSingleStrikeStyleGigantamax, + .shinyPalette = gMonShinyPalette_UrshifuSingleStrikeStyleGigantamax, + .iconSprite = gMonIcon_UrshifuSingleStrikeStyleGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Urshifu) + .isLegendary = TRUE, + .isGigantamax = TRUE, + .levelUpLearnset = sUrshifuSingleStrikeStyleLevelUpLearnset, + .teachableLearnset = sUrshifuSingleStrikeStyleTeachableLearnset, + .formSpeciesIdTable = sUrshifuFormSpeciesIdTable, + }, +#endif //P_GIGANTAMAX_FORMS + + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = + { + .baseHP = 100, + .baseAttack = 130, + .baseDefense = 100, + .baseSpeed = 97, + .baseSpAttack = 63, + .baseSpDefense = 60, + .types = MON_TYPES(TYPE_FIGHTING, TYPE_WATER), + .catchRate = 3, + .expYield = 275, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 120, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_UNSEEN_FIST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Urshifu"), + .cryId = CRY_URSHIFU_RAPID_STRIKE_STYLE, + .natDexNum = NATIONAL_DEX_URSHIFU, + .categoryName = _("Wushu"), + .height = 19, + .weight = 1050, .description = COMPOUND_STRING( "This form of Urshifu is a strong\n" "believer in defeating foes by raining\n" "many blows down on them. Its\n" "strikes are nonstop, flowing like a river."), - FRONT_PIC(UrshifuRapidStrikeStyle, 56, 64), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + .frontPic = gMonFrontPic_UrshifuRapidStrikeStyle, + .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Urshifu, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(UrshifuRapidStrikeStyle, 64, 56), + .backPic = gMonBackPic_UrshifuRapidStrikeStyle, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(UrshifuRapidStrikeStyle), - ICON(Urshifu, 2), + .palette = gMonPalette_UrshifuRapidStrikeStyle, + .shinyPalette = gMonShinyPalette_UrshifuRapidStrikeStyle, + .iconSprite = gMonIcon_Urshifu, + .iconPalIndex = 2, + FOOTPRINT(Urshifu) + .isLegendary = TRUE, + .levelUpLearnset = sUrshifuRapidStrikeStyleLevelUpLearnset, + .teachableLearnset = sUrshifuRapidStrikeStyleTeachableLearnset, + .formSpeciesIdTable = sUrshifuFormSpeciesIdTable, .formChangeTable = sUrshifuRapidStrikeFormChangeTable, }, #if P_GIGANTAMAX_FORMS [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = { - URSHIFU_RAPID_STRIKE_STYLE_MISC_INFO, + .baseHP = 100, + .baseAttack = 130, + .baseDefense = 100, + .baseSpeed = 97, + .baseSpAttack = 63, + .baseSpDefense = 60, + .types = MON_TYPES(TYPE_FIGHTING, TYPE_WATER), + .catchRate = 3, + .expYield = 275, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 120, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_UNSEEN_FIST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Urshifu"), + .cryId = CRY_URSHIFU_RAPID_STRIKE_STYLE, + .natDexNum = NATIONAL_DEX_URSHIFU, + .categoryName = _("Wushu"), .height = 260, .weight = 0, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 326, - .trainerOffset = 4, .description = COMPOUND_STRING( "As it waits for the right moment to\n" "unleash its Gigantamax power, this\n" "Pokémon maintains a perfect one-\n" "legged stance. It won't even twitch."), - FRONT_PIC(UrshifuRapidStrikeStyleGigantamax, 64, 64), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + .frontPic = gMonFrontPic_UrshifuRapidStrikeStyleGigantamax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_UrshifuRapidStrikeStyleGigantamax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(UrshifuRapidStrikeStyleGigantamax, 64, 64), + .backPic = gMonBackPic_UrshifuRapidStrikeStyleGigantamax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(UrshifuRapidStrikeStyleGigantamax), - ICON(UrshifuRapidStrikeStyleGigantamax, 0), + .palette = gMonPalette_UrshifuRapidStrikeStyleGigantamax, + .shinyPalette = gMonShinyPalette_UrshifuRapidStrikeStyleGigantamax, + .iconSprite = gMonIcon_UrshifuRapidStrikeStyleGigantamax, + .iconPalIndex = 0, + FOOTPRINT(Urshifu) + .isLegendary = TRUE, .isGigantamax = TRUE, + .levelUpLearnset = sUrshifuRapidStrikeStyleLevelUpLearnset, + .teachableLearnset = sUrshifuRapidStrikeStyleTeachableLearnset, + .formSpeciesIdTable = sUrshifuFormSpeciesIdTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_KUBFU #if P_FAMILY_ZARUDE -#define ZARUDE_MISC_INFO \ - .baseHP = 105, \ - .baseAttack = 120, \ - .baseDefense = 105, \ - .baseSpeed = 105, \ - .baseSpAttack = 70, \ - .baseSpDefense = 95, \ - .types = MON_TYPES(TYPE_DARK, TYPE_GRASS), \ - .catchRate = 3, \ - .expYield = 300, \ - .evYield_Attack = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_LEAF_GUARD, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_GREEN, \ - .isMythical = TRUE, \ - .speciesName = _("Zarude"), \ - .cryId = CRY_ZARUDE, \ - .natDexNum = NATIONAL_DEX_ZARUDE, \ - .categoryName = _("Rogue Monkey"), \ - .height = 18, \ - .weight = 700, \ - .pokemonScale = 267, \ - .pokemonOffset = 2, \ - .trainerScale = 286, \ - .trainerOffset = 1, \ - FOOTPRINT(Zarude) \ - LEARNSETS(Zarude), \ - .formSpeciesIdTable = sZarudeFormSpeciesIdTable - [SPECIES_ZARUDE] = { - ZARUDE_MISC_INFO, + .baseHP = 105, + .baseAttack = 120, + .baseDefense = 105, + .baseSpeed = 105, + .baseSpAttack = 70, + .baseSpDefense = 95, + .types = MON_TYPES(TYPE_DARK, TYPE_GRASS), + .catchRate = 3, + .expYield = 300, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_LEAF_GUARD, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Zarude"), + .cryId = CRY_ZARUDE, + .natDexNum = NATIONAL_DEX_ZARUDE, + .categoryName = _("Rogue Monkey"), + .height = 18, + .weight = 700, .description = COMPOUND_STRING( "Within dense forests, this Pokémon lives\n" "in a pack with others of its kind. It's\n" "incredibly aggressive, and the other\n" "Pokémon of the forest fear it."), - FRONT_PIC(Zarude, 64, 64), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + .frontPic = gMonFrontPic_Zarude, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Zarude, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Zarude, 64, 56), + .backPic = gMonBackPic_Zarude, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Zarude), - ICON(Zarude, 1), + .palette = gMonPalette_Zarude, + .shinyPalette = gMonShinyPalette_Zarude, + .iconSprite = gMonIcon_Zarude, + .iconPalIndex = 1, + FOOTPRINT(Zarude) + .isMythical = TRUE, + .levelUpLearnset = sZarudeLevelUpLearnset, + .teachableLearnset = sZarudeTeachableLearnset, + .formSpeciesIdTable = sZarudeFormSpeciesIdTable, }, [SPECIES_ZARUDE_DADA] = { - ZARUDE_MISC_INFO, + .baseHP = 105, + .baseAttack = 120, + .baseDefense = 105, + .baseSpeed = 105, + .baseSpAttack = 70, + .baseSpDefense = 95, + .types = MON_TYPES(TYPE_DARK, TYPE_GRASS), + .catchRate = 3, + .expYield = 300, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_LEAF_GUARD, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Zarude"), + .cryId = CRY_ZARUDE, + .natDexNum = NATIONAL_DEX_ZARUDE, + .categoryName = _("Rogue Monkey"), + .height = 18, + .weight = 700, .description = COMPOUND_STRING( "This Zarude's special strength\n" "stems from its love and care for an\n" "orphaned human child that the Pokémon\n" "has raised."), - FRONT_PIC(ZarudeDada, 64, 64), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + .frontPic = gMonFrontPic_ZarudeDada, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Zarude, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ZarudeDada, 64, 56), + .backPic = gMonBackPic_ZarudeDada, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ZarudeDada), - ICON(ZarudeDada, 1), + .palette = gMonPalette_ZarudeDada, + .shinyPalette = gMonShinyPalette_ZarudeDada, + .iconSprite = gMonIcon_ZarudeDada, + .iconPalIndex = 1, + FOOTPRINT(Zarude) + .isMythical = TRUE, + .levelUpLearnset = sZarudeLevelUpLearnset, + .teachableLearnset = sZarudeTeachableLearnset, + .formSpeciesIdTable = sZarudeFormSpeciesIdTable, }, #endif //P_FAMILY_ZARUDE @@ -5056,19 +6322,24 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 4, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Regieleki, 64, 56), + .frontPic = gMonFrontPic_Regieleki, + .frontPicSize = MON_COORDS_SIZE(64, 56), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Regieleki, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 8, - BACK_PIC(Regieleki, 64, 48), + .backPic = gMonBackPic_Regieleki, + .backPicSize = MON_COORDS_SIZE(64, 48), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Regieleki), - ICON(Regieleki, 0), + .palette = gMonPalette_Regieleki, + .shinyPalette = gMonShinyPalette_Regieleki, + .iconSprite = gMonIcon_Regieleki, + .iconPalIndex = 0, FOOTPRINT(Regieleki) - LEARNSETS(Regieleki), .isLegendary = TRUE, + .levelUpLearnset = sRegielekiLevelUpLearnset, + .teachableLearnset = sRegielekiTeachableLearnset, }, #endif //P_FAMILY_REGIELEKI @@ -5092,7 +6363,6 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_DRAGONS_MAW, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, - .isLegendary = TRUE, .speciesName = _("Regidrago"), .cryId = CRY_REGIDRAGO, .natDexNum = NATIONAL_DEX_REGIDRAGO, @@ -5108,18 +6378,24 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 0, .trainerScale = 365, .trainerOffset = 7, - FRONT_PIC(Regidrago, 64, 64), + .frontPic = gMonFrontPic_Regidrago, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Regidrago, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 5, - BACK_PIC(Regidrago, 64, 56), + .backPic = gMonBackPic_Regidrago, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Regidrago), - ICON(Regidrago, 0), + .palette = gMonPalette_Regidrago, + .shinyPalette = gMonShinyPalette_Regidrago, + .iconSprite = gMonIcon_Regidrago, + .iconPalIndex = 0, FOOTPRINT(Regidrago) - LEARNSETS(Regidrago), + .isLegendary = TRUE, + .levelUpLearnset = sRegidragoLevelUpLearnset, + .teachableLearnset = sRegidragoTeachableLearnset, }, #endif //P_FAMILY_REGIDRAGO @@ -5143,7 +6419,6 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_CHILLING_NEIGH, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, - .isLegendary = TRUE, .speciesName = _("Glastrier"), .cryId = CRY_GLASTRIER, .natDexNum = NATIONAL_DEX_GLASTRIER, @@ -5158,17 +6433,23 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 0, .trainerScale = 348, .trainerOffset = 6, - FRONT_PIC(Glastrier, 64, 64), + .frontPic = gMonFrontPic_Glastrier, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Glastrier, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Glastrier, 56, 64), + .backPic = gMonBackPic_Glastrier, + .backPicSize = MON_COORDS_SIZE(56, 64), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Glastrier), - ICON(Glastrier, 0), + .palette = gMonPalette_Glastrier, + .shinyPalette = gMonShinyPalette_Glastrier, + .iconSprite = gMonIcon_Glastrier, + .iconPalIndex = 0, FOOTPRINT(Glastrier) - LEARNSETS(Glastrier), + .isLegendary = TRUE, + .levelUpLearnset = sGlastrierLevelUpLearnset, + .teachableLearnset = sGlastrierTeachableLearnset, }, #endif //P_FAMILY_GLASTRIER @@ -5192,7 +6473,6 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_GRIM_NEIGH, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, - .isLegendary = TRUE, .speciesName = _("Spectrier"), .cryId = CRY_SPECTRIER, .natDexNum = NATIONAL_DEX_SPECTRIER, @@ -5208,31 +6488,29 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 1, .trainerScale = 334, .trainerOffset = 4, - FRONT_PIC(Spectrier, 64, 64), + .frontPic = gMonFrontPic_Spectrier, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Spectrier, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Spectrier, 56, 56), + .backPic = gMonBackPic_Spectrier, + .backPicSize = MON_COORDS_SIZE(56, 56), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Spectrier), - ICON(Spectrier, 0), + .palette = gMonPalette_Spectrier, + .shinyPalette = gMonShinyPalette_Spectrier, + .iconSprite = gMonIcon_Spectrier, + .iconPalIndex = 0, FOOTPRINT(Spectrier) - LEARNSETS(Spectrier), + .isLegendary = TRUE, + .levelUpLearnset = sSpectrierLevelUpLearnset, + .teachableLearnset = sSpectrierTeachableLearnset, }, #endif //P_FAMILY_SPECTRIER -#define CALYREX_MISC_INFO \ - .speciesName = _("Calyrex"), \ - .natDexNum = NATIONAL_DEX_CALYREX, \ - FOOTPRINT(Calyrex) \ - .formSpeciesIdTable = sCalyrexFormSpeciesIdTable, \ - .isLegendary = TRUE - #if P_FAMILY_CALYREX [SPECIES_CALYREX] = { - CALYREX_MISC_INFO, .baseHP = 100, .baseAttack = 80, .baseDefense = 80, @@ -5250,7 +6528,9 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_UNNERVE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Calyrex"), .cryId = CRY_CALYREX, + .natDexNum = NATIONAL_DEX_CALYREX, .categoryName = _("King"), .height = 11, .weight = 77, @@ -5263,22 +6543,29 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Calyrex, 48, 64), + .frontPic = gMonFrontPic_Calyrex, + .frontPicSize = MON_COORDS_SIZE(48, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Calyrex, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Calyrex, 56, 48), + .backPic = gMonBackPic_Calyrex, + .backPicSize = MON_COORDS_SIZE(56, 48), .backPicYOffset = 10, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Calyrex), - ICON(Calyrex, 0), - LEARNSETS(Calyrex), + .palette = gMonPalette_Calyrex, + .shinyPalette = gMonShinyPalette_Calyrex, + .iconSprite = gMonIcon_Calyrex, + .iconPalIndex = 0, + FOOTPRINT(Calyrex) + .isLegendary = TRUE, + .levelUpLearnset = sCalyrexLevelUpLearnset, + .teachableLearnset = sCalyrexTeachableLearnset, + .formSpeciesIdTable = sCalyrexFormSpeciesIdTable, }, #if P_FUSION_FORMS [SPECIES_CALYREX_ICE_RIDER] = { - CALYREX_MISC_INFO, .baseHP = 100, .baseAttack = 165, .baseDefense = 150, @@ -5296,7 +6583,9 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_AS_ONE_ICE_RIDER, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Calyrex"), .cryId = CRY_CALYREX_ICE_RIDER, + .natDexNum = NATIONAL_DEX_CALYREX, .categoryName = _("High King"), .height = 24, .weight = 8091, @@ -5309,22 +6598,29 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(CalyrexIceRider, 64, 64), + .frontPic = gMonFrontPic_CalyrexIceRider, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Calyrex, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(CalyrexIceRider, 64, 64), + .backPic = gMonBackPic_CalyrexIceRider, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(CalyrexIceRider), - ICON(CalyrexIceRider, 0), - LEARNSETS(CalyrexIceRider), + .palette = gMonPalette_CalyrexIceRider, + .shinyPalette = gMonShinyPalette_CalyrexIceRider, + .iconSprite = gMonIcon_CalyrexIceRider, + .iconPalIndex = 0, + FOOTPRINT(Calyrex) + .isLegendary = TRUE, .cannotBeTraded = TRUE, + .levelUpLearnset = sCalyrexIceRiderLevelUpLearnset, + .teachableLearnset = sCalyrexIceRiderTeachableLearnset, + .formSpeciesIdTable = sCalyrexFormSpeciesIdTable, }, [SPECIES_CALYREX_SHADOW_RIDER] = { - CALYREX_MISC_INFO, .baseHP = 100, .baseAttack = 85, .baseDefense = 80, @@ -5342,7 +6638,9 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_AS_ONE_SHADOW_RIDER, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Calyrex"), .cryId = CRY_CALYREX_SHADOW_RIDER, + .natDexNum = NATIONAL_DEX_CALYREX, .categoryName = _("High King"), .height = 24, .weight = 536, @@ -5355,101 +6653,137 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(CalyrexShadowRider, 64, 64), + .frontPic = gMonFrontPic_CalyrexShadowRider, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Calyrex, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(CalyrexShadowRider, 64, 56), + .backPic = gMonBackPic_CalyrexShadowRider, + .backPicSize = MON_COORDS_SIZE(64, 56), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(CalyrexShadowRider), - ICON(CalyrexShadowRider, 0), - LEARNSETS(CalyrexShadowRider), + .palette = gMonPalette_CalyrexShadowRider, + .shinyPalette = gMonShinyPalette_CalyrexShadowRider, + .iconSprite = gMonIcon_CalyrexShadowRider, + .iconPalIndex = 0, + FOOTPRINT(Calyrex) + .isLegendary = TRUE, .cannotBeTraded = TRUE, + .levelUpLearnset = sCalyrexShadowRiderLevelUpLearnset, + .teachableLearnset = sCalyrexShadowRiderTeachableLearnset, + .formSpeciesIdTable = sCalyrexFormSpeciesIdTable, }, #endif //P_FUSION_FORMS #endif //P_FAMILY_CALYREX #if P_FAMILY_ENAMORUS -#define ENAMORUS_MISC_INFO \ - .types = MON_TYPES(TYPE_FAIRY, TYPE_FLYING), \ - .catchRate = 3, \ - .expYield = 116, \ - .evYield_SpAttack = 3, \ - .genderRatio = MON_FEMALE, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .bodyColor = BODY_COLOR_PINK, \ - .isLegendary = TRUE, \ - .speciesName = _("Enamorus"), \ - .natDexNum = NATIONAL_DEX_ENAMORUS, \ - .categoryName = _("Love-Hate"), \ - .height = 16, \ - .weight = 480, \ - .pokemonScale = 259, \ - .pokemonOffset = 1, \ - .trainerScale = 296, \ - .trainerOffset = 1, \ - LEARNSETS(Enamorus), \ - .formSpeciesIdTable = sEnamorusFormSpeciesIdTable - [SPECIES_ENAMORUS_INCARNATE] = { - ENAMORUS_MISC_INFO, .baseHP = 74, .baseAttack = 115, .baseDefense = 70, .baseSpeed = 106, .baseSpAttack = 135, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_FAIRY, TYPE_FLYING), + .catchRate = 3, + .expYield = 116, + .evYield_SpAttack = 3, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE, ABILITY_CONTRARY }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Enamorus"), .cryId = CRY_ENAMORUS_INCARNATE, + .natDexNum = NATIONAL_DEX_ENAMORUS, + .categoryName = _("Love-Hate"), + .height = 16, + .weight = 480, .description = COMPOUND_STRING( "Its arrival brings an end to the winter.\n" "According to legend, this Pokémon's love\n" "gives rise to the budding of fresh life\n" "across the land."), - FRONT_PIC(EnamorusIncarnate, 64, 64), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + .frontPic = gMonFrontPic_EnamorusIncarnate, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_EnamorusIncarnate, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 7, - BACK_PIC(EnamorusIncarnate, 64, 64), + .backPic = gMonBackPic_EnamorusIncarnate, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(EnamorusIncarnate), - ICON(EnamorusIncarnate, 1), + .palette = gMonPalette_EnamorusIncarnate, + .shinyPalette = gMonShinyPalette_EnamorusIncarnate, + .iconSprite = gMonIcon_EnamorusIncarnate, + .iconPalIndex = 1, //FOOTPRINT(EnamorusIncarnate) + .isLegendary = TRUE, + .levelUpLearnset = sEnamorusLevelUpLearnset, + .teachableLearnset = sEnamorusTeachableLearnset, + .formSpeciesIdTable = sEnamorusFormSpeciesIdTable, }, [SPECIES_ENAMORUS_THERIAN] = { - ENAMORUS_MISC_INFO, .baseHP = 74, .baseAttack = 115, .baseDefense = 110, .baseSpeed = 46, .baseSpAttack = 135, .baseSpDefense = 100, + .types = MON_TYPES(TYPE_FAIRY, TYPE_FLYING), + .catchRate = 3, + .expYield = 116, + .evYield_SpAttack = 3, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_OVERCOAT, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Enamorus"), .cryId = CRY_ENAMORUS_THERIAN, + .natDexNum = NATIONAL_DEX_ENAMORUS, + .categoryName = _("Love-Hate"), + .height = 16, + .weight = 480, .description = COMPOUND_STRING( "From the clouds, it descends upon\n" "those who treat any form of life\n" "with disrespect and metes out\n" "wrathful, ruthless punishment."), - FRONT_PIC(EnamorusTherian, 64, 64), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + .frontPic = gMonFrontPic_EnamorusTherian, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_EnamorusTherian, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(EnamorusTherian, 64, 64), + .backPic = gMonBackPic_EnamorusTherian, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(EnamorusTherian), - ICON(EnamorusTherian, 1), + .palette = gMonPalette_EnamorusTherian, + .shinyPalette = gMonShinyPalette_EnamorusTherian, + .iconSprite = gMonIcon_EnamorusTherian, + .iconPalIndex = 1, //FOOTPRINT(Enamorus) + .isLegendary = TRUE, + .levelUpLearnset = sEnamorusLevelUpLearnset, + .teachableLearnset = sEnamorusTeachableLearnset, + .formSpeciesIdTable = sEnamorusFormSpeciesIdTable, }, #endif //P_FAMILY_ENAMORUS diff --git a/src/data/pokemon/species_info/gen_9.h b/src/data/pokemon/species_info/gen_9.h index dd97bebcfe..3971b47482 100644 --- a/src/data/pokemon/species_info/gen_9.h +++ b/src/data/pokemon/species_info/gen_9.h @@ -38,17 +38,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Sprigatito, 64, 64), + .frontPic = gMonFrontPic_Sprigatito, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Sprigatito, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Sprigatito, 64, 64), + .backPic = gMonBackPic_Sprigatito, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Sprigatito), - ICON(Sprigatito, 4), + .palette = gMonPalette_Sprigatito, + .shinyPalette = gMonShinyPalette_Sprigatito, + .iconSprite = gMonIcon_Sprigatito, + .iconPalIndex = 4, //FOOTPRINT(Sprigatito) - LEARNSETS(Sprigatito), + .levelUpLearnset = sSprigatitoLevelUpLearnset, + .teachableLearnset = sSprigatitoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_FLORAGATO}), }, @@ -86,17 +91,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Floragato, 64, 64), + .frontPic = gMonFrontPic_Floragato, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Floragato, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Floragato, 64, 64), + .backPic = gMonBackPic_Floragato, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Floragato), - ICON(Floragato, 1), + .palette = gMonPalette_Floragato, + .shinyPalette = gMonShinyPalette_Floragato, + .iconSprite = gMonIcon_Floragato, + .iconPalIndex = 1, //FOOTPRINT(Floragato) - LEARNSETS(Floragato), + .levelUpLearnset = sFloragatoLevelUpLearnset, + .teachableLearnset = sFloragatoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_MEOWSCARADA}), }, @@ -134,17 +144,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Meowscarada, 64, 64), + .frontPic = gMonFrontPic_Meowscarada, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Meowscarada, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Meowscarada, 64, 64), + .backPic = gMonBackPic_Meowscarada, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Meowscarada), - ICON(Meowscarada, 1), + .palette = gMonPalette_Meowscarada, + .shinyPalette = gMonShinyPalette_Meowscarada, + .iconSprite = gMonIcon_Meowscarada, + .iconPalIndex = 1, //FOOTPRINT(Meowscarada) - LEARNSETS(Meowscarada), + .levelUpLearnset = sMeowscaradaLevelUpLearnset, + .teachableLearnset = sMeowscaradaTeachableLearnset, }, #endif //P_FAMILY_SPRIGATITO @@ -183,17 +198,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Fuecoco, 64, 64), + .frontPic = gMonFrontPic_Fuecoco, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Fuecoco, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Fuecoco, 64, 64), + .backPic = gMonBackPic_Fuecoco, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Fuecoco), - ICON(Fuecoco, 0), + .palette = gMonPalette_Fuecoco, + .shinyPalette = gMonShinyPalette_Fuecoco, + .iconSprite = gMonIcon_Fuecoco, + .iconPalIndex = 0, //FOOTPRINT(Fuecoco) - LEARNSETS(Fuecoco), + .levelUpLearnset = sFuecocoLevelUpLearnset, + .teachableLearnset = sFuecocoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_CROCALOR}), }, @@ -231,17 +251,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Crocalor, 64, 64), + .frontPic = gMonFrontPic_Crocalor, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Crocalor, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Crocalor, 64, 64), + .backPic = gMonBackPic_Crocalor, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Crocalor), - ICON(Crocalor, 0), + .palette = gMonPalette_Crocalor, + .shinyPalette = gMonShinyPalette_Crocalor, + .iconSprite = gMonIcon_Crocalor, + .iconPalIndex = 0, //FOOTPRINT(Crocalor) - LEARNSETS(Crocalor), + .levelUpLearnset = sCrocalorLevelUpLearnset, + .teachableLearnset = sCrocalorTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SKELEDIRGE}), }, @@ -279,17 +304,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Skeledirge, 64, 64), + .frontPic = gMonFrontPic_Skeledirge, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Skeledirge, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Skeledirge, 64, 64), + .backPic = gMonBackPic_Skeledirge, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Skeledirge), - ICON(Skeledirge, 0), + .palette = gMonPalette_Skeledirge, + .shinyPalette = gMonShinyPalette_Skeledirge, + .iconSprite = gMonIcon_Skeledirge, + .iconPalIndex = 0, //FOOTPRINT(Skeledirge) - LEARNSETS(Skeledirge), + .levelUpLearnset = sSkeledirgeLevelUpLearnset, + .teachableLearnset = sSkeledirgeTeachableLearnset, }, #endif //P_FAMILY_FUECOCO @@ -328,17 +358,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Quaxly, 64, 64), + .frontPic = gMonFrontPic_Quaxly, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Quaxly, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Quaxly, 64, 64), + .backPic = gMonBackPic_Quaxly, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Quaxly), - ICON(Quaxly, 2), + .palette = gMonPalette_Quaxly, + .shinyPalette = gMonShinyPalette_Quaxly, + .iconSprite = gMonIcon_Quaxly, + .iconPalIndex = 2, //FOOTPRINT(Quaxly) - LEARNSETS(Quaxly), + .levelUpLearnset = sQuaxlyLevelUpLearnset, + .teachableLearnset = sQuaxlyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_QUAXWELL}), }, @@ -376,17 +411,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Quaxwell, 64, 64), + .frontPic = gMonFrontPic_Quaxwell, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Quaxwell, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Quaxwell, 64, 64), + .backPic = gMonBackPic_Quaxwell, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Quaxwell), - ICON(Quaxwell, 0), + .palette = gMonPalette_Quaxwell, + .shinyPalette = gMonShinyPalette_Quaxwell, + .iconSprite = gMonIcon_Quaxwell, + .iconPalIndex = 0, //FOOTPRINT(Quaxwell) - LEARNSETS(Quaxwell), + .levelUpLearnset = sQuaxwellLevelUpLearnset, + .teachableLearnset = sQuaxwellTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_QUAQUAVAL}), }, @@ -424,17 +464,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Quaquaval, 64, 64), + .frontPic = gMonFrontPic_Quaquaval, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Quaquaval, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Quaquaval, 64, 64), + .backPic = gMonBackPic_Quaquaval, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Quaquaval), - ICON(Quaquaval, 0), + .palette = gMonPalette_Quaquaval, + .shinyPalette = gMonShinyPalette_Quaquaval, + .iconSprite = gMonIcon_Quaquaval, + .iconPalIndex = 0, //FOOTPRINT(Quaquaval) - LEARNSETS(Quaquaval), + .levelUpLearnset = sQuaquavalLevelUpLearnset, + .teachableLearnset = sQuaquavalTeachableLearnset, }, #endif //P_FAMILY_QUAXLY @@ -473,100 +518,129 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Lechonk, 64, 64), + .frontPic = gMonFrontPic_Lechonk, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Lechonk, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Lechonk, 64, 64), + .backPic = gMonBackPic_Lechonk, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Lechonk), - ICON(Lechonk, 1), + .palette = gMonPalette_Lechonk, + .shinyPalette = gMonShinyPalette_Lechonk, + .iconSprite = gMonIcon_Lechonk, + .iconPalIndex = 1, //FOOTPRINT(Lechonk) - LEARNSETS(Lechonk), + .levelUpLearnset = sLechonkLevelUpLearnset, + .teachableLearnset = sLechonkTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_MALE, 18, SPECIES_OINKOLOGNE_MALE}, {EVO_LEVEL_FEMALE, 18, SPECIES_OINKOLOGNE_FEMALE}), }, -#define OINKOLOGNE_MISC_INFO \ - .types = MON_TYPES(TYPE_NORMAL), \ - .catchRate = 100, \ - .expYield = 171, \ - .evYield_HP = 2, \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .bodyColor = BODY_COLOR_GRAY, \ - .speciesName = _("Oinkologne"), \ - .natDexNum = NATIONAL_DEX_OINKOLOGNE, \ - .categoryName = _("Hog"), \ - .height = 10, \ - .weight = 1200, \ - .pokemonScale = 356, \ - .pokemonOffset = 17, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .teachableLearnset = sOinkologneTeachableLearnset, \ - .formSpeciesIdTable = sOinkologneFormSpeciesIdTable - [SPECIES_OINKOLOGNE_MALE] = { - OINKOLOGNE_MISC_INFO, .baseHP = 110, .baseAttack = 100, .baseDefense = 75, .baseSpeed = 65, .baseSpAttack = 59, .baseSpDefense = 80, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 100, + .expYield = 171, + .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(0), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_LINGERING_AROMA, ABILITY_GLUTTONY, ABILITY_THICK_FAT }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Oinkologne"), .cryId = CRY_OINKOLOGNE_MALE, + .natDexNum = NATIONAL_DEX_OINKOLOGNE, + .categoryName = _("Hog"), + .height = 10, + .weight = 1200, .description = COMPOUND_STRING( "Oinkologne is proud of its fine,\n" "glossy skin. It emits a concentrated\n" "scent from the tip of its tail."), - FRONT_PIC(OinkologneMale, 64, 64), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_OinkologneMale, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Oinkologne, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(OinkologneMale, 64, 64), + .backPic = gMonBackPic_OinkologneMale, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(OinkologneMale), - ICON(OinkologneMale, 1), + .palette = gMonPalette_OinkologneMale, + .shinyPalette = gMonShinyPalette_OinkologneMale, + .iconSprite = gMonIcon_OinkologneMale, + .iconPalIndex = 1, //FOOTPRINT(Oinkologne) .levelUpLearnset = sOinkologneMaleLevelUpLearnset, + .teachableLearnset = sOinkologneTeachableLearnset, + .formSpeciesIdTable = sOinkologneFormSpeciesIdTable, }, [SPECIES_OINKOLOGNE_FEMALE] = { - OINKOLOGNE_MISC_INFO, .baseHP = 115, .baseAttack = 90, .baseDefense = 70, .baseSpeed = 65, .baseSpAttack = 59, .baseSpDefense = 90, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 100, + .expYield = 171, + .evYield_HP = 2, .genderRatio = PERCENT_FEMALE(100), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_AROMA_VEIL, ABILITY_GLUTTONY, ABILITY_THICK_FAT }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Oinkologne"), .cryId = CRY_OINKOLOGNE_FEMALE, + .natDexNum = NATIONAL_DEX_OINKOLOGNE, + .categoryName = _("Hog"), + .height = 10, + .weight = 1200, .description = COMPOUND_STRING( "This is a meticulous Pokémon that\n" "likes to keep things tidy. It\n" "shrouds itself in a floral aroma that\n" "soothes the Pokémon around it."), - FRONT_PIC(OinkologneFemale, 64, 64), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_OinkologneFemale, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Oinkologne, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(OinkologneFemale, 64, 64), + .backPic = gMonBackPic_OinkologneFemale, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(OinkologneFemale), - ICON(OinkologneFemale, 2), + .palette = gMonPalette_OinkologneFemale, + .shinyPalette = gMonShinyPalette_OinkologneFemale, + .iconSprite = gMonIcon_OinkologneFemale, + .iconPalIndex = 2, //FOOTPRINT(Oinkologne) .levelUpLearnset = sOinkologneFemaleLevelUpLearnset, + .teachableLearnset = sOinkologneTeachableLearnset, + .formSpeciesIdTable = sOinkologneFormSpeciesIdTable, }, #endif //P_FAMILY_LECHONK @@ -605,17 +679,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Tarountula, 64, 64), + .frontPic = gMonFrontPic_Tarountula, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Tarountula, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Tarountula, 64, 64), + .backPic = gMonBackPic_Tarountula, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Tarountula), - ICON(Tarountula, 1), + .palette = gMonPalette_Tarountula, + .shinyPalette = gMonShinyPalette_Tarountula, + .iconSprite = gMonIcon_Tarountula, + .iconPalIndex = 1, //FOOTPRINT(Tarountula) - LEARNSETS(Tarountula), + .levelUpLearnset = sTarountulaLevelUpLearnset, + .teachableLearnset = sTarountulaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_SPIDOPS}), }, @@ -653,17 +732,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Spidops, 64, 64), + .frontPic = gMonFrontPic_Spidops, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Spidops, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Spidops, 64, 64), + .backPic = gMonBackPic_Spidops, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Spidops), - ICON(Spidops, 1), + .palette = gMonPalette_Spidops, + .shinyPalette = gMonShinyPalette_Spidops, + .iconSprite = gMonIcon_Spidops, + .iconPalIndex = 1, //FOOTPRINT(Spidops) - LEARNSETS(Spidops), + .levelUpLearnset = sSpidopsLevelUpLearnset, + .teachableLearnset = sSpidopsTeachableLearnset, }, #endif //P_FAMILY_TAROUNTULA @@ -702,17 +786,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Nymble, 64, 64), + .frontPic = gMonFrontPic_Nymble, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Nymble, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Nymble, 64, 64), + .backPic = gMonBackPic_Nymble, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Nymble), - ICON(Nymble, 0), + .palette = gMonPalette_Nymble, + .shinyPalette = gMonShinyPalette_Nymble, + .iconSprite = gMonIcon_Nymble, + .iconPalIndex = 0, //FOOTPRINT(Nymble) - LEARNSETS(Nymble), + .levelUpLearnset = sNymbleLevelUpLearnset, + .teachableLearnset = sNymbleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_LOKIX}), }, @@ -750,17 +839,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Lokix, 64, 64), + .frontPic = gMonFrontPic_Lokix, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Lokix, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Lokix, 64, 64), + .backPic = gMonBackPic_Lokix, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Lokix), - ICON(Lokix, 0), + .palette = gMonPalette_Lokix, + .shinyPalette = gMonShinyPalette_Lokix, + .iconSprite = gMonIcon_Lokix, + .iconPalIndex = 0, //FOOTPRINT(Lokix) - LEARNSETS(Lokix), + .levelUpLearnset = sLokixLevelUpLearnset, + .teachableLearnset = sLokixTeachableLearnset, }, #endif //P_FAMILY_NYMBLE @@ -799,17 +893,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pawmi, 64, 64), + .frontPic = gMonFrontPic_Pawmi, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Pawmi, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Pawmi, 64, 64), + .backPic = gMonBackPic_Pawmi, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Pawmi), - ICON(Pawmi, 3), + .palette = gMonPalette_Pawmi, + .shinyPalette = gMonShinyPalette_Pawmi, + .iconSprite = gMonIcon_Pawmi, + .iconPalIndex = 3, //FOOTPRINT(Pawmi) - LEARNSETS(Pawmi), + .levelUpLearnset = sPawmiLevelUpLearnset, + .teachableLearnset = sPawmiTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_PAWMO}), }, @@ -847,17 +946,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pawmo, 64, 64), + .frontPic = gMonFrontPic_Pawmo, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Pawmo, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Pawmo, 64, 64), + .backPic = gMonBackPic_Pawmo, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Pawmo), - ICON(Pawmo, 3), + .palette = gMonPalette_Pawmo, + .shinyPalette = gMonShinyPalette_Pawmo, + .iconSprite = gMonIcon_Pawmo, + .iconPalIndex = 3, //FOOTPRINT(Pawmo) - LEARNSETS(Pawmo), + .levelUpLearnset = sPawmoLevelUpLearnset, + .teachableLearnset = sPawmoTeachableLearnset, .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_PAWMOT}), }, @@ -895,17 +999,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Pawmot, 64, 64), + .frontPic = gMonFrontPic_Pawmot, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Pawmot, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Pawmot, 64, 64), + .backPic = gMonBackPic_Pawmot, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Pawmot), - ICON(Pawmot, 3), + .palette = gMonPalette_Pawmot, + .shinyPalette = gMonShinyPalette_Pawmot, + .iconSprite = gMonIcon_Pawmot, + .iconPalIndex = 3, //FOOTPRINT(Pawmot) - LEARNSETS(Pawmot), + .levelUpLearnset = sPawmotLevelUpLearnset, + .teachableLearnset = sPawmotTeachableLearnset, }, #endif //P_FAMILY_PAWMI @@ -944,84 +1053,129 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Tandemaus, 64, 64), + .frontPic = gMonFrontPic_Tandemaus, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 15, .frontAnimFrames = sAnims_Tandemaus, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Tandemaus, 64, 64), + .backPic = gMonBackPic_Tandemaus, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 15, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Tandemaus), - ICON(Tandemaus, 0), + .palette = gMonPalette_Tandemaus, + .shinyPalette = gMonShinyPalette_Tandemaus, + .iconSprite = gMonIcon_Tandemaus, + .iconPalIndex = 0, //FOOTPRINT(Tandemaus) - LEARNSETS(Tandemaus), + .levelUpLearnset = sTandemausLevelUpLearnset, + .teachableLearnset = sTandemausTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_FAMILY_OF_FOUR, 25, SPECIES_MAUSHOLD_FAMILY_OF_FOUR}, {EVO_LEVEL_FAMILY_OF_THREE, 25, SPECIES_MAUSHOLD_FAMILY_OF_THREE}), }, -#define MAUSHOLD_SPECIES_INFO \ - .baseHP = 74, \ - .baseAttack = 75, \ - .baseDefense = 70, \ - .baseSpeed = 111, \ - .baseSpAttack = 65, \ - .baseSpDefense = 75, \ - .types = MON_TYPES(TYPE_NORMAL), \ - .catchRate = 75, \ - .expYield = 165, \ - .evYield_Speed = 2, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 10, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), \ - .abilities = { ABILITY_FRIEND_GUARD, ABILITY_CHEEK_POUCH, ABILITY_TECHNICIAN }, \ - .bodyColor = BODY_COLOR_WHITE, \ - .speciesName = _("Maushold"), \ - .natDexNum = NATIONAL_DEX_MAUSHOLD, \ - .categoryName = _("Family"), \ - .height = 3, \ - .pokemonScale = 356, \ - .pokemonOffset = 17, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .frontPicYOffset = 15, \ - .frontAnimFrames = sAnims_Maushold, \ - .backPicYOffset = 15, \ - PALETTES(Maushold), \ - LEARNSETS(Maushold), \ - .formSpeciesIdTable = sMausholdFormSpeciesIdTable - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //.backAnimId = BACK_ANIM_NONE, - //FOOTPRINT(Maushold) - [SPECIES_MAUSHOLD_FAMILY_OF_THREE] = { - MAUSHOLD_SPECIES_INFO, + .baseHP = 74, + .baseAttack = 75, + .baseDefense = 70, + .baseSpeed = 111, + .baseSpAttack = 65, + .baseSpDefense = 75, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 75, + .expYield = 165, + .evYield_Speed = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), + .abilities = { ABILITY_FRIEND_GUARD, ABILITY_CHEEK_POUCH, ABILITY_TECHNICIAN }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Maushold"), .cryId = CRY_MAUSHOLD_FAMILY_OF_THREE, + .natDexNum = NATIONAL_DEX_MAUSHOLD, + .categoryName = _("Family"), + .height = 3, .weight = 23, .description = COMPOUND_STRING( "The little one just appeared one\n" "day. They all live together like a\n" "family, but the relationship between\n" "the three is still unclear."), - FRONT_PIC(MausholdFamilyOfThree, 64, 64), - BACK_PIC(MausholdFamilyOfThree, 64, 64), - ICON(MausholdFamilyOfThree, 0), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_MausholdFamilyOfThree, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Maushold, + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ + .backPic = gMonBackPic_MausholdFamilyOfThree, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 15, + /*.backAnimId = BACK_ANIM_NONE,*/ + .palette = gMonPalette_Maushold, + .shinyPalette = gMonShinyPalette_Maushold, + .iconSprite = gMonIcon_MausholdFamilyOfThree, + .iconPalIndex = 0, + /*FOOTPRINT(Maushold)*/ + .levelUpLearnset = sMausholdLevelUpLearnset, + .teachableLearnset = sMausholdTeachableLearnset, + .formSpeciesIdTable = sMausholdFormSpeciesIdTable, }, [SPECIES_MAUSHOLD_FAMILY_OF_FOUR] = { - MAUSHOLD_SPECIES_INFO, + .baseHP = 74, + .baseAttack = 75, + .baseDefense = 70, + .baseSpeed = 111, + .baseSpAttack = 65, + .baseSpDefense = 75, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 75, + .expYield = 165, + .evYield_Speed = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), + .abilities = { ABILITY_FRIEND_GUARD, ABILITY_CHEEK_POUCH, ABILITY_TECHNICIAN }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Maushold"), .cryId = CRY_MAUSHOLD_FAMILY_OF_FOUR, + .natDexNum = NATIONAL_DEX_MAUSHOLD, + .categoryName = _("Family"), + .height = 3, .weight = 28, .description = COMPOUND_STRING( "The larger pair protects the little\n" "ones during battles. When facing\n" "strong opponents, the whole group\n" "will join the fight."), - FRONT_PIC(MausholdFamilyOfFour, 64, 64), - BACK_PIC(MausholdFamilyOfFour, 64, 64), - ICON(MausholdFamilyOfFour, 0), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_MausholdFamilyOfFour, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Maushold, + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ + .backPic = gMonBackPic_MausholdFamilyOfFour, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 15, + /*.backAnimId = BACK_ANIM_NONE,*/ + .palette = gMonPalette_Maushold, + .shinyPalette = gMonShinyPalette_Maushold, + .iconSprite = gMonIcon_MausholdFamilyOfFour, + .iconPalIndex = 0, + /*FOOTPRINT(Maushold)*/ + .levelUpLearnset = sMausholdLevelUpLearnset, + .teachableLearnset = sMausholdTeachableLearnset, + .formSpeciesIdTable = sMausholdFormSpeciesIdTable, }, #endif //P_FAMILY_TANDEMAUS @@ -1060,17 +1214,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Fidough, 64, 64), + .frontPic = gMonFrontPic_Fidough, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Fidough, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Fidough, 64, 64), + .backPic = gMonBackPic_Fidough, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 12, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Fidough), - ICON(Fidough, 1), + .palette = gMonPalette_Fidough, + .shinyPalette = gMonShinyPalette_Fidough, + .iconSprite = gMonIcon_Fidough, + .iconPalIndex = 1, //FOOTPRINT(Fidough) - LEARNSETS(Fidough), + .levelUpLearnset = sFidoughLevelUpLearnset, + .teachableLearnset = sFidoughTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_DACHSBUN}), }, @@ -1108,17 +1267,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Dachsbun, 64, 64), + .frontPic = gMonFrontPic_Dachsbun, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Dachsbun, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Dachsbun, 64, 64), + .backPic = gMonBackPic_Dachsbun, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Dachsbun), - ICON(Dachsbun, 0), // TODO + .palette = gMonPalette_Dachsbun, + .shinyPalette = gMonShinyPalette_Dachsbun, + .iconSprite = gMonIcon_Dachsbun, + .iconPalIndex = 0, // TODO //FOOTPRINT(Dachsbun) - LEARNSETS(Dachsbun), + .levelUpLearnset = sDachsbunLevelUpLearnset, + .teachableLearnset = sDachsbunTeachableLearnset, }, #endif //P_FAMILY_FIDOUGH @@ -1157,17 +1321,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Smoliv, 64, 64), + .frontPic = gMonFrontPic_Smoliv, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Smoliv, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Smoliv, 64, 64), + .backPic = gMonBackPic_Smoliv, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 16, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Smoliv), - ICON(Smoliv, 1), + .palette = gMonPalette_Smoliv, + .shinyPalette = gMonShinyPalette_Smoliv, + .iconSprite = gMonIcon_Smoliv, + .iconPalIndex = 1, //FOOTPRINT(Smoliv) - LEARNSETS(Smoliv), + .levelUpLearnset = sSmolivLevelUpLearnset, + .teachableLearnset = sSmolivTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_DOLLIV}), }, @@ -1205,17 +1374,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Dolliv, 64, 64), + .frontPic = gMonFrontPic_Dolliv, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Dolliv, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Dolliv, 64, 64), + .backPic = gMonBackPic_Dolliv, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Dolliv), - ICON(Dolliv, 1), + .palette = gMonPalette_Dolliv, + .shinyPalette = gMonShinyPalette_Dolliv, + .iconSprite = gMonIcon_Dolliv, + .iconPalIndex = 1, //FOOTPRINT(Dolliv) - LEARNSETS(Dolliv), + .levelUpLearnset = sDollivLevelUpLearnset, + .teachableLearnset = sDollivTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_ARBOLIVA}), }, @@ -1253,112 +1427,236 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Arboliva, 64, 64), + .frontPic = gMonFrontPic_Arboliva, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Arboliva, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Arboliva, 64, 64), + .backPic = gMonBackPic_Arboliva, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Arboliva), - ICON(Arboliva, 5), + .palette = gMonPalette_Arboliva, + .shinyPalette = gMonShinyPalette_Arboliva, + .iconSprite = gMonIcon_Arboliva, + .iconPalIndex = 5, //FOOTPRINT(Arboliva) - LEARNSETS(Arboliva), + .levelUpLearnset = sArbolivaLevelUpLearnset, + .teachableLearnset = sArbolivaTeachableLearnset, }, #endif //P_FAMILY_SMOLIV #if P_FAMILY_SQUAWKABILLY -#define SQUAWKABILLY_MISC_INFO \ - .baseHP = 82, \ - .baseAttack = 96, \ - .baseDefense = 51, \ - .baseSpeed = 92, \ - .baseSpAttack = 45, \ - .baseSpDefense = 51, \ - .types = MON_TYPES(TYPE_NORMAL, TYPE_FLYING), \ - .catchRate = 190, \ - .expYield = 146, \ - .evYield_Attack = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_ERRATIC, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), \ - .speciesName = _("Sqawkabily"), \ - .cryId = CRY_SQUAWKABILLY, \ - .natDexNum = NATIONAL_DEX_SQUAWKABILLY, \ - .categoryName = _("Parrot"), \ - .height = 6, \ - .weight = 24, \ - .pokemonScale = 356, \ - .pokemonOffset = 17, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FRONT_PIC(Squawkabilly, 64, 64), \ - .frontPicYOffset = 4, \ - .frontAnimFrames = sAnims_Squawkabilly, \ - BACK_PIC(Squawkabilly, 64, 64), \ - .backPicYOffset = 4, \ - LEARNSETS(Squawkabilly), \ - .formSpeciesIdTable = sSquawkabillyFormSpeciesIdTable - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //.backAnimId = BACK_ANIM_NONE, - //FOOTPRINT(Squawkabilly) - [SPECIES_SQUAWKABILLY_GREEN_PLUMAGE] = { - SQUAWKABILLY_MISC_INFO, + .baseHP = 82, + .baseAttack = 96, + .baseDefense = 51, + .baseSpeed = 92, + .baseSpAttack = 45, + .baseSpDefense = 51, + .types = MON_TYPES(TYPE_NORMAL, TYPE_FLYING), + .catchRate = 190, + .expYield = 146, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_INTIMIDATE, ABILITY_HUSTLE, ABILITY_GUTS }, .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Sqawkabily"), + .cryId = CRY_SQUAWKABILLY, + .natDexNum = NATIONAL_DEX_SQUAWKABILLY, + .categoryName = _("Parrot"), + .height = 6, + .weight = 24, .description = COMPOUND_STRING( "Green-feathered flocks hold the\n" "most sway. When they're out\n" "searching for food in the mornings and\n" "evenings, it gets very noisy."), - PALETTES(SquawkabillyGreenPlumage), - ICON(SquawkabillyGreenPlumage, 1), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Squawkabilly, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Squawkabilly, + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ + .backPic = gMonBackPic_Squawkabilly, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 4, + /*.backAnimId = BACK_ANIM_NONE,*/ + .palette = gMonPalette_SquawkabillyGreenPlumage, + .shinyPalette = gMonShinyPalette_SquawkabillyGreenPlumage, + .iconSprite = gMonIcon_SquawkabillyGreenPlumage, + .iconPalIndex = 1, + /*FOOTPRINT(Squawkabilly)*/ + .levelUpLearnset = sSquawkabillyLevelUpLearnset, + .teachableLearnset = sSquawkabillyTeachableLearnset, + .formSpeciesIdTable = sSquawkabillyFormSpeciesIdTable, }, [SPECIES_SQUAWKABILLY_BLUE_PLUMAGE] = { - SQUAWKABILLY_MISC_INFO, + .baseHP = 82, + .baseAttack = 96, + .baseDefense = 51, + .baseSpeed = 92, + .baseSpAttack = 45, + .baseSpDefense = 51, + .types = MON_TYPES(TYPE_NORMAL, TYPE_FLYING), + .catchRate = 190, + .expYield = 146, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_INTIMIDATE, ABILITY_HUSTLE, ABILITY_GUTS }, .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Sqawkabily"), + .cryId = CRY_SQUAWKABILLY, + .natDexNum = NATIONAL_DEX_SQUAWKABILLY, + .categoryName = _("Parrot"), + .height = 6, + .weight = 24, .description = COMPOUND_STRING( "The largest of their flocks can\n" "contain more than 50 individuals. They\n" "fly around towns and forests,\n" "searching for food and making a racket."), - PALETTES(SquawkabillyBluePlumage), - ICON(SquawkabillyBluePlumage, 2), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Squawkabilly, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Squawkabilly, + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ + .backPic = gMonBackPic_Squawkabilly, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 4, + /*.backAnimId = BACK_ANIM_NONE,*/ + .palette = gMonPalette_SquawkabillyBluePlumage, + .shinyPalette = gMonShinyPalette_SquawkabillyBluePlumage, + .iconSprite = gMonIcon_SquawkabillyBluePlumage, + .iconPalIndex = 2, + /*FOOTPRINT(Squawkabilly)*/ + .levelUpLearnset = sSquawkabillyLevelUpLearnset, + .teachableLearnset = sSquawkabillyTeachableLearnset, + .formSpeciesIdTable = sSquawkabillyFormSpeciesIdTable, }, [SPECIES_SQUAWKABILLY_YELLOW_PLUMAGE] = { - SQUAWKABILLY_MISC_INFO, + .baseHP = 82, + .baseAttack = 96, + .baseDefense = 51, + .baseSpeed = 92, + .baseSpAttack = 45, + .baseSpDefense = 51, + .types = MON_TYPES(TYPE_NORMAL, TYPE_FLYING), + .catchRate = 190, + .expYield = 146, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_INTIMIDATE, ABILITY_HUSTLE, ABILITY_SHEER_FORCE }, .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Sqawkabily"), + .cryId = CRY_SQUAWKABILLY, + .natDexNum = NATIONAL_DEX_SQUAWKABILLY, + .categoryName = _("Parrot"), + .height = 6, + .weight = 24, .description = COMPOUND_STRING( "These Squawkabilly are hotheaded,\n" "and their fighting style is vicious.\n" "They'll leap within reach of their\n" "foes to engage in close combat."), - PALETTES(SquawkabillyYellowPlumage), - ICON(SquawkabillyYellowPlumage, 1), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Squawkabilly, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Squawkabilly, + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ + .backPic = gMonBackPic_Squawkabilly, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 4, + /*.backAnimId = BACK_ANIM_NONE,*/ + .palette = gMonPalette_SquawkabillyYellowPlumage, + .shinyPalette = gMonShinyPalette_SquawkabillyYellowPlumage, + .iconSprite = gMonIcon_SquawkabillyYellowPlumage, + .iconPalIndex = 1, + /*FOOTPRINT(Squawkabilly)*/ + .levelUpLearnset = sSquawkabillyLevelUpLearnset, + .teachableLearnset = sSquawkabillyTeachableLearnset, + .formSpeciesIdTable = sSquawkabillyFormSpeciesIdTable, }, [SPECIES_SQUAWKABILLY_WHITE_PLUMAGE] = { - SQUAWKABILLY_MISC_INFO, + .baseHP = 82, + .baseAttack = 96, + .baseDefense = 51, + .baseSpeed = 92, + .baseSpAttack = 45, + .baseSpDefense = 51, + .types = MON_TYPES(TYPE_NORMAL, TYPE_FLYING), + .catchRate = 190, + .expYield = 146, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_INTIMIDATE, ABILITY_HUSTLE, ABILITY_SHEER_FORCE }, .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Sqawkabily"), + .cryId = CRY_SQUAWKABILLY, + .natDexNum = NATIONAL_DEX_SQUAWKABILLY, + .categoryName = _("Parrot"), + .height = 6, + .weight = 24, .description = COMPOUND_STRING( "Though these Squawkabilly are the\n" "fewest in number, they have no\n" "trouble living in towns since they blend\n" "in with the white buildings."), - PALETTES(SquawkabillyWhitePlumage), - ICON(SquawkabillyWhitePlumage, 1), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Squawkabilly, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Squawkabilly, + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ + .backPic = gMonBackPic_Squawkabilly, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 4, + /*.backAnimId = BACK_ANIM_NONE,*/ + .palette = gMonPalette_SquawkabillyWhitePlumage, + .shinyPalette = gMonShinyPalette_SquawkabillyWhitePlumage, + .iconSprite = gMonIcon_SquawkabillyWhitePlumage, + .iconPalIndex = 1, + /*FOOTPRINT(Squawkabilly)*/ + .levelUpLearnset = sSquawkabillyLevelUpLearnset, + .teachableLearnset = sSquawkabillyTeachableLearnset, + .formSpeciesIdTable = sSquawkabillyFormSpeciesIdTable, }, #endif //P_FAMILY_SQUAWKABILLY @@ -1397,17 +1695,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Nacli, 64, 64), + .frontPic = gMonFrontPic_Nacli, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Nacli, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Nacli, 64, 64), + .backPic = gMonBackPic_Nacli, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 10, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Nacli), - ICON(Nacli, 2), + .palette = gMonPalette_Nacli, + .shinyPalette = gMonShinyPalette_Nacli, + .iconSprite = gMonIcon_Nacli, + .iconPalIndex = 2, //FOOTPRINT(Nacli) - LEARNSETS(Nacli), + .levelUpLearnset = sNacliLevelUpLearnset, + .teachableLearnset = sNacliTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_NACLSTACK}), }, @@ -1445,17 +1748,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Naclstack, 64, 64), + .frontPic = gMonFrontPic_Naclstack, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Naclstack, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Naclstack, 64, 64), + .backPic = gMonBackPic_Naclstack, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Naclstack), - ICON(Naclstack, 2), // TODO: recolor + .palette = gMonPalette_Naclstack, + .shinyPalette = gMonShinyPalette_Naclstack, + .iconSprite = gMonIcon_Naclstack, + .iconPalIndex = 2, // TODO: recolor //FOOTPRINT(Naclstack) - LEARNSETS(Naclstack), + .levelUpLearnset = sNaclstackLevelUpLearnset, + .teachableLearnset = sNaclstackTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_GARGANACL}), }, @@ -1493,17 +1801,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Garganacl, 64, 64), + .frontPic = gMonFrontPic_Garganacl, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Garganacl, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Garganacl, 64, 64), + .backPic = gMonBackPic_Garganacl, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Garganacl), - ICON(Garganacl, 2), + .palette = gMonPalette_Garganacl, + .shinyPalette = gMonShinyPalette_Garganacl, + .iconSprite = gMonIcon_Garganacl, + .iconPalIndex = 2, //FOOTPRINT(Garganacl) - LEARNSETS(Garganacl), + .levelUpLearnset = sGarganaclLevelUpLearnset, + .teachableLearnset = sGarganaclTeachableLearnset, }, #endif //P_FAMILY_NACLI @@ -1542,17 +1855,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Charcadet, 64, 64), + .frontPic = gMonFrontPic_Charcadet, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Charcadet, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Charcadet, 64, 64), + .backPic = gMonBackPic_Charcadet, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Charcadet), - ICON(Charcadet, 1), + .palette = gMonPalette_Charcadet, + .shinyPalette = gMonShinyPalette_Charcadet, + .iconSprite = gMonIcon_Charcadet, + .iconPalIndex = 1, //FOOTPRINT(Charcadet) - LEARNSETS(Charcadet), + .levelUpLearnset = sCharcadetLevelUpLearnset, + .teachableLearnset = sCharcadetTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_AUSPICIOUS_ARMOR, SPECIES_ARMAROUGE}, {EVO_ITEM, ITEM_MALICIOUS_ARMOR, SPECIES_CERULEDGE}), }, @@ -1591,17 +1909,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Armarouge, 64, 64), + .frontPic = gMonFrontPic_Armarouge, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Armarouge, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Armarouge, 64, 64), + .backPic = gMonBackPic_Armarouge, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Armarouge), - ICON(Armarouge, 0), + .palette = gMonPalette_Armarouge, + .shinyPalette = gMonShinyPalette_Armarouge, + .iconSprite = gMonIcon_Armarouge, + .iconPalIndex = 0, //FOOTPRINT(Armarouge) - LEARNSETS(Armarouge), + .levelUpLearnset = sArmarougeLevelUpLearnset, + .teachableLearnset = sArmarougeTeachableLearnset, }, [SPECIES_CERULEDGE] = @@ -1638,17 +1961,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Ceruledge, 64, 64), + .frontPic = gMonFrontPic_Ceruledge, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Ceruledge, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Ceruledge, 64, 64), + .backPic = gMonBackPic_Ceruledge, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Ceruledge), - ICON(Ceruledge, 2), + .palette = gMonPalette_Ceruledge, + .shinyPalette = gMonShinyPalette_Ceruledge, + .iconSprite = gMonIcon_Ceruledge, + .iconPalIndex = 2, //FOOTPRINT(Ceruledge) - LEARNSETS(Ceruledge), + .levelUpLearnset = sCeruledgeLevelUpLearnset, + .teachableLearnset = sCeruledgeTeachableLearnset, }, #endif //P_FAMILY_CHARCADET @@ -1687,18 +2015,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Tadbulb, 64, 64), + .frontPic = gMonFrontPic_Tadbulb, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Tadbulb, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 12, - BACK_PIC(Tadbulb, 64, 64), + .backPic = gMonBackPic_Tadbulb, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Tadbulb), - ICON(Tadbulb, 5), // TODO: Redo to 0 + .palette = gMonPalette_Tadbulb, + .shinyPalette = gMonShinyPalette_Tadbulb, + .iconSprite = gMonIcon_Tadbulb, + .iconPalIndex = 5, // TODO: Redo to 0 //FOOTPRINT(Tadbulb) - LEARNSETS(Tadbulb), + .levelUpLearnset = sTadbulbLevelUpLearnset, + .teachableLearnset = sTadbulbTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_BELLIBOLT}), }, @@ -1736,17 +2069,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Bellibolt, 64, 64), + .frontPic = gMonFrontPic_Bellibolt, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Bellibolt, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Bellibolt, 64, 64), + .backPic = gMonBackPic_Bellibolt, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 10, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Bellibolt), - ICON(Bellibolt, 0), + .palette = gMonPalette_Bellibolt, + .shinyPalette = gMonShinyPalette_Bellibolt, + .iconSprite = gMonIcon_Bellibolt, + .iconPalIndex = 0, //FOOTPRINT(Bellibolt) - LEARNSETS(Bellibolt), + .levelUpLearnset = sBelliboltLevelUpLearnset, + .teachableLearnset = sBelliboltTeachableLearnset, }, #endif //P_FAMILY_TADBULB @@ -1785,17 +2123,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Wattrel, 64, 64), + .frontPic = gMonFrontPic_Wattrel, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Wattrel, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Wattrel, 64, 64), + .backPic = gMonBackPic_Wattrel, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Wattrel), - ICON(Wattrel, 3), + .palette = gMonPalette_Wattrel, + .shinyPalette = gMonShinyPalette_Wattrel, + .iconSprite = gMonIcon_Wattrel, + .iconPalIndex = 3, //FOOTPRINT(Wattrel) - LEARNSETS(Wattrel), + .levelUpLearnset = sWattrelLevelUpLearnset, + .teachableLearnset = sWattrelTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_KILOWATTREL}), }, @@ -1833,17 +2176,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Kilowattrel, 64, 64), + .frontPic = gMonFrontPic_Kilowattrel, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Kilowattrel, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Kilowattrel, 64, 64), + .backPic = gMonBackPic_Kilowattrel, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Kilowattrel), - ICON(Kilowattrel, 3), + .palette = gMonPalette_Kilowattrel, + .shinyPalette = gMonShinyPalette_Kilowattrel, + .iconSprite = gMonIcon_Kilowattrel, + .iconPalIndex = 3, //FOOTPRINT(Kilowattrel) - LEARNSETS(Kilowattrel), + .levelUpLearnset = sKilowattrelLevelUpLearnset, + .teachableLearnset = sKilowattrelTeachableLearnset, }, #endif //P_FAMILY_WATTREL @@ -1882,17 +2230,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Maschiff, 64, 64), + .frontPic = gMonFrontPic_Maschiff, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Maschiff, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Maschiff, 64, 64), + .backPic = gMonBackPic_Maschiff, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 10, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Maschiff), - ICON(Maschiff, 3), + .palette = gMonPalette_Maschiff, + .shinyPalette = gMonShinyPalette_Maschiff, + .iconSprite = gMonIcon_Maschiff, + .iconPalIndex = 3, //FOOTPRINT(Maschiff) - LEARNSETS(Maschiff), + .levelUpLearnset = sMaschiffLevelUpLearnset, + .teachableLearnset = sMaschiffTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MABOSSTIFF}), }, @@ -1930,17 +2283,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Mabosstiff, 64, 64), + .frontPic = gMonFrontPic_Mabosstiff, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Mabosstiff, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Mabosstiff, 64, 64), + .backPic = gMonBackPic_Mabosstiff, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Mabosstiff), - ICON(Mabosstiff, 5), + .palette = gMonPalette_Mabosstiff, + .shinyPalette = gMonShinyPalette_Mabosstiff, + .iconSprite = gMonIcon_Mabosstiff, + .iconPalIndex = 5, //FOOTPRINT(Mabosstiff) - LEARNSETS(Mabosstiff), + .levelUpLearnset = sMabosstiffLevelUpLearnset, + .teachableLearnset = sMabosstiffTeachableLearnset, }, #endif //P_FAMILY_MASCHIFF @@ -1979,17 +2337,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Shroodle, 64, 64), + .frontPic = gMonFrontPic_Shroodle, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 17, .frontAnimFrames = sAnims_Shroodle, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Shroodle, 64, 64), + .backPic = gMonBackPic_Shroodle, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 16, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Shroodle), - ICON(Shroodle, 0), + .palette = gMonPalette_Shroodle, + .shinyPalette = gMonShinyPalette_Shroodle, + .iconSprite = gMonIcon_Shroodle, + .iconPalIndex = 0, //FOOTPRINT(Shroodle) - LEARNSETS(Shroodle), + .levelUpLearnset = sShroodleLevelUpLearnset, + .teachableLearnset = sShroodleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_GRAFAIAI}), }, @@ -2027,17 +2390,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Grafaiai, 64, 64), + .frontPic = gMonFrontPic_Grafaiai, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 9, .frontAnimFrames = sAnims_Grafaiai, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Grafaiai, 64, 64), + .backPic = gMonBackPic_Grafaiai, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 12, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Grafaiai), - ICON(Grafaiai, 0), + .palette = gMonPalette_Grafaiai, + .shinyPalette = gMonShinyPalette_Grafaiai, + .iconSprite = gMonIcon_Grafaiai, + .iconPalIndex = 0, //FOOTPRINT(Grafaiai) - LEARNSETS(Grafaiai), + .levelUpLearnset = sGrafaiaiLevelUpLearnset, + .teachableLearnset = sGrafaiaiTeachableLearnset, }, #endif //P_FAMILY_SHROODLE @@ -2076,17 +2444,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Bramblin, 64, 64), + .frontPic = gMonFrontPic_Bramblin, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Bramblin, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Bramblin, 64, 64), + .backPic = gMonBackPic_Bramblin, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Bramblin), - ICON(Bramblin, 3), + .palette = gMonPalette_Bramblin, + .shinyPalette = gMonShinyPalette_Bramblin, + .iconSprite = gMonIcon_Bramblin, + .iconPalIndex = 3, //FOOTPRINT(Bramblin) - LEARNSETS(Bramblin), + .levelUpLearnset = sBramblinLevelUpLearnset, + .teachableLearnset = sBramblinTeachableLearnset, .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_BRAMBLEGHAST}), }, @@ -2124,17 +2497,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Brambleghast, 64, 64), + .frontPic = gMonFrontPic_Brambleghast, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Brambleghast, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Brambleghast, 64, 64), + .backPic = gMonBackPic_Brambleghast, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Brambleghast), - ICON(Brambleghast, 5), + .palette = gMonPalette_Brambleghast, + .shinyPalette = gMonShinyPalette_Brambleghast, + .iconSprite = gMonIcon_Brambleghast, + .iconPalIndex = 5, //FOOTPRINT(Brambleghast) - LEARNSETS(Brambleghast), + .levelUpLearnset = sBrambleghastLevelUpLearnset, + .teachableLearnset = sBrambleghastTeachableLearnset, }, #endif //P_FAMILY_BRAMBLIN @@ -2173,17 +2551,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Toedscool, 64, 64), + .frontPic = gMonFrontPic_Toedscool, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Toedscool, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Toedscool, 64, 64), + .backPic = gMonBackPic_Toedscool, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Toedscool), - ICON(Toedscool, 0), + .palette = gMonPalette_Toedscool, + .shinyPalette = gMonShinyPalette_Toedscool, + .iconSprite = gMonIcon_Toedscool, + .iconPalIndex = 0, //FOOTPRINT(Toedscool) - LEARNSETS(Toedscool), + .levelUpLearnset = sToedscoolLevelUpLearnset, + .teachableLearnset = sToedscoolTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_TOEDSCRUEL}), }, @@ -2221,17 +2604,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Toedscruel, 64, 64), + .frontPic = gMonFrontPic_Toedscruel, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Toedscruel, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Toedscruel, 64, 64), + .backPic = gMonBackPic_Toedscruel, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Toedscruel), - ICON(Toedscruel, 0), + .palette = gMonPalette_Toedscruel, + .shinyPalette = gMonShinyPalette_Toedscruel, + .iconSprite = gMonIcon_Toedscruel, + .iconPalIndex = 0, //FOOTPRINT(Toedscruel) - LEARNSETS(Toedscruel), + .levelUpLearnset = sToedscruelLevelUpLearnset, + .teachableLearnset = sToedscruelTeachableLearnset, }, #endif //P_FAMILY_TOEDSCOOL @@ -2270,17 +2658,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Klawf, 64, 64), + .frontPic = gMonFrontPic_Klawf, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Klawf, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Klawf, 64, 64), + .backPic = gMonBackPic_Klawf, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 20, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Klawf), - ICON(Klawf, 0), + .palette = gMonPalette_Klawf, + .shinyPalette = gMonShinyPalette_Klawf, + .iconSprite = gMonIcon_Klawf, + .iconPalIndex = 0, //FOOTPRINT(Klawf) - LEARNSETS(Klawf), + .levelUpLearnset = sKlawfLevelUpLearnset, + .teachableLearnset = sKlawfTeachableLearnset, }, #endif //P_FAMILY_KLAWF @@ -2319,17 +2712,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Capsakid, 64, 64), + .frontPic = gMonFrontPic_Capsakid, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 13, .frontAnimFrames = sAnims_Capsakid, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Capsakid, 64, 64), + .backPic = gMonBackPic_Capsakid, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 12, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Capsakid), - ICON(Capsakid, 1), + .palette = gMonPalette_Capsakid, + .shinyPalette = gMonShinyPalette_Capsakid, + .iconSprite = gMonIcon_Capsakid, + .iconPalIndex = 1, //FOOTPRINT(Capsakid) - LEARNSETS(Capsakid), + .levelUpLearnset = sCapsakidLevelUpLearnset, + .teachableLearnset = sCapsakidTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_SCOVILLAIN}), }, @@ -2367,17 +2765,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Scovillain, 64, 64), + .frontPic = gMonFrontPic_Scovillain, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Scovillain, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Scovillain, 64, 64), + .backPic = gMonBackPic_Scovillain, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Scovillain), - ICON(Scovillain, 1), + .palette = gMonPalette_Scovillain, + .shinyPalette = gMonShinyPalette_Scovillain, + .iconSprite = gMonIcon_Scovillain, + .iconPalIndex = 1, //FOOTPRINT(Scovillain) - LEARNSETS(Scovillain), + .levelUpLearnset = sScovillainLevelUpLearnset, + .teachableLearnset = sScovillainTeachableLearnset, }, #endif //P_FAMILY_CAPSAKID @@ -2416,17 +2819,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Rellor, 64, 64), + .frontPic = gMonFrontPic_Rellor, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 17, .frontAnimFrames = sAnims_Rellor, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Rellor, 64, 64), + .backPic = gMonBackPic_Rellor, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Rellor), - ICON(Rellor, 5), + .palette = gMonPalette_Rellor, + .shinyPalette = gMonShinyPalette_Rellor, + .iconSprite = gMonIcon_Rellor, + .iconPalIndex = 5, //FOOTPRINT(Rellor) - LEARNSETS(Rellor), + .levelUpLearnset = sRellorLevelUpLearnset, + .teachableLearnset = sRellorTeachableLearnset, .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_RABSCA}), }, @@ -2464,17 +2872,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Rabsca, 64, 64), + .frontPic = gMonFrontPic_Rabsca, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Rabsca, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Rabsca, 64, 64), + .backPic = gMonBackPic_Rabsca, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Rabsca), - ICON(Rabsca, 0), + .palette = gMonPalette_Rabsca, + .shinyPalette = gMonShinyPalette_Rabsca, + .iconSprite = gMonIcon_Rabsca, + .iconPalIndex = 0, //FOOTPRINT(Rabsca) - LEARNSETS(Rabsca), + .levelUpLearnset = sRabscaLevelUpLearnset, + .teachableLearnset = sRabscaTeachableLearnset, }, #endif //P_FAMILY_RELLOR @@ -2513,17 +2926,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Flittle, 64, 64), + .frontPic = gMonFrontPic_Flittle, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 12, .frontAnimFrames = sAnims_Flittle, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Flittle, 64, 64), + .backPic = gMonBackPic_Flittle, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Flittle), - ICON(Flittle, 3), + .palette = gMonPalette_Flittle, + .shinyPalette = gMonShinyPalette_Flittle, + .iconSprite = gMonIcon_Flittle, + .iconPalIndex = 3, //FOOTPRINT(Flittle) - LEARNSETS(Flittle), + .levelUpLearnset = sFlittleLevelUpLearnset, + .teachableLearnset = sFlittleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_ESPATHRA}), }, @@ -2561,17 +2979,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Espathra, 64, 64), + .frontPic = gMonFrontPic_Espathra, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Espathra, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Espathra, 64, 64), + .backPic = gMonBackPic_Espathra, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Espathra), - ICON(Espathra, 5), + .palette = gMonPalette_Espathra, + .shinyPalette = gMonShinyPalette_Espathra, + .iconSprite = gMonIcon_Espathra, + .iconPalIndex = 5, //FOOTPRINT(Espathra) - LEARNSETS(Espathra), + .levelUpLearnset = sEspathraLevelUpLearnset, + .teachableLearnset = sEspathraTeachableLearnset, }, #endif //P_FAMILY_FLITTLE @@ -2610,17 +3033,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Tinkatink, 64, 64), + .frontPic = gMonFrontPic_Tinkatink, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Tinkatink, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Tinkatink, 64, 64), + .backPic = gMonBackPic_Tinkatink, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 12, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Tinkatink), - ICON(Tinkatink, 1), + .palette = gMonPalette_Tinkatink, + .shinyPalette = gMonShinyPalette_Tinkatink, + .iconSprite = gMonIcon_Tinkatink, + .iconPalIndex = 1, //FOOTPRINT(Tinkatink) - LEARNSETS(Tinkatink), + .levelUpLearnset = sTinkatinkLevelUpLearnset, + .teachableLearnset = sTinkatinkTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_TINKATUFF}), }, @@ -2658,17 +3086,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Tinkatuff, 64, 64), + .frontPic = gMonFrontPic_Tinkatuff, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Tinkatuff, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Tinkatuff, 64, 64), + .backPic = gMonBackPic_Tinkatuff, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Tinkatuff), - ICON(Tinkatuff, 4), + .palette = gMonPalette_Tinkatuff, + .shinyPalette = gMonShinyPalette_Tinkatuff, + .iconSprite = gMonIcon_Tinkatuff, + .iconPalIndex = 4, //FOOTPRINT(Tinkatuff) - LEARNSETS(Tinkatuff), + .levelUpLearnset = sTinkatuffLevelUpLearnset, + .teachableLearnset = sTinkatuffTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_TINKATON}), }, @@ -2706,17 +3139,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Tinkaton, 64, 64), + .frontPic = gMonFrontPic_Tinkaton, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Tinkaton, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Tinkaton, 64, 64), + .backPic = gMonBackPic_Tinkaton, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 15, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Tinkaton), - ICON(Tinkaton, 4), + .palette = gMonPalette_Tinkaton, + .shinyPalette = gMonShinyPalette_Tinkaton, + .iconSprite = gMonIcon_Tinkaton, + .iconPalIndex = 4, //FOOTPRINT(Tinkaton) - LEARNSETS(Tinkaton), + .levelUpLearnset = sTinkatonLevelUpLearnset, + .teachableLearnset = sTinkatonTeachableLearnset, }, #endif //P_FAMILY_TINKATINK @@ -2754,17 +3192,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Wiglett, 64, 64), + .frontPic = gMonFrontPic_Wiglett, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 10, .frontAnimFrames = sAnims_Wiglett, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Wiglett, 64, 64), + .backPic = gMonBackPic_Wiglett, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Wiglett), - ICON(Wiglett, 0), + .palette = gMonPalette_Wiglett, + .shinyPalette = gMonShinyPalette_Wiglett, + .iconSprite = gMonIcon_Wiglett, + .iconPalIndex = 0, //FOOTPRINT(Wiglett) - LEARNSETS(Wiglett), + .levelUpLearnset = sWiglettLevelUpLearnset, + .teachableLearnset = sWiglettTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_WUGTRIO}), }, @@ -2801,17 +3244,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Wugtrio, 64, 64), + .frontPic = gMonFrontPic_Wugtrio, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Wugtrio, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Wugtrio, 64, 64), + .backPic = gMonBackPic_Wugtrio, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Wugtrio), - ICON(Wugtrio, 0), + .palette = gMonPalette_Wugtrio, + .shinyPalette = gMonShinyPalette_Wugtrio, + .iconSprite = gMonIcon_Wugtrio, + .iconPalIndex = 0, //FOOTPRINT(Wugtrio) - LEARNSETS(Wugtrio), + .levelUpLearnset = sWugtrioLevelUpLearnset, + .teachableLearnset = sWugtrioTeachableLearnset, }, #endif //P_FAMILY_WIGLETT @@ -2850,18 +3298,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Bombirdier, 64, 64), + .frontPic = gMonFrontPic_Bombirdier, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Bombirdier, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 8, - BACK_PIC(Bombirdier, 64, 64), + .backPic = gMonBackPic_Bombirdier, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Bombirdier), - ICON(Bombirdier, 0), + .palette = gMonPalette_Bombirdier, + .shinyPalette = gMonShinyPalette_Bombirdier, + .iconSprite = gMonIcon_Bombirdier, + .iconPalIndex = 0, //FOOTPRINT(Bombirdier) - LEARNSETS(Bombirdier), + .levelUpLearnset = sBombirdierLevelUpLearnset, + .teachableLearnset = sBombirdierTeachableLearnset, }, #endif //P_FAMILY_BOMBIRDIER @@ -2899,55 +3352,47 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Finizen, 64, 64), + .frontPic = gMonFrontPic_Finizen, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Finizen, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Finizen, 64, 64), + .backPic = gMonBackPic_Finizen, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 15, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Finizen), - ICON(Finizen, 0), + .palette = gMonPalette_Finizen, + .shinyPalette = gMonShinyPalette_Finizen, + .iconSprite = gMonIcon_Finizen, + .iconPalIndex = 0, //FOOTPRINT(Finizen) - LEARNSETS(Finizen), + .levelUpLearnset = sFinizenLevelUpLearnset, + .teachableLearnset = sFinizenTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_PALAFIN_ZERO}), }, -#define PALAFIN_MISC_INFO \ - .types = MON_TYPES(TYPE_WATER), \ - .catchRate = 45, \ - .evYield_HP = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 40, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_WATER_2),\ - .abilities = { ABILITY_ZERO_TO_HERO, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Palafin"), \ - .natDexNum = NATIONAL_DEX_PALAFIN, \ - .pokemonScale = 356, \ - .pokemonOffset = 17, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .frontAnimFrames = sAnims_Palafin, \ - LEARNSETS(Palafin), \ - .formSpeciesIdTable = sPalafinFormSpeciesIdTable, \ - .formChangeTable = sPalafinZeroFormChangeTable - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //FOOTPRINT(Palafin) - [SPECIES_PALAFIN_ZERO] = { - PALAFIN_MISC_INFO, .baseHP = 100, .baseAttack = 70, .baseDefense = 72, .baseSpeed = 100, .baseSpAttack = 53, .baseSpDefense = 62, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 45, .expYield = 160, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_WATER_2), + .abilities = { ABILITY_ZERO_TO_HERO, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Palafin"), .cryId = CRY_PALAFIN_ZERO, + .natDexNum = NATIONAL_DEX_PALAFIN, .categoryName = _("Dolphin"), .height = 13, .weight = 602, @@ -2956,26 +3401,52 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = "appearance if it hears its allies calling for\n" "help. Palafin will never show\n" "anybody its moment of transformation."), - FRONT_PIC(PalafinZero, 64, 64), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PalafinZero, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 7, - BACK_PIC(PalafinZero, 64, 64), + .frontAnimFrames = sAnims_Palafin, + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ + .backPic = gMonBackPic_PalafinZero, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 15, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PalafinZero), - ICON(PalafinZero, 0), + .palette = gMonPalette_PalafinZero, + .shinyPalette = gMonShinyPalette_PalafinZero, + .iconSprite = gMonIcon_PalafinZero, + .iconPalIndex = 0, + /*FOOTPRINT(Palafin)*/ + .levelUpLearnset = sPalafinLevelUpLearnset, + .teachableLearnset = sPalafinTeachableLearnset, + .formSpeciesIdTable = sPalafinFormSpeciesIdTable, + .formChangeTable = sPalafinZeroFormChangeTable, }, [SPECIES_PALAFIN_HERO] = { - PALAFIN_MISC_INFO, .baseHP = 100, .baseAttack = 160, .baseDefense = 97, .baseSpeed = 100, .baseSpAttack = 106, .baseSpDefense = 87, + .types = MON_TYPES(TYPE_WATER), + .catchRate = 45, .expYield = 228, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_WATER_2), + .abilities = { ABILITY_ZERO_TO_HERO, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Palafin"), .cryId = CRY_PALAFIN_HERO, + .natDexNum = NATIONAL_DEX_PALAFIN, .categoryName = _("Hero"), .height = 18, .weight = 974, @@ -2984,13 +3455,28 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = "awakened. It is now so\n" "extraordinarily strong that it can easily lift a\n" "cruise ship with one fin."), - FRONT_PIC(PalafinHero, 64, 64), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_PalafinHero, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, - BACK_PIC(PalafinHero, 64, 64), + .frontAnimFrames = sAnims_Palafin, + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ + .backPic = gMonBackPic_PalafinHero, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(PalafinHero), - ICON(PalafinHero, 0), + .palette = gMonPalette_PalafinHero, + .shinyPalette = gMonShinyPalette_PalafinHero, + .iconSprite = gMonIcon_PalafinHero, + .iconPalIndex = 0, + /*FOOTPRINT(Palafin)*/ + .levelUpLearnset = sPalafinLevelUpLearnset, + .teachableLearnset = sPalafinTeachableLearnset, + .formSpeciesIdTable = sPalafinFormSpeciesIdTable, + .formChangeTable = sPalafinZeroFormChangeTable, }, #endif //P_FAMILY_FINIZEN @@ -3029,17 +3515,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Varoom, 64, 64), + .frontPic = gMonFrontPic_Varoom, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Varoom, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Varoom, 64, 64), + .backPic = gMonBackPic_Varoom, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Varoom), - ICON(Varoom, 5), + .palette = gMonPalette_Varoom, + .shinyPalette = gMonShinyPalette_Varoom, + .iconSprite = gMonIcon_Varoom, + .iconPalIndex = 5, //FOOTPRINT(Varoom) - LEARNSETS(Varoom), + .levelUpLearnset = sVaroomLevelUpLearnset, + .teachableLearnset = sVaroomTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_REVAVROOM}), }, @@ -3077,17 +3568,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Revavroom, 64, 64), + .frontPic = gMonFrontPic_Revavroom, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 8, .frontAnimFrames = sAnims_Revavroom, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Revavroom, 64, 64), + .backPic = gMonBackPic_Revavroom, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 16, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Revavroom), - ICON(Revavroom, 5), + .palette = gMonPalette_Revavroom, + .shinyPalette = gMonShinyPalette_Revavroom, + .iconSprite = gMonIcon_Revavroom, + .iconPalIndex = 5, //FOOTPRINT(Revavroom) - LEARNSETS(Revavroom), + .levelUpLearnset = sRevavroomLevelUpLearnset, + .teachableLearnset = sRevavroomTeachableLearnset, }, #endif //P_FAMILY_VAROOM @@ -3126,17 +3622,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cyclizar, 64, 64), + .frontPic = gMonFrontPic_Cyclizar, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Cyclizar, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Cyclizar, 64, 64), + .backPic = gMonBackPic_Cyclizar, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Cyclizar), - ICON(Cyclizar, 1), + .palette = gMonPalette_Cyclizar, + .shinyPalette = gMonShinyPalette_Cyclizar, + .iconSprite = gMonIcon_Cyclizar, + .iconPalIndex = 1, //FOOTPRINT(Cyclizar) - LEARNSETS(Cyclizar), + .levelUpLearnset = sCyclizarLevelUpLearnset, + .teachableLearnset = sCyclizarTeachableLearnset, }, #endif //P_FAMILY_CYCLIZAR @@ -3175,17 +3676,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Orthworm, 64, 64), + .frontPic = gMonFrontPic_Orthworm, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Orthworm, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Orthworm, 64, 64), + .backPic = gMonBackPic_Orthworm, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Orthworm), - ICON(Orthworm, 4), + .palette = gMonPalette_Orthworm, + .shinyPalette = gMonShinyPalette_Orthworm, + .iconSprite = gMonIcon_Orthworm, + .iconPalIndex = 4, //FOOTPRINT(Orthworm) - LEARNSETS(Orthworm), + .levelUpLearnset = sOrthwormLevelUpLearnset, + .teachableLearnset = sOrthwormTeachableLearnset, }, #endif //P_FAMILY_ORTHWORM @@ -3224,18 +3730,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Glimmet, 64, 64), + .frontPic = gMonFrontPic_Glimmet, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 16, .frontAnimFrames = sAnims_Glimmet, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 11, - BACK_PIC(Glimmet, 64, 64), + .backPic = gMonBackPic_Glimmet, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Glimmet), - ICON(Glimmet, 0), + .palette = gMonPalette_Glimmet, + .shinyPalette = gMonShinyPalette_Glimmet, + .iconSprite = gMonIcon_Glimmet, + .iconPalIndex = 0, //FOOTPRINT(Glimmet) - LEARNSETS(Glimmet), + .levelUpLearnset = sGlimmetLevelUpLearnset, + .teachableLearnset = sGlimmetTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_GLIMMORA}), }, @@ -3273,18 +3784,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Glimmora, 64, 64), + .frontPic = gMonFrontPic_Glimmora, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Glimmora, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 8, - BACK_PIC(Glimmora, 64, 64), + .backPic = gMonBackPic_Glimmora, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Glimmora), - ICON(Glimmora, 0), + .palette = gMonPalette_Glimmora, + .shinyPalette = gMonShinyPalette_Glimmora, + .iconSprite = gMonIcon_Glimmora, + .iconPalIndex = 0, //FOOTPRINT(Glimmora) - LEARNSETS(Glimmora), + .levelUpLearnset = sGlimmoraLevelUpLearnset, + .teachableLearnset = sGlimmoraTeachableLearnset, }, #endif //P_FAMILY_GLIMMET @@ -3323,17 +3839,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Greavard, 64, 64), + .frontPic = gMonFrontPic_Greavard, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 6, .frontAnimFrames = sAnims_Greavard, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Greavard, 64, 64), + .backPic = gMonBackPic_Greavard, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Greavard), - ICON(Greavard, 2), + .palette = gMonPalette_Greavard, + .shinyPalette = gMonShinyPalette_Greavard, + .iconSprite = gMonIcon_Greavard, + .iconPalIndex = 2, //FOOTPRINT(Greavard) - LEARNSETS(Greavard), + .levelUpLearnset = sGreavardLevelUpLearnset, + .teachableLearnset = sGreavardTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 30, SPECIES_HOUNDSTONE}), }, @@ -3371,17 +3892,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Houndstone, 64, 64), + .frontPic = gMonFrontPic_Houndstone, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Houndstone, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Houndstone, 64, 64), + .backPic = gMonBackPic_Houndstone, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Houndstone), - ICON(Houndstone, 5), + .palette = gMonPalette_Houndstone, + .shinyPalette = gMonShinyPalette_Houndstone, + .iconSprite = gMonIcon_Houndstone, + .iconPalIndex = 5, //FOOTPRINT(Houndstone) - LEARNSETS(Houndstone), + .levelUpLearnset = sHoundstoneLevelUpLearnset, + .teachableLearnset = sHoundstoneTeachableLearnset, }, #endif //P_FAMILY_GREAVARD @@ -3420,17 +3946,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Flamigo, 64, 64), + .frontPic = gMonFrontPic_Flamigo, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Flamigo, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Flamigo, 64, 64), + .backPic = gMonBackPic_Flamigo, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Flamigo), - ICON(Flamigo, 4), + .palette = gMonPalette_Flamigo, + .shinyPalette = gMonShinyPalette_Flamigo, + .iconSprite = gMonIcon_Flamigo, + .iconPalIndex = 4, //FOOTPRINT(Flamigo) - LEARNSETS(Flamigo), + .levelUpLearnset = sFlamigoLevelUpLearnset, + .teachableLearnset = sFlamigoTeachableLearnset, }, #endif //P_FAMILY_FLAMIGO @@ -3469,17 +4000,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cetoddle, 64, 64), + .frontPic = gMonFrontPic_Cetoddle, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 14, .frontAnimFrames = sAnims_Cetoddle, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Cetoddle, 64, 64), + .backPic = gMonBackPic_Cetoddle, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 16, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Cetoddle), - ICON(Cetoddle, 0), + .palette = gMonPalette_Cetoddle, + .shinyPalette = gMonShinyPalette_Cetoddle, + .iconSprite = gMonIcon_Cetoddle, + .iconPalIndex = 0, //FOOTPRINT(Cetoddle) - LEARNSETS(Cetoddle), + .levelUpLearnset = sCetoddleLevelUpLearnset, + .teachableLearnset = sCetoddleTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_CETITAN}), }, @@ -3517,17 +4053,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Cetitan, 64, 64), + .frontPic = gMonFrontPic_Cetitan, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_Cetitan, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Cetitan, 64, 64), + .backPic = gMonBackPic_Cetitan, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Cetitan), - ICON(Cetitan, 0), + .palette = gMonPalette_Cetitan, + .shinyPalette = gMonShinyPalette_Cetitan, + .iconSprite = gMonIcon_Cetitan, + .iconPalIndex = 0, //FOOTPRINT(Cetitan) - LEARNSETS(Cetitan), + .levelUpLearnset = sCetitanLevelUpLearnset, + .teachableLearnset = sCetitanTeachableLearnset, }, #endif //P_FAMILY_CETODDLE @@ -3566,18 +4107,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Veluza, 64, 64), + .frontPic = gMonFrontPic_Veluza, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 11, .frontAnimFrames = sAnims_Veluza, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 5, - BACK_PIC(Veluza, 64, 64), + .backPic = gMonBackPic_Veluza, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Veluza), - ICON(Veluza, 4), + .palette = gMonPalette_Veluza, + .shinyPalette = gMonShinyPalette_Veluza, + .iconSprite = gMonIcon_Veluza, + .iconPalIndex = 4, //FOOTPRINT(Veluza) - LEARNSETS(Veluza), + .levelUpLearnset = sVeluzaLevelUpLearnset, + .teachableLearnset = sVeluzaTeachableLearnset, }, #endif //P_FAMILY_VELUZA @@ -3616,101 +4162,182 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Dondozo, 64, 64), + .frontPic = gMonFrontPic_Dondozo, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 4, .frontAnimFrames = sAnims_Dondozo, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 1, - BACK_PIC(Dondozo, 64, 64), + .backPic = gMonBackPic_Dondozo, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Dondozo), - ICON(Dondozo, 0), + .palette = gMonPalette_Dondozo, + .shinyPalette = gMonShinyPalette_Dondozo, + .iconSprite = gMonIcon_Dondozo, + .iconPalIndex = 0, //FOOTPRINT(Dondozo) - LEARNSETS(Dondozo), + .levelUpLearnset = sDondozoLevelUpLearnset, + .teachableLearnset = sDondozoTeachableLearnset, }, #endif //P_FAMILY_DONDOZO #if P_FAMILY_TATSUGIRI -#define TATSUGIRI_MISC_INFO \ - .baseHP = 68, \ - .baseAttack = 50, \ - .baseDefense = 60, \ - .baseSpeed = 82, \ - .baseSpAttack = 120, \ - .baseSpDefense = 95, \ - .types = MON_TYPES(TYPE_DRAGON, TYPE_WATER), \ - .catchRate = 100, \ - .expYield = 166, \ - .evYield_SpAttack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 35, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), \ - .abilities = { ABILITY_COMMANDER, ABILITY_NONE, ABILITY_STORM_DRAIN }, \ - .speciesName = _("Tatsugiri"), \ - .natDexNum = NATIONAL_DEX_TATSUGIRI, \ - .categoryName = _("Mimicry"), \ - .height = 3, \ - .weight = 80, \ - .pokemonScale = 356, \ - .pokemonOffset = 17, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .frontPicYOffset = 14, \ - .frontAnimFrames = sAnims_Tatsugiri, \ - .backPicYOffset = 17, \ - LEARNSETS(Tatsugiri), \ - .formSpeciesIdTable = sTatsugiriFormSpeciesIdTable - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //.backAnimId = BACK_ANIM_NONE, - //FOOTPRINT(Tatsugiri) - [SPECIES_TATSUGIRI_CURLY] = { - TATSUGIRI_MISC_INFO, + .baseHP = 68, + .baseAttack = 50, + .baseDefense = 60, + .baseSpeed = 82, + .baseSpAttack = 120, + .baseSpDefense = 95, + .types = MON_TYPES(TYPE_DRAGON, TYPE_WATER), + .catchRate = 100, + .expYield = 166, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), + .abilities = { ABILITY_COMMANDER, ABILITY_NONE, ABILITY_STORM_DRAIN }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Tatsugiri"), .cryId = CRY_TATSUGIRI_CURLY, + .natDexNum = NATIONAL_DEX_TATSUGIRI, + .categoryName = _("Mimicry"), + .height = 3, + .weight = 80, .description = COMPOUND_STRING( "This is a small dragon Pokémon. It\n" "lives inside the mouth of Dondozo to\n" "protect itself from enemies on the\n" "outside."), - FRONT_PIC(TatsugiriCurly, 64, 64), - BACK_PIC(TatsugiriCurly, 64, 64), - PALETTES(TatsugiriCurly), - ICON(TatsugiriCurly, 0), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_TatsugiriCurly, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Tatsugiri, + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ + .backPic = gMonBackPic_TatsugiriCurly, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 17, + /*.backAnimId = BACK_ANIM_NONE,*/ + .palette = gMonPalette_TatsugiriCurly, + .shinyPalette = gMonShinyPalette_TatsugiriCurly, + .iconSprite = gMonIcon_TatsugiriCurly, + .iconPalIndex = 0, + /*FOOTPRINT(Tatsugiri)*/ + .levelUpLearnset = sTatsugiriLevelUpLearnset, + .teachableLearnset = sTatsugiriTeachableLearnset, + .formSpeciesIdTable = sTatsugiriFormSpeciesIdTable, }, [SPECIES_TATSUGIRI_DROOPY] = { - TATSUGIRI_MISC_INFO, + .baseHP = 68, + .baseAttack = 50, + .baseDefense = 60, + .baseSpeed = 82, + .baseSpAttack = 120, + .baseSpDefense = 95, + .types = MON_TYPES(TYPE_DRAGON, TYPE_WATER), + .catchRate = 100, + .expYield = 166, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), + .abilities = { ABILITY_COMMANDER, ABILITY_NONE, ABILITY_STORM_DRAIN }, .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Tatsugiri"), .cryId = CRY_TATSUGIRI_DROOPY, + .natDexNum = NATIONAL_DEX_TATSUGIRI, + .categoryName = _("Mimicry"), + .height = 3, + .weight = 80, .description = COMPOUND_STRING( "This Pokémon tricks its opponents\n" "by playing dead. It is small and\n" "weak, but it uses its smarts to survive."), - FRONT_PIC(TatsugiriDroopy, 64, 64), - BACK_PIC(TatsugiriDroopy, 64, 64), - PALETTES(TatsugiriDroopy), - ICON(TatsugiriDroopy, 0), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_TatsugiriDroopy, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Tatsugiri, + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ + .backPic = gMonBackPic_TatsugiriDroopy, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 17, + /*.backAnimId = BACK_ANIM_NONE,*/ + .palette = gMonPalette_TatsugiriDroopy, + .shinyPalette = gMonShinyPalette_TatsugiriDroopy, + .iconSprite = gMonIcon_TatsugiriDroopy, + .iconPalIndex = 0, + /*FOOTPRINT(Tatsugiri)*/ + .levelUpLearnset = sTatsugiriLevelUpLearnset, + .teachableLearnset = sTatsugiriTeachableLearnset, + .formSpeciesIdTable = sTatsugiriFormSpeciesIdTable, }, [SPECIES_TATSUGIRI_STRETCHY] = { - TATSUGIRI_MISC_INFO, + .baseHP = 68, + .baseAttack = 50, + .baseDefense = 60, + .baseSpeed = 82, + .baseSpAttack = 120, + .baseSpDefense = 95, + .types = MON_TYPES(TYPE_DRAGON, TYPE_WATER), + .catchRate = 100, + .expYield = 166, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), + .abilities = { ABILITY_COMMANDER, ABILITY_NONE, ABILITY_STORM_DRAIN }, .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Tatsugiri"), .cryId = CRY_TATSUGIRI_STRETCHY, + .natDexNum = NATIONAL_DEX_TATSUGIRI, + .categoryName = _("Mimicry"), + .height = 3, + .weight = 80, .description = COMPOUND_STRING( "It's one of the most intelligent\n" "dragon Pokémon. It camouflages itself\n" "by inflating its throat sac."), - FRONT_PIC(TatsugiriStretchy, 64, 64), - BACK_PIC(TatsugiriStretchy, 64, 64), - PALETTES(TatsugiriStretchy), - ICON(TatsugiriStretchy, 0), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_TatsugiriStretchy, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Tatsugiri, + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ + .backPic = gMonBackPic_TatsugiriStretchy, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 17, + /*.backAnimId = BACK_ANIM_NONE,*/ + .palette = gMonPalette_TatsugiriStretchy, + .shinyPalette = gMonShinyPalette_TatsugiriStretchy, + .iconSprite = gMonIcon_TatsugiriStretchy, + .iconPalIndex = 0, + /*FOOTPRINT(Tatsugiri)*/ + .levelUpLearnset = sTatsugiriLevelUpLearnset, + .teachableLearnset = sTatsugiriTeachableLearnset, + .formSpeciesIdTable = sTatsugiriFormSpeciesIdTable, }, #endif //P_FAMILY_TATSUGIRI @@ -3734,7 +4361,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, - .isParadoxForm = TRUE, .speciesName = _("Great Tusk"), .cryId = CRY_GREAT_TUSK, .natDexNum = NATIONAL_DEX_GREAT_TUSK, @@ -3750,17 +4376,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(GreatTusk, 64, 64), + .frontPic = gMonFrontPic_GreatTusk, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_GreatTusk, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(GreatTusk, 64, 64), + .backPic = gMonBackPic_GreatTusk, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(GreatTusk), - ICON(GreatTusk, 0), + .palette = gMonPalette_GreatTusk, + .shinyPalette = gMonShinyPalette_GreatTusk, + .iconSprite = gMonIcon_GreatTusk, + .iconPalIndex = 0, //FOOTPRINT(GreatTusk) - LEARNSETS(GreatTusk), + .isParadoxForm = TRUE, + .levelUpLearnset = sGreatTuskLevelUpLearnset, + .teachableLearnset = sGreatTuskTeachableLearnset, }, #endif //P_FAMILY_GREAT_TUSK @@ -3784,7 +4416,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, .bodyColor = BODY_COLOR_PINK, - .isParadoxForm = TRUE, .speciesName = _("ScreamTail"), .cryId = CRY_SCREAM_TAIL, .natDexNum = NATIONAL_DEX_SCREAM_TAIL, @@ -3800,17 +4431,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(ScreamTail, 64, 64), + .frontPic = gMonFrontPic_ScreamTail, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 10, .frontAnimFrames = sAnims_ScreamTail, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ScreamTail, 64, 64), + .backPic = gMonBackPic_ScreamTail, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 10, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ScreamTail), - ICON(ScreamTail, 0), + .palette = gMonPalette_ScreamTail, + .shinyPalette = gMonShinyPalette_ScreamTail, + .iconSprite = gMonIcon_ScreamTail, + .iconPalIndex = 0, //FOOTPRINT(ScreamTail) - LEARNSETS(ScreamTail), + .isParadoxForm = TRUE, + .levelUpLearnset = sScreamTailLevelUpLearnset, + .teachableLearnset = sScreamTailTeachableLearnset, }, #endif //P_FAMILY_SCREAM_TAIL @@ -3834,7 +4471,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, - .isParadoxForm = TRUE, .speciesName = _("BruteBonet"), .cryId = CRY_BRUTE_BONNET, .natDexNum = NATIONAL_DEX_BRUTE_BONNET, @@ -3850,17 +4486,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(BruteBonnet, 64, 64), + .frontPic = gMonFrontPic_BruteBonnet, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 7, .frontAnimFrames = sAnims_BruteBonnet, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(BruteBonnet, 64, 64), + .backPic = gMonBackPic_BruteBonnet, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, - PALETTES(BruteBonnet), - ICON(BruteBonnet, 1), + .palette = gMonPalette_BruteBonnet, + .shinyPalette = gMonShinyPalette_BruteBonnet, + .iconSprite = gMonIcon_BruteBonnet, + .iconPalIndex = 1, //FOOTPRINT(BruteBonnet) - LEARNSETS(BruteBonnet), + .isParadoxForm = TRUE, + .levelUpLearnset = sBruteBonnetLevelUpLearnset, + .teachableLearnset = sBruteBonnetTeachableLearnset, }, #endif //P_FAMILY_BRUTE_BONNET @@ -3886,7 +4528,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, - .isParadoxForm = TRUE, .speciesName = _("FluttrMane"), .cryId = CRY_FLUTTER_MANE, .natDexNum = NATIONAL_DEX_FLUTTER_MANE, @@ -3902,18 +4543,24 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(FlutterMane, 64, 64), + .frontPic = gMonFrontPic_FlutterMane, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 8, .frontAnimFrames = sAnims_FlutterMane, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 18, - BACK_PIC(FlutterMane, 64, 64), + .backPic = gMonBackPic_FlutterMane, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, - PALETTES(FlutterMane), - ICON(FlutterMane, 4), + .palette = gMonPalette_FlutterMane, + .shinyPalette = gMonShinyPalette_FlutterMane, + .iconSprite = gMonIcon_FlutterMane, + .iconPalIndex = 4, //FOOTPRINT(FlutterMane) - LEARNSETS(FlutterMane), + .isParadoxForm = TRUE, + .levelUpLearnset = sFlutterManeLevelUpLearnset, + .teachableLearnset = sFlutterManeTeachableLearnset, }, #endif //P_FAMILY_FLUTTER_MANE @@ -3937,7 +4584,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, - .isParadoxForm = TRUE, .speciesName = _("SlithrWing"), .cryId = CRY_SLITHER_WING, .natDexNum = NATIONAL_DEX_SLITHER_WING, @@ -3952,17 +4598,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(SlitherWing, 64, 64), + .frontPic = gMonFrontPic_SlitherWing, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_SlitherWing, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SlitherWing, 64, 64), + .backPic = gMonBackPic_SlitherWing, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(SlitherWing), - ICON(SlitherWing, 3), + .palette = gMonPalette_SlitherWing, + .shinyPalette = gMonShinyPalette_SlitherWing, + .iconSprite = gMonIcon_SlitherWing, + .iconPalIndex = 3, //FOOTPRINT(SlitherWing) - LEARNSETS(SlitherWing), + .isParadoxForm = TRUE, + .levelUpLearnset = sSlitherWingLevelUpLearnset, + .teachableLearnset = sSlitherWingTeachableLearnset, }, #endif //P_FAMILY_SLITHER_WING @@ -3986,7 +4638,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, - .isParadoxForm = TRUE, .speciesName = _("SndyShocks"), .cryId = CRY_SANDY_SHOCKS, .natDexNum = NATIONAL_DEX_SANDY_SHOCKS, @@ -4002,17 +4653,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(SandyShocks, 64, 64), + .frontPic = gMonFrontPic_SandyShocks, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_SandyShocks, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(SandyShocks, 64, 64), + .backPic = gMonBackPic_SandyShocks, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(SandyShocks), - ICON(SandyShocks, 0), + .palette = gMonPalette_SandyShocks, + .shinyPalette = gMonShinyPalette_SandyShocks, + .iconSprite = gMonIcon_SandyShocks, + .iconPalIndex = 0, //FOOTPRINT(SandyShocks) - LEARNSETS(SandyShocks), + .isParadoxForm = TRUE, + .levelUpLearnset = sSandyShocksLevelUpLearnset, + .teachableLearnset = sSandyShocksTeachableLearnset, }, #endif //P_FAMILY_SANDY_SHOCKS @@ -4036,7 +4693,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, - .isParadoxForm = TRUE, .speciesName = _("IronTreads"), .cryId = CRY_IRON_TREADS, .natDexNum = NATIONAL_DEX_IRON_TREADS, @@ -4052,17 +4708,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(IronTreads, 64, 64), + .frontPic = gMonFrontPic_IronTreads, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_IronTreads, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(IronTreads, 64, 64), + .backPic = gMonBackPic_IronTreads, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(IronTreads), - ICON(IronTreads, 0), + .palette = gMonPalette_IronTreads, + .shinyPalette = gMonShinyPalette_IronTreads, + .iconSprite = gMonIcon_IronTreads, + .iconPalIndex = 0, //FOOTPRINT(IronTreads) - LEARNSETS(IronTreads), + .isParadoxForm = TRUE, + .levelUpLearnset = sIronTreadsLevelUpLearnset, + .teachableLearnset = sIronTreadsTeachableLearnset, }, #endif //P_FAMILY_IRON_TREADS @@ -4086,7 +4748,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, - .isParadoxForm = TRUE, .speciesName = _("IronBundle"), .cryId = CRY_IRON_BUNDLE, .natDexNum = NATIONAL_DEX_IRON_BUNDLE, @@ -4102,17 +4763,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(IronBundle, 64, 64), + .frontPic = gMonFrontPic_IronBundle, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 8, .frontAnimFrames = sAnims_IronBundle, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(IronBundle, 64, 64), + .backPic = gMonBackPic_IronBundle, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(IronBundle), - ICON(IronBundle, 0), + .palette = gMonPalette_IronBundle, + .shinyPalette = gMonShinyPalette_IronBundle, + .iconSprite = gMonIcon_IronBundle, + .iconPalIndex = 0, //FOOTPRINT(IronBundle) - LEARNSETS(IronBundle), + .isParadoxForm = TRUE, + .levelUpLearnset = sIronBundleLevelUpLearnset, + .teachableLearnset = sIronBundleTeachableLearnset, }, #endif //P_FAMILY_IRON_BUNDLE @@ -4136,7 +4803,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, - .isParadoxForm = TRUE, .speciesName = _("Iron Hands"), .cryId = CRY_IRON_HANDS, .natDexNum = NATIONAL_DEX_IRON_HANDS, @@ -4152,17 +4818,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(IronHands, 64, 64), + .frontPic = gMonFrontPic_IronHands, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_IronHands, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(IronHands, 64, 64), + .backPic = gMonBackPic_IronHands, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 10, //.backAnimId = BACK_ANIM_NONE, - PALETTES(IronHands), - ICON(IronHands, 0), + .palette = gMonPalette_IronHands, + .shinyPalette = gMonShinyPalette_IronHands, + .iconSprite = gMonIcon_IronHands, + .iconPalIndex = 0, //FOOTPRINT(IronHands) - LEARNSETS(IronHands), + .isParadoxForm = TRUE, + .levelUpLearnset = sIronHandsLevelUpLearnset, + .teachableLearnset = sIronHandsTeachableLearnset, }, #endif //P_FAMILY_IRON_HANDS @@ -4186,7 +4858,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, - .isParadoxForm = TRUE, .speciesName = _("IronJuguls"), .cryId = CRY_IRON_JUGULIS, .natDexNum = NATIONAL_DEX_IRON_JUGULIS, @@ -4202,18 +4873,24 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(IronJugulis, 64, 64), + .frontPic = gMonFrontPic_IronJugulis, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_IronJugulis, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 7, - BACK_PIC(IronJugulis, 64, 64), + .backPic = gMonBackPic_IronJugulis, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(IronJugulis), - ICON(IronJugulis, 2), + .palette = gMonPalette_IronJugulis, + .shinyPalette = gMonShinyPalette_IronJugulis, + .iconSprite = gMonIcon_IronJugulis, + .iconPalIndex = 2, //FOOTPRINT(IronJugulis) - LEARNSETS(IronJugulis), + .isParadoxForm = TRUE, + .levelUpLearnset = sIronJugulisLevelUpLearnset, + .teachableLearnset = sIronJugulisTeachableLearnset, }, #endif //P_FAMILY_IRON_JUGULIS @@ -4237,7 +4914,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, - .isParadoxForm = TRUE, .speciesName = _("Iron Moth"), .cryId = CRY_IRON_MOTH, .natDexNum = NATIONAL_DEX_IRON_MOTH, @@ -4253,18 +4929,24 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(IronMoth, 64, 64), + .frontPic = gMonFrontPic_IronMoth, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 7, .frontAnimFrames = sAnims_IronMoth, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 8, - BACK_PIC(IronMoth, 64, 64), + .backPic = gMonBackPic_IronMoth, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(IronMoth), - ICON(IronMoth, 3), + .palette = gMonPalette_IronMoth, + .shinyPalette = gMonShinyPalette_IronMoth, + .iconSprite = gMonIcon_IronMoth, + .iconPalIndex = 3, //FOOTPRINT(IronMoth) - LEARNSETS(IronMoth), + .isParadoxForm = TRUE, + .levelUpLearnset = sIronMothLevelUpLearnset, + .teachableLearnset = sIronMothTeachableLearnset, }, #endif //P_FAMILY_IRON_MOTH @@ -4288,7 +4970,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, - .isParadoxForm = TRUE, .speciesName = _("IronThorns"), .cryId = CRY_IRON_THORNS, .natDexNum = NATIONAL_DEX_IRON_THORNS, @@ -4304,17 +4985,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(IronThorns, 64, 64), + .frontPic = gMonFrontPic_IronThorns, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_IronThorns, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(IronThorns, 64, 64), + .backPic = gMonBackPic_IronThorns, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(IronThorns), - ICON(IronThorns, 1), + .palette = gMonPalette_IronThorns, + .shinyPalette = gMonShinyPalette_IronThorns, + .iconSprite = gMonIcon_IronThorns, + .iconPalIndex = 1, //FOOTPRINT(IronThorns) - LEARNSETS(IronThorns), + .isParadoxForm = TRUE, + .levelUpLearnset = sIronThornsLevelUpLearnset, + .teachableLearnset = sIronThornsTeachableLearnset, }, #endif //P_FAMILY_IRON_THORNS @@ -4353,17 +5040,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Frigibax, 64, 64), + .frontPic = gMonFrontPic_Frigibax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 7, .frontAnimFrames = sAnims_Frigibax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Frigibax, 64, 64), + .backPic = gMonBackPic_Frigibax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 11, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Frigibax), - ICON(Frigibax, 3), + .palette = gMonPalette_Frigibax, + .shinyPalette = gMonShinyPalette_Frigibax, + .iconSprite = gMonIcon_Frigibax, + .iconPalIndex = 3, //FOOTPRINT(Frigibax) - LEARNSETS(Frigibax), + .levelUpLearnset = sFrigibaxLevelUpLearnset, + .teachableLearnset = sFrigibaxTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_ARCTIBAX}), }, @@ -4401,17 +5093,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Arctibax, 64, 64), + .frontPic = gMonFrontPic_Arctibax, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Arctibax, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Arctibax, 64, 64), + .backPic = gMonBackPic_Arctibax, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Arctibax), - ICON(Arctibax, 0), + .palette = gMonPalette_Arctibax, + .shinyPalette = gMonShinyPalette_Arctibax, + .iconSprite = gMonIcon_Arctibax, + .iconPalIndex = 0, //FOOTPRINT(Arctibax) - LEARNSETS(Arctibax), + .levelUpLearnset = sArctibaxLevelUpLearnset, + .teachableLearnset = sArctibaxTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 54, SPECIES_BAXCALIBUR}), }, @@ -4449,53 +5146,48 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Baxcalibur, 64, 64), + .frontPic = gMonFrontPic_Baxcalibur, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Baxcalibur, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Baxcalibur, 64, 64), + .backPic = gMonBackPic_Baxcalibur, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Baxcalibur), - ICON(Baxcalibur, 0), + .palette = gMonPalette_Baxcalibur, + .shinyPalette = gMonShinyPalette_Baxcalibur, + .iconSprite = gMonIcon_Baxcalibur, + .iconPalIndex = 0, //FOOTPRINT(Baxcalibur) - LEARNSETS(Baxcalibur), + .levelUpLearnset = sBaxcaliburLevelUpLearnset, + .teachableLearnset = sBaxcaliburTeachableLearnset, }, #endif //P_FAMILY_FRIGIBAX #if P_FAMILY_GIMMIGHOUL -#define GIMMIGHOUL_MISC_INFO \ - .types = MON_TYPES(TYPE_GHOST), \ - .catchRate = 45, \ - .expYield = 60, \ - .evYield_SpAttack = 1, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 50, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .speciesName = _("Gimmighoul"), \ - .cryId = CRY_GIMMIGHOUL, \ - .natDexNum = NATIONAL_DEX_GIMMIGHOUL, \ - .frontAnimFrames = sAnims_Gimmighoul, \ - LEARNSETS(Gimmighoul), \ - .formSpeciesIdTable = sGimmighoulFormSpeciesIdTable, \ - .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_GHOLDENGO}) - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //.backAnimId = BACK_ANIM_NONE, - //FOOTPRINT(Gimmighoul) - [SPECIES_GIMMIGHOUL_CHEST] = { - GIMMIGHOUL_MISC_INFO, .baseHP = 45, .baseAttack = 30, .baseDefense = 70, .baseSpeed = 10, .baseSpAttack = 75, .baseSpDefense = 70, + .types = MON_TYPES(TYPE_GHOST), + .catchRate = 45, + .expYield = 60, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_RATTLED, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Gimmighoul"), + .cryId = CRY_GIMMIGHOUL, + .natDexNum = NATIONAL_DEX_GIMMIGHOUL, .categoryName = _("Coin Chest"), .height = 3, .weight = 50, @@ -4508,25 +5200,48 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(GimmighoulChest, 64, 64), + .frontPic = gMonFrontPic_GimmighoulChest, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, - BACK_PIC(GimmighoulChest, 64, 64), + .frontAnimFrames = sAnims_Gimmighoul, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_GimmighoulChest, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, - PALETTES(GimmighoulChest), - ICON(GimmighoulChest, 0), + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_GimmighoulChest, + .shinyPalette = gMonShinyPalette_GimmighoulChest, + .iconSprite = gMonIcon_GimmighoulChest, + .iconPalIndex = 0, + //FOOTPRINT(Gimmighoul) + .levelUpLearnset = sGimmighoulLevelUpLearnset, + .teachableLearnset = sGimmighoulTeachableLearnset, + .formSpeciesIdTable = sGimmighoulFormSpeciesIdTable, + .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_GHOLDENGO}), }, [SPECIES_GIMMIGHOUL_ROAMING] = { - GIMMIGHOUL_MISC_INFO, .baseHP = 45, .baseAttack = 30, .baseDefense = 25, .baseSpeed = 80, .baseSpAttack = 75, .baseSpDefense = 45, + .types = MON_TYPES(TYPE_GHOST), + .catchRate = 45, + .expYield = 60, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_RUN_AWAY, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Gimmighoul"), + .cryId = CRY_GIMMIGHOUL, + .natDexNum = NATIONAL_DEX_GIMMIGHOUL, .categoryName = _("Coin Hunter"), .height = 1, .weight = 1, @@ -4539,12 +5254,24 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(GimmighoulRoaming, 64, 64), + .frontPic = gMonFrontPic_GimmighoulRoaming, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 11, - BACK_PIC(GimmighoulRoaming, 64, 64), + .frontAnimFrames = sAnims_Gimmighoul, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_GimmighoulRoaming, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, - PALETTES(GimmighoulRoaming), - ICON(GimmighoulRoaming, 0), + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_GimmighoulRoaming, + .shinyPalette = gMonShinyPalette_GimmighoulRoaming, + .iconSprite = gMonIcon_GimmighoulRoaming, + .iconPalIndex = 0, + //FOOTPRINT(Gimmighoul) + .levelUpLearnset = sGimmighoulLevelUpLearnset, + .teachableLearnset = sGimmighoulTeachableLearnset, + .formSpeciesIdTable = sGimmighoulFormSpeciesIdTable, + .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_GHOLDENGO}), }, [SPECIES_GHOLDENGO] = @@ -4581,17 +5308,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Gholdengo, 64, 64), + .frontPic = gMonFrontPic_Gholdengo, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Gholdengo, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Gholdengo, 64, 64), + .backPic = gMonBackPic_Gholdengo, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Gholdengo), - ICON(Gholdengo, 0), + .palette = gMonPalette_Gholdengo, + .shinyPalette = gMonShinyPalette_Gholdengo, + .iconSprite = gMonIcon_Gholdengo, + .iconPalIndex = 0, //FOOTPRINT(Gholdengo) - LEARNSETS(Gholdengo), + .levelUpLearnset = sGholdengoLevelUpLearnset, + .teachableLearnset = sGholdengoTeachableLearnset, }, #endif //P_FAMILY_GIMMIGHOUL @@ -4615,7 +5347,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_TABLETS_OF_RUIN, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, - .isLegendary = TRUE, .speciesName = _("Wo-Chien"), .cryId = CRY_WO_CHIEN, .natDexNum = NATIONAL_DEX_WO_CHIEN, @@ -4631,17 +5362,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(WoChien, 64, 64), + .frontPic = gMonFrontPic_WoChien, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_WoChien, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(WoChien, 64, 64), + .backPic = gMonBackPic_WoChien, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 10, //.backAnimId = BACK_ANIM_NONE, - PALETTES(WoChien), - ICON(WoChien, 5), + .palette = gMonPalette_WoChien, + .shinyPalette = gMonShinyPalette_WoChien, + .iconSprite = gMonIcon_WoChien, + .iconPalIndex = 5, //FOOTPRINT(WoChien) - LEARNSETS(WoChien), + .isLegendary = TRUE, + .levelUpLearnset = sWoChienLevelUpLearnset, + .teachableLearnset = sWoChienTeachableLearnset, }, #endif //P_FAMILY_WO_CHIEN @@ -4665,7 +5402,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_SWORD_OF_RUIN, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, - .isLegendary = TRUE, .speciesName = _("Chien-Pao"), .cryId = CRY_CHIEN_PAO, .natDexNum = NATIONAL_DEX_CHIEN_PAO, @@ -4681,17 +5417,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(ChienPao, 64, 64), + .frontPic = gMonFrontPic_ChienPao, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_ChienPao, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(ChienPao, 64, 64), + .backPic = gMonBackPic_ChienPao, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ChienPao), - ICON(ChienPao, 0), + .palette = gMonPalette_ChienPao, + .shinyPalette = gMonShinyPalette_ChienPao, + .iconSprite = gMonIcon_ChienPao, + .iconPalIndex = 0, //FOOTPRINT(ChienPao) - LEARNSETS(ChienPao), + .isLegendary = TRUE, + .levelUpLearnset = sChienPaoLevelUpLearnset, + .teachableLearnset = sChienPaoTeachableLearnset, }, #endif //P_FAMILY_CHIEN_PAO @@ -4715,7 +5457,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_VESSEL_OF_RUIN, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, - .isLegendary = TRUE, .speciesName = _("Ting-Lu"), .cryId = CRY_TING_LU, .natDexNum = NATIONAL_DEX_TING_LU, @@ -4731,17 +5472,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(TingLu, 64, 64), + .frontPic = gMonFrontPic_TingLu, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_TingLu, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(TingLu, 64, 64), + .backPic = gMonBackPic_TingLu, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 5, //.backAnimId = BACK_ANIM_NONE, - PALETTES(TingLu), - ICON(TingLu, 0), + .palette = gMonPalette_TingLu, + .shinyPalette = gMonShinyPalette_TingLu, + .iconSprite = gMonIcon_TingLu, + .iconPalIndex = 0, //FOOTPRINT(TingLu) - LEARNSETS(TingLu), + .isLegendary = TRUE, + .levelUpLearnset = sTingLuLevelUpLearnset, + .teachableLearnset = sTingLuTeachableLearnset, }, #endif //P_FAMILY_TING_LU @@ -4765,7 +5512,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_BEADS_OF_RUIN, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, - .isLegendary = TRUE, .speciesName = _("Chi-Yu"), .cryId = CRY_CHI_YU, .natDexNum = NATIONAL_DEX_CHI_YU, @@ -4781,18 +5527,24 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(ChiYu, 64, 64), + .frontPic = gMonFrontPic_ChiYu, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 10, .frontAnimFrames = sAnims_ChiYu, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 15, - BACK_PIC(ChiYu, 64, 64), + .backPic = gMonBackPic_ChiYu, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 14, //.backAnimId = BACK_ANIM_NONE, - PALETTES(ChiYu), - ICON(ChiYu, 0), + .palette = gMonPalette_ChiYu, + .shinyPalette = gMonShinyPalette_ChiYu, + .iconSprite = gMonIcon_ChiYu, + .iconPalIndex = 0, //FOOTPRINT(ChiYu) - LEARNSETS(ChiYu), + .isLegendary = TRUE, + .levelUpLearnset = sChiYuLevelUpLearnset, + .teachableLearnset = sChiYuTeachableLearnset, }, #endif //P_FAMILY_CHI_YU @@ -4816,7 +5568,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, - .isParadoxForm = TRUE, .speciesName = _("RoarngMoon"), .cryId = CRY_ROARING_MOON, .natDexNum = NATIONAL_DEX_ROARING_MOON, @@ -4832,18 +5583,24 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(RoaringMoon, 64, 64), + .frontPic = gMonFrontPic_RoaringMoon, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_RoaringMoon, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 6, - BACK_PIC(RoaringMoon, 64, 64), + .backPic = gMonBackPic_RoaringMoon, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 7, //.backAnimId = BACK_ANIM_NONE, - PALETTES(RoaringMoon), - ICON(RoaringMoon, 3), + .palette = gMonPalette_RoaringMoon, + .shinyPalette = gMonShinyPalette_RoaringMoon, + .iconSprite = gMonIcon_RoaringMoon, + .iconPalIndex = 3, //FOOTPRINT(RoaringMoon) - LEARNSETS(RoaringMoon), + .isParadoxForm = TRUE, + .levelUpLearnset = sRoaringMoonLevelUpLearnset, + .teachableLearnset = sRoaringMoonTeachableLearnset, }, #endif //P_FAMILY_ROARING_MOON @@ -4867,7 +5624,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, - .isParadoxForm = TRUE, .speciesName = _("IronVliant"), .cryId = CRY_IRON_VALIANT, .natDexNum = NATIONAL_DEX_IRON_VALIANT, @@ -4882,17 +5638,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(IronValiant, 64, 64), + .frontPic = gMonFrontPic_IronValiant, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_IronValiant, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(IronValiant, 64, 64), + .backPic = gMonBackPic_IronValiant, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(IronValiant), - ICON(IronValiant, 4), + .palette = gMonPalette_IronValiant, + .shinyPalette = gMonShinyPalette_IronValiant, + .iconSprite = gMonIcon_IronValiant, + .iconPalIndex = 4, //FOOTPRINT(IronValiant) - LEARNSETS(IronValiant), + .isParadoxForm = TRUE, + .levelUpLearnset = sIronValiantLevelUpLearnset, + .teachableLearnset = sIronValiantTeachableLearnset, }, #endif //P_FAMILY_IRON_VALIANT @@ -4916,8 +5678,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_ORICHALCUM_PULSE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, - .isLegendary = TRUE, - .isParadoxForm = TRUE, .speciesName = _("Koraidon"), .cryId = CRY_KORAIDON, .natDexNum = NATIONAL_DEX_KORAIDON, @@ -4933,17 +5693,24 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Koraidon, 64, 64), + .frontPic = gMonFrontPic_Koraidon, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Koraidon, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Koraidon, 64, 64), + .backPic = gMonBackPic_Koraidon, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Koraidon), - ICON(Koraidon, 0), + .palette = gMonPalette_Koraidon, + .shinyPalette = gMonShinyPalette_Koraidon, + .iconSprite = gMonIcon_Koraidon, + .iconPalIndex = 0, //FOOTPRINT(Koraidon) - LEARNSETS(Koraidon), + .isLegendary = TRUE, + .isParadoxForm = TRUE, + .levelUpLearnset = sKoraidonLevelUpLearnset, + .teachableLearnset = sKoraidonTeachableLearnset, }, #endif //P_FAMILY_KORAIDON @@ -4967,8 +5734,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_HADRON_ENGINE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, - .isLegendary = TRUE, - .isParadoxForm = TRUE, .speciesName = _("Miraidon"), .cryId = CRY_MIRAIDON, .natDexNum = NATIONAL_DEX_MIRAIDON, @@ -4984,17 +5749,24 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Miraidon, 64, 64), + .frontPic = gMonFrontPic_Miraidon, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Miraidon, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Miraidon, 64, 64), + .backPic = gMonBackPic_Miraidon, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Miraidon), - ICON(Miraidon, 2), + .palette = gMonPalette_Miraidon, + .shinyPalette = gMonShinyPalette_Miraidon, + .iconSprite = gMonIcon_Miraidon, + .iconPalIndex = 2, //FOOTPRINT(Miraidon) - LEARNSETS(Miraidon), + .isLegendary = TRUE, + .isParadoxForm = TRUE, + .levelUpLearnset = sMiraidonLevelUpLearnset, + .teachableLearnset = sMiraidonTeachableLearnset, }, #endif //P_FAMILY_MIRAIDON @@ -5018,7 +5790,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, - .isParadoxForm = TRUE, .speciesName = _("WalkngWake"), .cryId = CRY_WALKING_WAKE, .natDexNum = NATIONAL_DEX_WALKING_WAKE, @@ -5033,17 +5804,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(WalkingWake, 64, 64), + .frontPic = gMonFrontPic_WalkingWake, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_WalkingWake, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(WalkingWake, 64, 64), + .backPic = gMonBackPic_WalkingWake, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, - PALETTES(WalkingWake), - ICON(WalkingWake, 2), + .palette = gMonPalette_WalkingWake, + .shinyPalette = gMonShinyPalette_WalkingWake, + .iconSprite = gMonIcon_WalkingWake, + .iconPalIndex = 2, //FOOTPRINT(WalkingWake) - LEARNSETS(WalkingWake), + .isParadoxForm = TRUE, + .levelUpLearnset = sWalkingWakeLevelUpLearnset, + .teachableLearnset = sWalkingWakeTeachableLearnset, }, #endif //P_FAMILY_WALKING_WAKE @@ -5067,7 +5844,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, - .isParadoxForm = TRUE, .speciesName = _("IronLeaves"), .cryId = CRY_IRON_LEAVES, .natDexNum = NATIONAL_DEX_IRON_LEAVES, @@ -5082,141 +5858,237 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(IronLeaves, 64, 64), + .frontPic = gMonFrontPic_IronLeaves, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_IronLeaves, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(IronLeaves, 64, 64), + .backPic = gMonBackPic_IronLeaves, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 8, //.backAnimId = BACK_ANIM_NONE, - PALETTES(IronLeaves), - ICON(IronLeaves, 1), + .palette = gMonPalette_IronLeaves, + .shinyPalette = gMonShinyPalette_IronLeaves, + .iconSprite = gMonIcon_IronLeaves, + .iconPalIndex = 1, //FOOTPRINT(IronLeaves) - LEARNSETS(IronLeaves), + .isParadoxForm = TRUE, + .levelUpLearnset = sIronLeavesLevelUpLearnset, + .teachableLearnset = sIronLeavesTeachableLearnset, }, #endif //P_FAMILY_IRON_LEAVES #if P_FAMILY_POLTCHAGEIST -#define POLTCHAGEIST_MISC_INFO \ - .baseHP = 40, \ - .baseAttack = 45, \ - .baseDefense = 45, \ - .baseSpeed = 50, \ - .baseSpAttack = 74, \ - .baseSpDefense = 54, \ - .types = MON_TYPES(TYPE_GRASS, TYPE_GHOST), \ - .catchRate = 120, \ - .expYield = 62, \ - .evYield_SpAttack = 1, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), \ - .abilities = { ABILITY_HOSPITALITY, ABILITY_NONE, ABILITY_HEATPROOF }, \ - .bodyColor = BODY_COLOR_GREEN, \ - .speciesName = _("Ptchageist"), \ - .cryId = CRY_POLTCHAGEIST, \ - .natDexNum = NATIONAL_DEX_POLTCHAGEIST, \ - .categoryName = _("Matcha"), \ - .height = 1, \ - .weight = 11, \ - .pokemonScale = 356, \ - .pokemonOffset = 17, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FRONT_PIC(Poltchageist, 64, 64), \ - .frontPicYOffset = 7, \ - .frontAnimFrames = sAnims_Poltchageist, \ - .enemyMonElevation = 10, \ - BACK_PIC(Poltchageist, 64, 64), \ - .backPicYOffset = 5, \ - PALETTES(Poltchageist), \ - ICON(Poltchageist, 4), \ - LEARNSETS(Poltchageist) - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //.backAnimId = BACK_ANIM_NONE, - //FOOTPRINT(Poltchageist) - [SPECIES_POLTCHAGEIST_COUNTERFEIT] = { - POLTCHAGEIST_MISC_INFO, + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 45, + .baseSpeed = 50, + .baseSpAttack = 74, + .baseSpDefense = 54, + .types = MON_TYPES(TYPE_GRASS, TYPE_GHOST), + .catchRate = 120, + .expYield = 62, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_HOSPITALITY, ABILITY_NONE, ABILITY_HEATPROOF }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Ptchageist"), + .cryId = CRY_POLTCHAGEIST, + .natDexNum = NATIONAL_DEX_POLTCHAGEIST, + .categoryName = _("Matcha"), + .height = 1, + .weight = 11, .description = COMPOUND_STRING( "Supposedly, the regrets of a tea\n" "ceremony master who died before\n" "perfecting his craft lingered in some\n" "matcha and became a Pokémon."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Poltchageist, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Poltchageist, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 10, + .backPic = gMonBackPic_Poltchageist, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Poltchageist, + .shinyPalette = gMonShinyPalette_Poltchageist, + .iconSprite = gMonIcon_Poltchageist, + .iconPalIndex = 4, + //FOOTPRINT(Poltchageist) + .levelUpLearnset = sPoltchageistLevelUpLearnset, + .teachableLearnset = sPoltchageistTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_UNREMARKABLE_TEACUP, SPECIES_SINISTCHA_UNREMARKABLE}), }, [SPECIES_POLTCHAGEIST_ARTISAN] = { - POLTCHAGEIST_MISC_INFO, + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 45, + .baseSpeed = 50, + .baseSpAttack = 74, + .baseSpDefense = 54, + .types = MON_TYPES(TYPE_GRASS, TYPE_GHOST), + .catchRate = 120, + .expYield = 62, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_HOSPITALITY, ABILITY_NONE, ABILITY_HEATPROOF }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Ptchageist"), + .cryId = CRY_POLTCHAGEIST, + .natDexNum = NATIONAL_DEX_POLTCHAGEIST, + .categoryName = _("Matcha"), + .height = 1, + .weight = 11, .description = COMPOUND_STRING( "It has taken up residence in a very\n" "expensive tea caddy. It takes an\n" "expert to distinguish the expensive\n" "tea caddies from the cheap ones."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Poltchageist, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Poltchageist, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 10, + .backPic = gMonBackPic_Poltchageist, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Poltchageist, + .shinyPalette = gMonShinyPalette_Poltchageist, + .iconSprite = gMonIcon_Poltchageist, + .iconPalIndex = 4, + //FOOTPRINT(Poltchageist) + .levelUpLearnset = sPoltchageistLevelUpLearnset, + .teachableLearnset = sPoltchageistTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MASTERPIECE_TEACUP, SPECIES_SINISTCHA_MASTERPIECE}), }, -#define SINISTCHA_MISC_INFO \ - .baseHP = 71, \ - .baseAttack = 60, \ - .baseDefense = 106, \ - .baseSpeed = 70, \ - .baseSpAttack = 121, \ - .baseSpDefense = 80, \ - .types = MON_TYPES(TYPE_GRASS, TYPE_GHOST), \ - .catchRate = 60, \ - .expYield = 178, \ - .evYield_SpAttack = 2, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), \ - .abilities = { ABILITY_HOSPITALITY, ABILITY_NONE, ABILITY_HEATPROOF }, \ - .bodyColor = BODY_COLOR_GREEN, \ - .speciesName = _("Sinistcha"), \ - .cryId = CRY_SINISTCHA, \ - .natDexNum = NATIONAL_DEX_SINISTCHA, \ - .categoryName = _("Matcha"), \ - .height = 2, \ - .weight = 22, \ - .pokemonScale = 356, \ - .pokemonOffset = 17, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FRONT_PIC(Sinistcha, 64, 64), \ - .frontPicYOffset = 10, \ - .frontAnimFrames = sAnims_Sinistcha, \ - .enemyMonElevation = 10, \ - BACK_PIC(Sinistcha, 64, 64), \ - .backPicYOffset = 13, \ - PALETTES(Sinistcha), \ - ICON(Sinistcha, 1), \ - LEARNSETS(Sinistcha) - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //.backAnimId = BACK_ANIM_NONE, - //FOOTPRINT(Sinistcha) - [SPECIES_SINISTCHA_UNREMARKABLE] = { - SINISTCHA_MISC_INFO, + .baseHP = 71, + .baseAttack = 60, + .baseDefense = 106, + .baseSpeed = 70, + .baseSpAttack = 121, + .baseSpDefense = 80, + .types = MON_TYPES(TYPE_GRASS, TYPE_GHOST), + .catchRate = 60, + .expYield = 178, + .evYield_SpAttack = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_HOSPITALITY, ABILITY_NONE, ABILITY_HEATPROOF }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Sinistcha"), + .cryId = CRY_SINISTCHA, + .natDexNum = NATIONAL_DEX_SINISTCHA, + .categoryName = _("Matcha"), + .height = 2, + .weight = 22, .description = COMPOUND_STRING( "It pretends to be tea, trying to fool\n" "people into drinking it so it can\n" "drain their life-force. Its ruse is\n" "generally unsuccessful."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Sinistcha, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Sinistcha, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 10, + .backPic = gMonBackPic_Sinistcha, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Sinistcha, + .shinyPalette = gMonShinyPalette_Sinistcha, + .iconSprite = gMonIcon_Sinistcha, + .iconPalIndex = 1, + //FOOTPRINT(Sinistcha) + .levelUpLearnset = sSinistchaLevelUpLearnset, + .teachableLearnset = sSinistchaTeachableLearnset, }, [SPECIES_SINISTCHA_MASTERPIECE] = { - SINISTCHA_MISC_INFO, + .baseHP = 71, + .baseAttack = 60, + .baseDefense = 106, + .baseSpeed = 70, + .baseSpAttack = 121, + .baseSpDefense = 80, + .types = MON_TYPES(TYPE_GRASS, TYPE_GHOST), + .catchRate = 60, + .expYield = 178, + .evYield_SpAttack = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_HOSPITALITY, ABILITY_NONE, ABILITY_HEATPROOF }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Sinistcha"), + .cryId = CRY_SINISTCHA, + .natDexNum = NATIONAL_DEX_SINISTCHA, + .categoryName = _("Matcha"), + .height = 2, + .weight = 22, .description = COMPOUND_STRING( "The more stirring it does with the\n" "tea whisk on its head, the more\n" "energy it builds up. It does this to\n" "prepare for battle."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Sinistcha, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Sinistcha, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 10, + .backPic = gMonBackPic_Sinistcha, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Sinistcha, + .shinyPalette = gMonShinyPalette_Sinistcha, + .iconSprite = gMonIcon_Sinistcha, + .iconPalIndex = 1, + //FOOTPRINT(Sinistcha) + .levelUpLearnset = sSinistchaLevelUpLearnset, + .teachableLearnset = sSinistchaTeachableLearnset, }, #endif //P_FAMILY_POLTCHAGEIST @@ -5255,18 +6127,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Okidogi, 64, 64), + .frontPic = gMonFrontPic_Okidogi, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 1, .frontAnimFrames = sAnims_Okidogi, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Okidogi, 64, 64), + .backPic = gMonBackPic_Okidogi, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 16, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Okidogi), - ICON(Okidogi, 1), + .palette = gMonPalette_Okidogi, + .shinyPalette = gMonShinyPalette_Okidogi, + .iconSprite = gMonIcon_Okidogi, + .iconPalIndex = 1, //FOOTPRINT(Okidogi) - LEARNSETS(Okidogi), .isLegendary = TRUE, + .levelUpLearnset = sOkidogiLevelUpLearnset, + .teachableLearnset = sOkidogiTeachableLearnset, }, #endif //P_FAMILY_OKIDOGI @@ -5290,7 +6167,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_TOXIC_CHAIN, ABILITY_NONE, ABILITY_FRISK }, .bodyColor = BODY_COLOR_BLACK, - .isLegendary = TRUE, .speciesName = _("Munkidori"), .cryId = CRY_MUNKIDORI, .natDexNum = NATIONAL_DEX_MUNKIDORI, @@ -5306,17 +6182,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Munkidori, 64, 64), + .frontPic = gMonFrontPic_Munkidori, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 5, .frontAnimFrames = sAnims_Munkidori, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Munkidori, 64, 64), + .backPic = gMonBackPic_Munkidori, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Munkidori), - ICON(Munkidori, 0), + .palette = gMonPalette_Munkidori, + .shinyPalette = gMonShinyPalette_Munkidori, + .iconSprite = gMonIcon_Munkidori, + .iconPalIndex = 0, //FOOTPRINT(Munkidori) - LEARNSETS(Munkidori), + .isLegendary = TRUE, + .levelUpLearnset = sMunkidoriLevelUpLearnset, + .teachableLearnset = sMunkidoriTeachableLearnset, }, #endif //P_FAMILY_MUNKIDORI @@ -5340,7 +6222,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_TOXIC_CHAIN, ABILITY_NONE, ABILITY_TECHNICIAN }, .bodyColor = BODY_COLOR_BLACK, - .isLegendary = TRUE, .speciesName = _("Fezndipiti"), .cryId = CRY_FEZANDIPITI, .natDexNum = NATIONAL_DEX_FEZANDIPITI, @@ -5356,17 +6237,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Fezandipiti, 64, 64), + .frontPic = gMonFrontPic_Fezandipiti, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_Fezandipiti, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(Fezandipiti, 64, 64), + .backPic = gMonBackPic_Fezandipiti, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, - PALETTES(Fezandipiti), - ICON(Fezandipiti, 0), + .palette = gMonPalette_Fezandipiti, + .shinyPalette = gMonShinyPalette_Fezandipiti, + .iconSprite = gMonIcon_Fezandipiti, + .iconPalIndex = 0, //FOOTPRINT(Fezandipiti) - LEARNSETS(Fezandipiti), + .isLegendary = TRUE, + .levelUpLearnset = sFezandipitiLevelUpLearnset, + .teachableLearnset = sFezandipitiTeachableLearnset, }, #endif //P_FAMILY_FEZANDIPITI @@ -5401,18 +6288,22 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 17, \ .trainerScale = 256, \ .trainerOffset = 0, \ - FRONT_PIC(Ogerpon##Form, 64, 64), \ + .frontPic = gMonFrontPic_Ogerpon##Form, \ + .frontPicSize = MON_COORDS_SIZE(64, 64), \ .frontPicYOffset = 0, \ .frontAnimFrames = sAnims_Ogerpon, \ /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ \ - BACK_PIC(Ogerpon##Form, 64, 64), \ + .backPic = gMonBackPic_Ogerpon##Form, \ + .backPicSize = MON_COORDS_SIZE(64, 64), \ .backPicYOffset = 16, \ /*.backAnimId = BACK_ANIM_NONE,*/ \ .palette = gMonPalette_Ogerpon##Form, \ .shinyPalette = gMonShinyPalette_Ogerpon##Form, \ - ICON(OgerponTealMask, 1), /* Each form should have its own icon */ \ + .iconSprite = gMonIcon_OgerponTealMask,/* Each form should have its own icon */ \ + .iconPalIndex = 1, \ /*FOOTPRINT(Ogerpon)*/ \ - LEARNSETS(Ogerpon), \ + .levelUpLearnset = sOgerponLevelUpLearnset, \ + .teachableLearnset = sOgerponTeachableLearnset, \ .formSpeciesIdTable = sOgerponFormSpeciesIdTable, \ .formChangeTable = sOgerponFormChangeTable, \ .isLegendary = TRUE, \ @@ -5451,7 +6342,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, - .isParadoxForm = TRUE, .speciesName = _("GouginFire"), .cryId = CRY_GOUGING_FIRE, .natDexNum = NATIONAL_DEX_GOUGING_FIRE, @@ -5467,17 +6357,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 0, .trainerScale = 345, .trainerOffset = 7, - FRONT_PIC(GougingFire, 64, 64), + .frontPic = gMonFrontPic_GougingFire, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_GougingFire, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(GougingFire, 64, 64), + .backPic = gMonBackPic_GougingFire, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 6, .backAnimId = BACK_ANIM_NONE, - PALETTES(GougingFire), - //ICON(GougingFire, 0), + .palette = gMonPalette_GougingFire, + .shinyPalette = gMonShinyPalette_GougingFire, + //.iconSprite = gMonIcon_GougingFire, + //.iconPalIndex = 0, //FOOTPRINT(GougingFire) - LEARNSETS(GougingFire), + .isParadoxForm = TRUE, + .levelUpLearnset = sGougingFireLevelUpLearnset, + .teachableLearnset = sGougingFireTeachableLearnset, }, #endif //P_FAMILY_GOUGING_FIRE @@ -5501,7 +6397,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, - .isParadoxForm = TRUE, .speciesName = _("RagingBolt"), .cryId = CRY_RAGING_BOLT, .natDexNum = NATIONAL_DEX_RAGING_BOLT, @@ -5517,17 +6412,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 0, .trainerScale = 345, .trainerOffset = 7, - FRONT_PIC(RagingBolt, 64, 64), + .frontPic = gMonFrontPic_RagingBolt, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_RagingBolt, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(RagingBolt, 64, 64), + .backPic = gMonBackPic_RagingBolt, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, .backAnimId = BACK_ANIM_NONE, - PALETTES(RagingBolt), - //ICON(RagingBolt, 0), + .palette = gMonPalette_RagingBolt, + .shinyPalette = gMonShinyPalette_RagingBolt, + //.iconSprite = gMonIcon_RagingBolt, + //.iconPalIndex = 0, //FOOTPRINT(RagingBolt) - LEARNSETS(RagingBolt), + .isParadoxForm = TRUE, + .levelUpLearnset = sRagingBoltLevelUpLearnset, + .teachableLearnset = sRagingBoltTeachableLearnset, }, #endif //P_FAMILY_RAGING_BOLT @@ -5551,7 +6452,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, - .isParadoxForm = TRUE, .speciesName = _("IronBouldr"), .cryId = CRY_IRON_BOULDER, .natDexNum = NATIONAL_DEX_IRON_BOULDER, @@ -5566,17 +6466,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 1, .trainerScale = 336, .trainerOffset = 4, - FRONT_PIC(IronBoulder, 64, 64), + .frontPic = gMonFrontPic_IronBoulder, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 3, .frontAnimFrames = sAnims_IronBoulder, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(IronBoulder, 64, 64), + .backPic = gMonBackPic_IronBoulder, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 12, .backAnimId = BACK_ANIM_NONE, - PALETTES(IronBoulder), - //ICON(IronBoulder, 0), + .palette = gMonPalette_IronBoulder, + .shinyPalette = gMonShinyPalette_IronBoulder, + //.iconSprite = gMonIcon_IronBoulder, + //.iconPalIndex = 0, //FOOTPRINT(IronBoulder) - LEARNSETS(IronBoulder), + .isParadoxForm = TRUE, + .levelUpLearnset = sIronBoulderLevelUpLearnset, + .teachableLearnset = sIronBoulderTeachableLearnset, }, #endif //P_FAMILY_IRON_BOULDER @@ -5600,7 +6506,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, - .isParadoxForm = TRUE, .speciesName = _("Iron Crown"), .cryId = CRY_IRON_CROWN, .natDexNum = NATIONAL_DEX_IRON_CROWN, @@ -5616,52 +6521,50 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 0, .trainerScale = 365, .trainerOffset = 7, - FRONT_PIC(IronCrown, 64, 64), + .frontPic = gMonFrontPic_IronCrown, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_IronCrown, .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - BACK_PIC(IronCrown, 64, 64), + .backPic = gMonBackPic_IronCrown, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 2, .backAnimId = BACK_ANIM_NONE, - PALETTES(IronCrown), - //ICON(IronCrown, 0), + .palette = gMonPalette_IronCrown, + .shinyPalette = gMonShinyPalette_IronCrown, + //.iconSprite = gMonIcon_IronCrown, + //.iconPalIndex = 0, //FOOTPRINT(IronCrown) - LEARNSETS(IronCrown), + .isParadoxForm = TRUE, + .levelUpLearnset = sIronCrownLevelUpLearnset, + .teachableLearnset = sIronCrownTeachableLearnset, }, #endif //P_FAMILY_IRON_CROWN #if P_FAMILY_TERAPAGOS -#define TERAPAGOS_MISC_INFO \ - .types = MON_TYPES(TYPE_NORMAL), \ - .catchRate = 255, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 5, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .bodyColor = BODY_COLOR_BLUE, \ - .speciesName = _("Terapagos"), \ - .cryId = CRY_TERAPAGOS, \ - .natDexNum = NATIONAL_DEX_TERAPAGOS, \ - .categoryName = _("Tera"), \ - LEARNSETS(Terapagos), \ - .formSpeciesIdTable = sTerapagosFormSpeciesIdTable, \ - .formChangeTable = sTerapagosFormChangeTable, \ - .isLegendary = TRUE - //FOOTPRINT(Terapagos) - [SPECIES_TERAPAGOS_NORMAL] = { - TERAPAGOS_MISC_INFO, .baseHP = 90, .baseAttack = 65, .baseDefense = 85, .baseSpeed = 60, .baseSpAttack = 65, .baseSpDefense = 85, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 255, .expYield = 90, .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 5, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_TERA_SHIFT, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Terapagos"), + .cryId = CRY_TERAPAGOS, + .natDexNum = NATIONAL_DEX_TERAPAGOS, + .categoryName = _("Tera"), .height = 2, .weight = 65, .description = COMPOUND_STRING( @@ -5673,30 +6576,51 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 0, .trainerScale = 365, .trainerOffset = 7, - //FRONT_PIC(TerapagosNormal, 64, 64), + //.frontPic = gMonFrontPic_TerapagosNormal, + //.frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_TerapagosNormal, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //BACK_PIC(TerapagosNormal, 64, 64), + //.backPic = gMonBackPic_TerapagosNormal, + //.backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - //PALETTES(TerapagosNormal), - //ICON(TerapagosNormal, 0), + //.palette = gMonPalette_TerapagosNormal, + //.shinyPalette = gMonShinyPalette_TerapagosNormal, + //.iconSprite = gMonIcon_TerapagosNormal, + //.iconPalIndex = 0, + //FOOTPRINT(Terapagos) + .isLegendary = TRUE, + .levelUpLearnset = sTerapagosLevelUpLearnset, + .teachableLearnset = sTerapagosTeachableLearnset, + .formSpeciesIdTable = sTerapagosFormSpeciesIdTable, + .formChangeTable = sTerapagosFormChangeTable, }, [SPECIES_TERAPAGOS_TERASTAL] = { - TERAPAGOS_MISC_INFO, .baseHP = 95, .baseAttack = 95, .baseDefense = 110, .baseSpeed = 85, .baseSpAttack = 105, .baseSpDefense = 110, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 255, .expYield = 120, .evYield_Defense = 2, .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 5, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_TERA_SHELL, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Terapagos"), + .cryId = CRY_TERAPAGOS, + .natDexNum = NATIONAL_DEX_TERAPAGOS, + .categoryName = _("Tera"), .height = 3, .weight = 160, .description = COMPOUND_STRING( @@ -5708,29 +6632,50 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 0, .trainerScale = 365, .trainerOffset = 7, - //FRONT_PIC(TerapagosTerastal, 64, 64), + //.frontPic = gMonFrontPic_TerapagosTerastal, + //.frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_TerapagosTerastal, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //BACK_PIC(TerapagosTerastal, 64, 64), + //.backPic = gMonBackPic_TerapagosTerastal, + //.backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - //PALETTES(TerapagosTerastal), - //ICON(TerapagosTerastal, 0), + //.palette = gMonPalette_TerapagosTerastal, + //.shinyPalette = gMonShinyPalette_TerapagosTerastal, + //.iconSprite = gMonIcon_TerapagosTerastal, + //.iconPalIndex = 0, + //FOOTPRINT(Terapagos) + .isLegendary = TRUE, + .levelUpLearnset = sTerapagosLevelUpLearnset, + .teachableLearnset = sTerapagosTeachableLearnset, + .formSpeciesIdTable = sTerapagosFormSpeciesIdTable, + .formChangeTable = sTerapagosFormChangeTable, }, [SPECIES_TERAPAGOS_STELLAR] = { - TERAPAGOS_MISC_INFO, .baseHP = 160, .baseAttack = 105, .baseDefense = 110, .baseSpeed = 85, .baseSpAttack = 130, .baseSpDefense = 110, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 255, .expYield = 140, .evYield_HP = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 5, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_TERAFORM_ZERO, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Terapagos"), + .cryId = CRY_TERAPAGOS, + .natDexNum = NATIONAL_DEX_TERAPAGOS, + .categoryName = _("Tera"), .height = 17, .weight = 770, .description = COMPOUND_STRING( @@ -5742,15 +6687,25 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 0, .trainerScale = 365, .trainerOffset = 7, - //FRONT_PIC(TerapagosStellar, 64, 64), + //.frontPic = gMonFrontPic_TerapagosStellar, + //.frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_TerapagosStellar, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //BACK_PIC(TerapagosStellar, 64, 64), + //.backPic = gMonBackPic_TerapagosStellar, + //.backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - //PALETTES(TerapagosStellar), - //ICON(TerapagosStellar, 0), + //.palette = gMonPalette_TerapagosStellar, + //.shinyPalette = gMonShinyPalette_TerapagosStellar, + //.iconSprite = gMonIcon_TerapagosStellar, + //.iconPalIndex = 0, + //FOOTPRINT(Terapagos) + .isLegendary = TRUE, + .levelUpLearnset = sTerapagosLevelUpLearnset, + .teachableLearnset = sTerapagosTeachableLearnset, + .formSpeciesIdTable = sTerapagosFormSpeciesIdTable, + .formChangeTable = sTerapagosFormChangeTable, }, #endif //P_FAMILY_TERAPAGOS @@ -5774,7 +6729,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_POISON_PUPPETEER, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, - .isMythical = TRUE, .speciesName = _("Pecharunt"), .cryId = CRY_PECHARUNT, .natDexNum = NATIONAL_DEX_PECHARUNT, @@ -5790,17 +6744,23 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 0, .trainerScale = 365, .trainerOffset = 7, - //FRONT_PIC(Pecharunt, 64, 64), + //.frontPic = gMonFrontPic_Pecharunt, + //.frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Pecharunt, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //BACK_PIC(Pecharunt, 64, 64), + //.backPic = gMonBackPic_Pecharunt, + //.backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - //PALETTES(Pecharunt), - //ICON(Pecharunt, 0), + //.palette = gMonPalette_Pecharunt, + //.shinyPalette = gMonShinyPalette_Pecharunt, + //.iconSprite = gMonIcon_Pecharunt, + //.iconPalIndex = 0, //FOOTPRINT(Pecharunt) - LEARNSETS(Pecharunt), + .isMythical = TRUE, + .levelUpLearnset = sPecharuntLevelUpLearnset, + .teachableLearnset = sPecharuntTeachableLearnset, }, #endif //P_FAMILY_PECHARUNT From 15aa9099446ab1e4086e08b95da8a0c44c6ecfec Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 14 Mar 2024 18:02:19 -0300 Subject: [PATCH 49/55] Updated OW_SYNCHRONIZE_NATURE statement in ScriptGiveMonParameterized (#4271) Fixes an issue where the nature of a Deoxys would be randomized even if one was set at the time of calling givemon or the functions related to it. --- src/script_pokemon_util.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c index e02da5b06e..a0bc7d8e16 100644 --- a/src/script_pokemon_util.c +++ b/src/script_pokemon_util.c @@ -299,10 +299,14 @@ u32 ScriptGiveMonParameterized(u16 species, u8 level, u16 item, u8 ball, u8 natu u16 targetSpecies; // check whether to use a specific nature or a random one - if (OW_SYNCHRONIZE_NATURE >= GEN_6 && (gSpeciesInfo[species].eggGroups[0] == EGG_GROUP_NO_EGGS_DISCOVERED || OW_SYNCHRONIZE_NATURE == GEN_7)) - nature = PickWildMonNature(); - else if (nature >= NUM_NATURES) - nature = Random() % NUM_NATURES; + if (nature >= NUM_NATURES) + { + if (OW_SYNCHRONIZE_NATURE >= GEN_6 + && (gSpeciesInfo[species].eggGroups[0] == EGG_GROUP_NO_EGGS_DISCOVERED || OW_SYNCHRONIZE_NATURE == GEN_7)) + nature = PickWildMonNature(); + else + nature = Random() % NUM_NATURES; + } // create a Pokémon with basic data if ((gender == MON_MALE && genderRatio != MON_FEMALE && genderRatio != MON_GENDERLESS) From 7c25db5200916477f147598ff39d644da1b894d6 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sat, 16 Mar 2024 14:38:43 -0300 Subject: [PATCH 50/55] Fill data for placeholder species (#4281) * Absolute IDs * Mothim internal forms * Scatterbug/Spewpa internal forms * Fixed Mothim not having form tables * Totem Alolan Raticate * Moved shared dex text to its own folder * Totem Mimikyu * Added missing empty third-ability fields * Totem Gumshoos + missing totem flags * Renamed files to better match their contents * Fixed Disguise on Totem Mimikyu * Totem Vikavolt/Alolan Marowak + missing Gumshoos form table * Totem Ribombee/Araquanid/Lurantis/Salazzle * Totem Togedemaru/Kommo-O * Partner Pikachu/Eevee * Reintroduced shinyLocked species flag for convenience * Revert "Reintroduced shinyLocked species flag for convenience" This reverts commit 3e07bd378ba6a249effe0aed83a424d0c775f236. --- include/constants/species.h | 1393 ++++++++--------- include/pokemon.h | 1 + src/battle_ai_util.c | 3 +- src/battle_script_commands.c | 7 +- src/battle_z_move.c | 78 +- src/data/pokemon/form_change_tables.h | 6 + src/data/pokemon/form_species_tables.h | 125 ++ src/data/pokemon/species_info.h | 196 +-- .../{gen_1.h => gen_1_families.h} | 260 ++- .../{gen_2.h => gen_2_families.h} | 12 +- .../{gen_3.h => gen_3_families.h} | 52 +- .../{gen_4.h => gen_4_families.h} | 253 +-- .../{gen_5.h => gen_5_families.h} | 168 +- .../{gen_6.h => gen_6_families.h} | 286 ++-- .../{gen_7.h => gen_7_families.h} | 843 +++++++--- .../{gen_8.h => gen_8_families.h} | 56 +- .../{gen_9.h => gen_9_families.h} | 64 +- .../pokemon/species_info/shared_dex_text.h | 282 ++++ src/daycare.c | 7 +- src/pokemon.c | 3 +- src/pokemon_jump.c | 42 +- test/battle/move_effect/rage_fist.c | 6 +- 22 files changed, 2513 insertions(+), 1630 deletions(-) rename src/data/pokemon/species_info/{gen_1.h => gen_1_families.h} (98%) rename src/data/pokemon/species_info/{gen_2.h => gen_2_families.h} (99%) rename src/data/pokemon/species_info/{gen_3.h => gen_3_families.h} (99%) rename src/data/pokemon/species_info/{gen_4.h => gen_4_families.h} (97%) rename src/data/pokemon/species_info/{gen_5.h => gen_5_families.h} (99%) rename src/data/pokemon/species_info/{gen_6.h => gen_6_families.h} (94%) rename src/data/pokemon/species_info/{gen_7.h => gen_7_families.h} (89%) rename src/data/pokemon/species_info/{gen_8.h => gen_8_families.h} (99%) rename src/data/pokemon/species_info/{gen_9.h => gen_9_families.h} (99%) create mode 100644 src/data/pokemon/species_info/shared_dex_text.h diff --git a/include/constants/species.h b/include/constants/species.h index 4f0e86738d..d4dcc82115 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -419,7 +419,8 @@ #define SPECIES_BURMY_PLANT_CLOAK 412 #define SPECIES_WORMADAM SPECIES_WORMADAM_PLANT_CLOAK #define SPECIES_WORMADAM_PLANT_CLOAK 413 -#define SPECIES_MOTHIM 414 +#define SPECIES_MOTHIM SPECIES_MOTHIM_PLANT_CLOAK +#define SPECIES_MOTHIM_PLANT_CLOAK 414 #define SPECIES_COMBEE 415 #define SPECIES_VESPIQUEN 416 #define SPECIES_PACHIRISU 417 @@ -684,8 +685,10 @@ #define SPECIES_FLETCHLING 661 #define SPECIES_FLETCHINDER 662 #define SPECIES_TALONFLAME 663 -#define SPECIES_SCATTERBUG 664 -#define SPECIES_SPEWPA 665 +#define SPECIES_SCATTERBUG SPECIES_SCATTERBUG_ICY_SNOW +#define SPECIES_SCATTERBUG_ICY_SNOW 664 +#define SPECIES_SPEWPA SPECIES_SPEWPA_ICY_SNOW +#define SPECIES_SPEWPA_ICY_SNOW 665 #define SPECIES_VIVILLON SPECIES_VIVILLON_ICY_SNOW #define SPECIES_VIVILLON_ICY_SNOW 666 #define SPECIES_LITLEO 667 @@ -961,441 +964,329 @@ #define SPECIES_OVERQWIL 904 #define SPECIES_ENAMORUS SPECIES_ENAMORUS_INCARNATE #define SPECIES_ENAMORUS_INCARNATE 905 - -#define FORMS_START SPECIES_ENAMORUS_INCARNATE - -// Megas -#define SPECIES_VENUSAUR_MEGA FORMS_START + 1 -#define SPECIES_CHARIZARD_MEGA_X FORMS_START + 2 -#define SPECIES_CHARIZARD_MEGA_Y FORMS_START + 3 -#define SPECIES_BLASTOISE_MEGA FORMS_START + 4 -#define SPECIES_BEEDRILL_MEGA FORMS_START + 5 -#define SPECIES_PIDGEOT_MEGA FORMS_START + 6 -#define SPECIES_ALAKAZAM_MEGA FORMS_START + 7 -#define SPECIES_SLOWBRO_MEGA FORMS_START + 8 -#define SPECIES_GENGAR_MEGA FORMS_START + 9 -#define SPECIES_KANGASKHAN_MEGA FORMS_START + 10 -#define SPECIES_PINSIR_MEGA FORMS_START + 11 -#define SPECIES_GYARADOS_MEGA FORMS_START + 12 -#define SPECIES_AERODACTYL_MEGA FORMS_START + 13 -#define SPECIES_MEWTWO_MEGA_X FORMS_START + 14 -#define SPECIES_MEWTWO_MEGA_Y FORMS_START + 15 -#define SPECIES_AMPHAROS_MEGA FORMS_START + 16 -#define SPECIES_STEELIX_MEGA FORMS_START + 17 -#define SPECIES_SCIZOR_MEGA FORMS_START + 18 -#define SPECIES_HERACROSS_MEGA FORMS_START + 19 -#define SPECIES_HOUNDOOM_MEGA FORMS_START + 20 -#define SPECIES_TYRANITAR_MEGA FORMS_START + 21 -#define SPECIES_SCEPTILE_MEGA FORMS_START + 22 -#define SPECIES_BLAZIKEN_MEGA FORMS_START + 23 -#define SPECIES_SWAMPERT_MEGA FORMS_START + 24 -#define SPECIES_GARDEVOIR_MEGA FORMS_START + 25 -#define SPECIES_SABLEYE_MEGA FORMS_START + 26 -#define SPECIES_MAWILE_MEGA FORMS_START + 27 -#define SPECIES_AGGRON_MEGA FORMS_START + 28 -#define SPECIES_MEDICHAM_MEGA FORMS_START + 29 -#define SPECIES_MANECTRIC_MEGA FORMS_START + 30 -#define SPECIES_SHARPEDO_MEGA FORMS_START + 31 -#define SPECIES_CAMERUPT_MEGA FORMS_START + 32 -#define SPECIES_ALTARIA_MEGA FORMS_START + 33 -#define SPECIES_BANETTE_MEGA FORMS_START + 34 -#define SPECIES_ABSOL_MEGA FORMS_START + 35 -#define SPECIES_GLALIE_MEGA FORMS_START + 36 -#define SPECIES_SALAMENCE_MEGA FORMS_START + 37 -#define SPECIES_METAGROSS_MEGA FORMS_START + 38 -#define SPECIES_LATIAS_MEGA FORMS_START + 39 -#define SPECIES_LATIOS_MEGA FORMS_START + 40 -#define SPECIES_LOPUNNY_MEGA FORMS_START + 41 -#define SPECIES_GARCHOMP_MEGA FORMS_START + 42 -#define SPECIES_LUCARIO_MEGA FORMS_START + 43 -#define SPECIES_ABOMASNOW_MEGA FORMS_START + 44 -#define SPECIES_GALLADE_MEGA FORMS_START + 45 -#define SPECIES_AUDINO_MEGA FORMS_START + 46 -#define SPECIES_DIANCIE_MEGA FORMS_START + 47 - -// Special Mega + Primals -#define SPECIES_RAYQUAZA_MEGA FORMS_START + 48 -#define SPECIES_KYOGRE_PRIMAL FORMS_START + 49 -#define SPECIES_GROUDON_PRIMAL FORMS_START + 50 - -// Alolan Forms -#define SPECIES_RATTATA_ALOLAN FORMS_START + 51 -#define SPECIES_RATICATE_ALOLAN FORMS_START + 52 -#define SPECIES_RAICHU_ALOLAN FORMS_START + 53 -#define SPECIES_SANDSHREW_ALOLAN FORMS_START + 54 -#define SPECIES_SANDSLASH_ALOLAN FORMS_START + 55 -#define SPECIES_VULPIX_ALOLAN FORMS_START + 56 -#define SPECIES_NINETALES_ALOLAN FORMS_START + 57 -#define SPECIES_DIGLETT_ALOLAN FORMS_START + 58 -#define SPECIES_DUGTRIO_ALOLAN FORMS_START + 59 -#define SPECIES_MEOWTH_ALOLAN FORMS_START + 60 -#define SPECIES_PERSIAN_ALOLAN FORMS_START + 61 -#define SPECIES_GEODUDE_ALOLAN FORMS_START + 62 -#define SPECIES_GRAVELER_ALOLAN FORMS_START + 63 -#define SPECIES_GOLEM_ALOLAN FORMS_START + 64 -#define SPECIES_GRIMER_ALOLAN FORMS_START + 65 -#define SPECIES_MUK_ALOLAN FORMS_START + 66 -#define SPECIES_EXEGGUTOR_ALOLAN FORMS_START + 67 -#define SPECIES_MAROWAK_ALOLAN FORMS_START + 68 - -// Galarian Forms -#define SPECIES_MEOWTH_GALARIAN FORMS_START + 69 -#define SPECIES_PONYTA_GALARIAN FORMS_START + 70 -#define SPECIES_RAPIDASH_GALARIAN FORMS_START + 71 -#define SPECIES_SLOWPOKE_GALARIAN FORMS_START + 72 -#define SPECIES_SLOWBRO_GALARIAN FORMS_START + 73 -#define SPECIES_FARFETCHD_GALARIAN FORMS_START + 74 -#define SPECIES_WEEZING_GALARIAN FORMS_START + 75 -#define SPECIES_MR_MIME_GALARIAN FORMS_START + 76 -#define SPECIES_ARTICUNO_GALARIAN FORMS_START + 77 -#define SPECIES_ZAPDOS_GALARIAN FORMS_START + 78 -#define SPECIES_MOLTRES_GALARIAN FORMS_START + 79 -#define SPECIES_SLOWKING_GALARIAN FORMS_START + 80 -#define SPECIES_CORSOLA_GALARIAN FORMS_START + 81 -#define SPECIES_ZIGZAGOON_GALARIAN FORMS_START + 82 -#define SPECIES_LINOONE_GALARIAN FORMS_START + 83 -#define SPECIES_DARUMAKA_GALARIAN FORMS_START + 84 +#define SPECIES_VENUSAUR_MEGA 906 +#define SPECIES_CHARIZARD_MEGA_X 907 +#define SPECIES_CHARIZARD_MEGA_Y 908 +#define SPECIES_BLASTOISE_MEGA 909 +#define SPECIES_BEEDRILL_MEGA 910 +#define SPECIES_PIDGEOT_MEGA 911 +#define SPECIES_ALAKAZAM_MEGA 912 +#define SPECIES_SLOWBRO_MEGA 913 +#define SPECIES_GENGAR_MEGA 914 +#define SPECIES_KANGASKHAN_MEGA 915 +#define SPECIES_PINSIR_MEGA 916 +#define SPECIES_GYARADOS_MEGA 917 +#define SPECIES_AERODACTYL_MEGA 918 +#define SPECIES_MEWTWO_MEGA_X 919 +#define SPECIES_MEWTWO_MEGA_Y 920 +#define SPECIES_AMPHAROS_MEGA 921 +#define SPECIES_STEELIX_MEGA 922 +#define SPECIES_SCIZOR_MEGA 923 +#define SPECIES_HERACROSS_MEGA 924 +#define SPECIES_HOUNDOOM_MEGA 925 +#define SPECIES_TYRANITAR_MEGA 926 +#define SPECIES_SCEPTILE_MEGA 927 +#define SPECIES_BLAZIKEN_MEGA 928 +#define SPECIES_SWAMPERT_MEGA 929 +#define SPECIES_GARDEVOIR_MEGA 930 +#define SPECIES_SABLEYE_MEGA 931 +#define SPECIES_MAWILE_MEGA 932 +#define SPECIES_AGGRON_MEGA 933 +#define SPECIES_MEDICHAM_MEGA 934 +#define SPECIES_MANECTRIC_MEGA 935 +#define SPECIES_SHARPEDO_MEGA 936 +#define SPECIES_CAMERUPT_MEGA 937 +#define SPECIES_ALTARIA_MEGA 938 +#define SPECIES_BANETTE_MEGA 939 +#define SPECIES_ABSOL_MEGA 940 +#define SPECIES_GLALIE_MEGA 941 +#define SPECIES_SALAMENCE_MEGA 942 +#define SPECIES_METAGROSS_MEGA 943 +#define SPECIES_LATIAS_MEGA 944 +#define SPECIES_LATIOS_MEGA 945 +#define SPECIES_LOPUNNY_MEGA 946 +#define SPECIES_GARCHOMP_MEGA 947 +#define SPECIES_LUCARIO_MEGA 948 +#define SPECIES_ABOMASNOW_MEGA 949 +#define SPECIES_GALLADE_MEGA 950 +#define SPECIES_AUDINO_MEGA 951 +#define SPECIES_DIANCIE_MEGA 952 +#define SPECIES_RAYQUAZA_MEGA 953 +#define SPECIES_KYOGRE_PRIMAL 954 +#define SPECIES_GROUDON_PRIMAL 955 +#define SPECIES_RATTATA_ALOLAN 956 +#define SPECIES_RATICATE_ALOLAN 957 +#define SPECIES_RAICHU_ALOLAN 958 +#define SPECIES_SANDSHREW_ALOLAN 959 +#define SPECIES_SANDSLASH_ALOLAN 960 +#define SPECIES_VULPIX_ALOLAN 961 +#define SPECIES_NINETALES_ALOLAN 962 +#define SPECIES_DIGLETT_ALOLAN 963 +#define SPECIES_DUGTRIO_ALOLAN 964 +#define SPECIES_MEOWTH_ALOLAN 965 +#define SPECIES_PERSIAN_ALOLAN 966 +#define SPECIES_GEODUDE_ALOLAN 967 +#define SPECIES_GRAVELER_ALOLAN 968 +#define SPECIES_GOLEM_ALOLAN 969 +#define SPECIES_GRIMER_ALOLAN 970 +#define SPECIES_MUK_ALOLAN 971 +#define SPECIES_EXEGGUTOR_ALOLAN 972 +#define SPECIES_MAROWAK_ALOLAN 973 +#define SPECIES_MEOWTH_GALARIAN 974 +#define SPECIES_PONYTA_GALARIAN 975 +#define SPECIES_RAPIDASH_GALARIAN 976 +#define SPECIES_SLOWPOKE_GALARIAN 977 +#define SPECIES_SLOWBRO_GALARIAN 978 +#define SPECIES_FARFETCHD_GALARIAN 979 +#define SPECIES_WEEZING_GALARIAN 980 +#define SPECIES_MR_MIME_GALARIAN 981 +#define SPECIES_ARTICUNO_GALARIAN 982 +#define SPECIES_ZAPDOS_GALARIAN 983 +#define SPECIES_MOLTRES_GALARIAN 984 +#define SPECIES_SLOWKING_GALARIAN 985 +#define SPECIES_CORSOLA_GALARIAN 986 +#define SPECIES_ZIGZAGOON_GALARIAN 987 +#define SPECIES_LINOONE_GALARIAN 988 +#define SPECIES_DARUMAKA_GALARIAN 989 #define SPECIES_DARMANITAN_GALARIAN SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE -#define SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE FORMS_START + 85 -#define SPECIES_YAMASK_GALARIAN FORMS_START + 86 -#define SPECIES_STUNFISK_GALARIAN FORMS_START + 87 +#define SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE 990 +#define SPECIES_YAMASK_GALARIAN 991 +#define SPECIES_STUNFISK_GALARIAN 992 //Hisuian Forms -#define SPECIES_GROWLITHE_HISUIAN FORMS_START + 88 -#define SPECIES_ARCANINE_HISUIAN FORMS_START + 89 -#define SPECIES_VOLTORB_HISUIAN FORMS_START + 90 -#define SPECIES_ELECTRODE_HISUIAN FORMS_START + 91 -#define SPECIES_TYPHLOSION_HISUIAN FORMS_START + 92 -#define SPECIES_QWILFISH_HISUIAN FORMS_START + 93 -#define SPECIES_SNEASEL_HISUIAN FORMS_START + 94 -#define SPECIES_SAMUROTT_HISUIAN FORMS_START + 95 -#define SPECIES_LILLIGANT_HISUIAN FORMS_START + 96 -#define SPECIES_ZORUA_HISUIAN FORMS_START + 97 -#define SPECIES_ZOROARK_HISUIAN FORMS_START + 98 -#define SPECIES_BRAVIARY_HISUIAN FORMS_START + 99 -#define SPECIES_SLIGGOO_HISUIAN FORMS_START + 100 -#define SPECIES_GOODRA_HISUIAN FORMS_START + 101 -#define SPECIES_AVALUGG_HISUIAN FORMS_START + 102 -#define SPECIES_DECIDUEYE_HISUIAN FORMS_START + 103 +#define SPECIES_GROWLITHE_HISUIAN 993 +#define SPECIES_ARCANINE_HISUIAN 994 +#define SPECIES_VOLTORB_HISUIAN 995 +#define SPECIES_ELECTRODE_HISUIAN 996 +#define SPECIES_TYPHLOSION_HISUIAN 997 +#define SPECIES_QWILFISH_HISUIAN 998 +#define SPECIES_SNEASEL_HISUIAN 999 +#define SPECIES_SAMUROTT_HISUIAN 1000 +#define SPECIES_LILLIGANT_HISUIAN 1001 +#define SPECIES_ZORUA_HISUIAN 1002 +#define SPECIES_ZOROARK_HISUIAN 1003 +#define SPECIES_BRAVIARY_HISUIAN 1004 +#define SPECIES_SLIGGOO_HISUIAN 1005 +#define SPECIES_GOODRA_HISUIAN 1006 +#define SPECIES_AVALUGG_HISUIAN 1007 +#define SPECIES_DECIDUEYE_HISUIAN 1008 // Misc Forms - -// Cosplay Pikachu -#define SPECIES_PIKACHU_COSPLAY FORMS_START + 104 -#define SPECIES_PIKACHU_ROCK_STAR FORMS_START + 105 -#define SPECIES_PIKACHU_BELLE FORMS_START + 106 -#define SPECIES_PIKACHU_POP_STAR FORMS_START + 107 -#define SPECIES_PIKACHU_PH_D FORMS_START + 108 -#define SPECIES_PIKACHU_LIBRE FORMS_START + 109 - -// Cap Pikachu -#define SPECIES_PIKACHU_ORIGINAL_CAP FORMS_START + 110 -#define SPECIES_PIKACHU_HOENN_CAP FORMS_START + 111 -#define SPECIES_PIKACHU_SINNOH_CAP FORMS_START + 112 -#define SPECIES_PIKACHU_UNOVA_CAP FORMS_START + 113 -#define SPECIES_PIKACHU_KALOS_CAP FORMS_START + 114 -#define SPECIES_PIKACHU_ALOLA_CAP FORMS_START + 115 -#define SPECIES_PIKACHU_PARTNER_CAP FORMS_START + 116 -#define SPECIES_PIKACHU_WORLD_CAP FORMS_START + 117 - -// Pichu -#define SPECIES_PICHU_SPIKY_EARED FORMS_START + 118 - -// Unown -#define SPECIES_UNOWN_B FORMS_START + 119 -#define SPECIES_UNOWN_C FORMS_START + 120 -#define SPECIES_UNOWN_D FORMS_START + 121 -#define SPECIES_UNOWN_E FORMS_START + 122 -#define SPECIES_UNOWN_F FORMS_START + 123 -#define SPECIES_UNOWN_G FORMS_START + 124 -#define SPECIES_UNOWN_H FORMS_START + 125 -#define SPECIES_UNOWN_I FORMS_START + 126 -#define SPECIES_UNOWN_J FORMS_START + 127 -#define SPECIES_UNOWN_K FORMS_START + 128 -#define SPECIES_UNOWN_L FORMS_START + 129 -#define SPECIES_UNOWN_M FORMS_START + 130 -#define SPECIES_UNOWN_N FORMS_START + 131 -#define SPECIES_UNOWN_O FORMS_START + 132 -#define SPECIES_UNOWN_P FORMS_START + 133 -#define SPECIES_UNOWN_Q FORMS_START + 134 -#define SPECIES_UNOWN_R FORMS_START + 135 -#define SPECIES_UNOWN_S FORMS_START + 136 -#define SPECIES_UNOWN_T FORMS_START + 137 -#define SPECIES_UNOWN_U FORMS_START + 138 -#define SPECIES_UNOWN_V FORMS_START + 139 -#define SPECIES_UNOWN_W FORMS_START + 140 -#define SPECIES_UNOWN_X FORMS_START + 141 -#define SPECIES_UNOWN_Y FORMS_START + 142 -#define SPECIES_UNOWN_Z FORMS_START + 143 -#define SPECIES_UNOWN_EMARK FORMS_START + 144 -#define SPECIES_UNOWN_QMARK FORMS_START + 145 - -// Castform -#define SPECIES_CASTFORM_SUNNY FORMS_START + 146 -#define SPECIES_CASTFORM_RAINY FORMS_START + 147 -#define SPECIES_CASTFORM_SNOWY FORMS_START + 148 - -// Deoxys -#define SPECIES_DEOXYS_ATTACK FORMS_START + 149 -#define SPECIES_DEOXYS_DEFENSE FORMS_START + 150 -#define SPECIES_DEOXYS_SPEED FORMS_START + 151 - -// Burmy -#define SPECIES_BURMY_SANDY_CLOAK FORMS_START + 152 -#define SPECIES_BURMY_TRASH_CLOAK FORMS_START + 153 - -// Wormadam -#define SPECIES_WORMADAM_SANDY_CLOAK FORMS_START + 154 -#define SPECIES_WORMADAM_TRASH_CLOAK FORMS_START + 155 - -// Cherrim -#define SPECIES_CHERRIM_SUNSHINE FORMS_START + 156 - -// Shellos -#define SPECIES_SHELLOS_EAST_SEA FORMS_START + 157 - -// Gastrodon -#define SPECIES_GASTRODON_EAST_SEA FORMS_START + 158 - -// Rotom -#define SPECIES_ROTOM_HEAT FORMS_START + 159 -#define SPECIES_ROTOM_WASH FORMS_START + 160 -#define SPECIES_ROTOM_FROST FORMS_START + 161 -#define SPECIES_ROTOM_FAN FORMS_START + 162 -#define SPECIES_ROTOM_MOW FORMS_START + 163 - -// Origin Forme -#define SPECIES_DIALGA_ORIGIN FORMS_START + 164 -#define SPECIES_PALKIA_ORIGIN FORMS_START + 165 -#define SPECIES_GIRATINA_ORIGIN FORMS_START + 166 - -// Shaymin -#define SPECIES_SHAYMIN_SKY FORMS_START + 167 - -// Arceus -#define SPECIES_ARCEUS_FIGHTING FORMS_START + 168 -#define SPECIES_ARCEUS_FLYING FORMS_START + 169 -#define SPECIES_ARCEUS_POISON FORMS_START + 170 -#define SPECIES_ARCEUS_GROUND FORMS_START + 171 -#define SPECIES_ARCEUS_ROCK FORMS_START + 172 -#define SPECIES_ARCEUS_BUG FORMS_START + 173 -#define SPECIES_ARCEUS_GHOST FORMS_START + 174 -#define SPECIES_ARCEUS_STEEL FORMS_START + 175 -#define SPECIES_ARCEUS_FIRE FORMS_START + 176 -#define SPECIES_ARCEUS_WATER FORMS_START + 177 -#define SPECIES_ARCEUS_GRASS FORMS_START + 178 -#define SPECIES_ARCEUS_ELECTRIC FORMS_START + 179 -#define SPECIES_ARCEUS_PSYCHIC FORMS_START + 180 -#define SPECIES_ARCEUS_ICE FORMS_START + 181 -#define SPECIES_ARCEUS_DRAGON FORMS_START + 182 -#define SPECIES_ARCEUS_DARK FORMS_START + 183 -#define SPECIES_ARCEUS_FAIRY FORMS_START + 184 - -// Basculin -#define SPECIES_BASCULIN_BLUE_STRIPED FORMS_START + 185 -#define SPECIES_BASCULIN_WHITE_STRIPED FORMS_START + 186 - -// Darmanitan -#define SPECIES_DARMANITAN_ZEN_MODE FORMS_START + 187 -#define SPECIES_DARMANITAN_GALARIAN_ZEN_MODE FORMS_START + 188 - -// Deerling -#define SPECIES_DEERLING_SUMMER FORMS_START + 189 -#define SPECIES_DEERLING_AUTUMN FORMS_START + 190 -#define SPECIES_DEERLING_WINTER FORMS_START + 191 - -// Sawsbuck -#define SPECIES_SAWSBUCK_SUMMER FORMS_START + 192 -#define SPECIES_SAWSBUCK_AUTUMN FORMS_START + 193 -#define SPECIES_SAWSBUCK_WINTER FORMS_START + 194 - -// Therian Forms -#define SPECIES_TORNADUS_THERIAN FORMS_START + 195 -#define SPECIES_THUNDURUS_THERIAN FORMS_START + 196 -#define SPECIES_LANDORUS_THERIAN FORMS_START + 197 -#define SPECIES_ENAMORUS_THERIAN FORMS_START + 198 - -// Kyurem -#define SPECIES_KYUREM_WHITE FORMS_START + 199 -#define SPECIES_KYUREM_BLACK FORMS_START + 200 - -// Keldeo -#define SPECIES_KELDEO_RESOLUTE FORMS_START + 201 - -// Meloetta -#define SPECIES_MELOETTA_PIROUETTE FORMS_START + 202 - -// Genesect -#define SPECIES_GENESECT_DOUSE_DRIVE FORMS_START + 203 -#define SPECIES_GENESECT_SHOCK_DRIVE FORMS_START + 204 -#define SPECIES_GENESECT_BURN_DRIVE FORMS_START + 205 -#define SPECIES_GENESECT_CHILL_DRIVE FORMS_START + 206 - -// Greninja -#define SPECIES_GRENINJA_BATTLE_BOND FORMS_START + 207 -#define SPECIES_GRENINJA_ASH FORMS_START + 208 - -// Vivillon -#define SPECIES_VIVILLON_POLAR FORMS_START + 209 -#define SPECIES_VIVILLON_TUNDRA FORMS_START + 210 -#define SPECIES_VIVILLON_CONTINENTAL FORMS_START + 211 -#define SPECIES_VIVILLON_GARDEN FORMS_START + 212 -#define SPECIES_VIVILLON_ELEGANT FORMS_START + 213 -#define SPECIES_VIVILLON_MEADOW FORMS_START + 214 -#define SPECIES_VIVILLON_MODERN FORMS_START + 215 -#define SPECIES_VIVILLON_MARINE FORMS_START + 216 -#define SPECIES_VIVILLON_ARCHIPELAGO FORMS_START + 217 -#define SPECIES_VIVILLON_HIGH_PLAINS FORMS_START + 218 -#define SPECIES_VIVILLON_SANDSTORM FORMS_START + 219 -#define SPECIES_VIVILLON_RIVER FORMS_START + 220 -#define SPECIES_VIVILLON_MONSOON FORMS_START + 221 -#define SPECIES_VIVILLON_SAVANNA FORMS_START + 222 -#define SPECIES_VIVILLON_SUN FORMS_START + 223 -#define SPECIES_VIVILLON_OCEAN FORMS_START + 224 -#define SPECIES_VIVILLON_JUNGLE FORMS_START + 225 -#define SPECIES_VIVILLON_FANCY FORMS_START + 226 -#define SPECIES_VIVILLON_POKE_BALL FORMS_START + 227 - -// Flabébé -#define SPECIES_FLABEBE_YELLOW_FLOWER FORMS_START + 228 -#define SPECIES_FLABEBE_ORANGE_FLOWER FORMS_START + 229 -#define SPECIES_FLABEBE_BLUE_FLOWER FORMS_START + 230 -#define SPECIES_FLABEBE_WHITE_FLOWER FORMS_START + 231 - -// Floette -#define SPECIES_FLOETTE_YELLOW_FLOWER FORMS_START + 232 -#define SPECIES_FLOETTE_ORANGE_FLOWER FORMS_START + 233 -#define SPECIES_FLOETTE_BLUE_FLOWER FORMS_START + 234 -#define SPECIES_FLOETTE_WHITE_FLOWER FORMS_START + 235 -#define SPECIES_FLOETTE_ETERNAL_FLOWER FORMS_START + 236 - -// Florges -#define SPECIES_FLORGES_YELLOW_FLOWER FORMS_START + 237 -#define SPECIES_FLORGES_ORANGE_FLOWER FORMS_START + 238 -#define SPECIES_FLORGES_BLUE_FLOWER FORMS_START + 239 -#define SPECIES_FLORGES_WHITE_FLOWER FORMS_START + 240 - -// Furfrou -#define SPECIES_FURFROU_HEART_TRIM FORMS_START + 241 -#define SPECIES_FURFROU_STAR_TRIM FORMS_START + 242 -#define SPECIES_FURFROU_DIAMOND_TRIM FORMS_START + 243 -#define SPECIES_FURFROU_DEBUTANTE_TRIM FORMS_START + 244 -#define SPECIES_FURFROU_MATRON_TRIM FORMS_START + 245 -#define SPECIES_FURFROU_DANDY_TRIM FORMS_START + 246 -#define SPECIES_FURFROU_LA_REINE_TRIM FORMS_START + 247 -#define SPECIES_FURFROU_KABUKI_TRIM FORMS_START + 248 -#define SPECIES_FURFROU_PHARAOH_TRIM FORMS_START + 249 - -// Meowstic -#define SPECIES_MEOWSTIC_FEMALE FORMS_START + 250 - -// Aegislash -#define SPECIES_AEGISLASH_BLADE FORMS_START + 251 - -// Pumpkaboo -#define SPECIES_PUMPKABOO_SMALL FORMS_START + 252 -#define SPECIES_PUMPKABOO_LARGE FORMS_START + 253 -#define SPECIES_PUMPKABOO_SUPER FORMS_START + 254 - -// Gourgeist -#define SPECIES_GOURGEIST_SMALL FORMS_START + 255 -#define SPECIES_GOURGEIST_LARGE FORMS_START + 256 -#define SPECIES_GOURGEIST_SUPER FORMS_START + 257 - -// Xerneas -#define SPECIES_XERNEAS_ACTIVE FORMS_START + 258 - -// Zygarde +#define SPECIES_PIKACHU_COSPLAY 1009 +#define SPECIES_PIKACHU_ROCK_STAR 1010 +#define SPECIES_PIKACHU_BELLE 1011 +#define SPECIES_PIKACHU_POP_STAR 1012 +#define SPECIES_PIKACHU_PH_D 1013 +#define SPECIES_PIKACHU_LIBRE 1014 +#define SPECIES_PIKACHU_ORIGINAL_CAP 1015 +#define SPECIES_PIKACHU_HOENN_CAP 1016 +#define SPECIES_PIKACHU_SINNOH_CAP 1017 +#define SPECIES_PIKACHU_UNOVA_CAP 1018 +#define SPECIES_PIKACHU_KALOS_CAP 1019 +#define SPECIES_PIKACHU_ALOLA_CAP 1020 +#define SPECIES_PIKACHU_PARTNER_CAP 1021 +#define SPECIES_PIKACHU_WORLD_CAP 1022 +#define SPECIES_PICHU_SPIKY_EARED 1023 +#define SPECIES_UNOWN_B 1024 +#define SPECIES_UNOWN_C 1025 +#define SPECIES_UNOWN_D 1026 +#define SPECIES_UNOWN_E 1027 +#define SPECIES_UNOWN_F 1028 +#define SPECIES_UNOWN_G 1029 +#define SPECIES_UNOWN_H 1030 +#define SPECIES_UNOWN_I 1031 +#define SPECIES_UNOWN_J 1032 +#define SPECIES_UNOWN_K 1033 +#define SPECIES_UNOWN_L 1034 +#define SPECIES_UNOWN_M 1035 +#define SPECIES_UNOWN_N 1036 +#define SPECIES_UNOWN_O 1037 +#define SPECIES_UNOWN_P 1038 +#define SPECIES_UNOWN_Q 1039 +#define SPECIES_UNOWN_R 1040 +#define SPECIES_UNOWN_S 1041 +#define SPECIES_UNOWN_T 1042 +#define SPECIES_UNOWN_U 1043 +#define SPECIES_UNOWN_V 1044 +#define SPECIES_UNOWN_W 1045 +#define SPECIES_UNOWN_X 1046 +#define SPECIES_UNOWN_Y 1047 +#define SPECIES_UNOWN_Z 1048 +#define SPECIES_UNOWN_EMARK 1049 +#define SPECIES_UNOWN_QMARK 1050 +#define SPECIES_CASTFORM_SUNNY 1051 +#define SPECIES_CASTFORM_RAINY 1052 +#define SPECIES_CASTFORM_SNOWY 1053 +#define SPECIES_DEOXYS_ATTACK 1054 +#define SPECIES_DEOXYS_DEFENSE 1055 +#define SPECIES_DEOXYS_SPEED 1056 +#define SPECIES_BURMY_SANDY_CLOAK 1057 +#define SPECIES_BURMY_TRASH_CLOAK 1058 +#define SPECIES_WORMADAM_SANDY_CLOAK 1059 +#define SPECIES_WORMADAM_TRASH_CLOAK 1060 +#define SPECIES_CHERRIM_SUNSHINE 1061 +#define SPECIES_SHELLOS_EAST_SEA 1062 +#define SPECIES_GASTRODON_EAST_SEA 1063 +#define SPECIES_ROTOM_HEAT 1064 +#define SPECIES_ROTOM_WASH 1065 +#define SPECIES_ROTOM_FROST 1066 +#define SPECIES_ROTOM_FAN 1067 +#define SPECIES_ROTOM_MOW 1068 +#define SPECIES_DIALGA_ORIGIN 1069 +#define SPECIES_PALKIA_ORIGIN 1070 +#define SPECIES_GIRATINA_ORIGIN 1071 +#define SPECIES_SHAYMIN_SKY 1072 +#define SPECIES_ARCEUS_FIGHTING 1073 +#define SPECIES_ARCEUS_FLYING 1074 +#define SPECIES_ARCEUS_POISON 1075 +#define SPECIES_ARCEUS_GROUND 1076 +#define SPECIES_ARCEUS_ROCK 1077 +#define SPECIES_ARCEUS_BUG 1078 +#define SPECIES_ARCEUS_GHOST 1079 +#define SPECIES_ARCEUS_STEEL 1080 +#define SPECIES_ARCEUS_FIRE 1081 +#define SPECIES_ARCEUS_WATER 1082 +#define SPECIES_ARCEUS_GRASS 1083 +#define SPECIES_ARCEUS_ELECTRIC 1084 +#define SPECIES_ARCEUS_PSYCHIC 1085 +#define SPECIES_ARCEUS_ICE 1086 +#define SPECIES_ARCEUS_DRAGON 1087 +#define SPECIES_ARCEUS_DARK 1088 +#define SPECIES_ARCEUS_FAIRY 1089 +#define SPECIES_BASCULIN_BLUE_STRIPED 1090 +#define SPECIES_BASCULIN_WHITE_STRIPED 1091 +#define SPECIES_DARMANITAN_ZEN_MODE 1092 +#define SPECIES_DARMANITAN_GALARIAN_ZEN_MODE 1093 +#define SPECIES_DEERLING_SUMMER 1094 +#define SPECIES_DEERLING_AUTUMN 1095 +#define SPECIES_DEERLING_WINTER 1096 +#define SPECIES_SAWSBUCK_SUMMER 1097 +#define SPECIES_SAWSBUCK_AUTUMN 1098 +#define SPECIES_SAWSBUCK_WINTER 1099 +#define SPECIES_TORNADUS_THERIAN 1100 +#define SPECIES_THUNDURUS_THERIAN 1101 +#define SPECIES_LANDORUS_THERIAN 1102 +#define SPECIES_ENAMORUS_THERIAN 1103 +#define SPECIES_KYUREM_WHITE 1104 +#define SPECIES_KYUREM_BLACK 1105 +#define SPECIES_KELDEO_RESOLUTE 1106 +#define SPECIES_MELOETTA_PIROUETTE 1107 +#define SPECIES_GENESECT_DOUSE_DRIVE 1108 +#define SPECIES_GENESECT_SHOCK_DRIVE 1109 +#define SPECIES_GENESECT_BURN_DRIVE 1110 +#define SPECIES_GENESECT_CHILL_DRIVE 1111 +#define SPECIES_GRENINJA_BATTLE_BOND 1112 +#define SPECIES_GRENINJA_ASH 1113 +#define SPECIES_VIVILLON_POLAR 1114 +#define SPECIES_VIVILLON_TUNDRA 1115 +#define SPECIES_VIVILLON_CONTINENTAL 1116 +#define SPECIES_VIVILLON_GARDEN 1117 +#define SPECIES_VIVILLON_ELEGANT 1118 +#define SPECIES_VIVILLON_MEADOW 1119 +#define SPECIES_VIVILLON_MODERN 1120 +#define SPECIES_VIVILLON_MARINE 1121 +#define SPECIES_VIVILLON_ARCHIPELAGO 1122 +#define SPECIES_VIVILLON_HIGH_PLAINS 1123 +#define SPECIES_VIVILLON_SANDSTORM 1124 +#define SPECIES_VIVILLON_RIVER 1125 +#define SPECIES_VIVILLON_MONSOON 1126 +#define SPECIES_VIVILLON_SAVANNA 1127 +#define SPECIES_VIVILLON_SUN 1128 +#define SPECIES_VIVILLON_OCEAN 1129 +#define SPECIES_VIVILLON_JUNGLE 1130 +#define SPECIES_VIVILLON_FANCY 1131 +#define SPECIES_VIVILLON_POKE_BALL 1132 +#define SPECIES_FLABEBE_YELLOW_FLOWER 1133 +#define SPECIES_FLABEBE_ORANGE_FLOWER 1134 +#define SPECIES_FLABEBE_BLUE_FLOWER 1135 +#define SPECIES_FLABEBE_WHITE_FLOWER 1136 +#define SPECIES_FLOETTE_YELLOW_FLOWER 1137 +#define SPECIES_FLOETTE_ORANGE_FLOWER 1138 +#define SPECIES_FLOETTE_BLUE_FLOWER 1139 +#define SPECIES_FLOETTE_WHITE_FLOWER 1140 +#define SPECIES_FLOETTE_ETERNAL_FLOWER 1141 +#define SPECIES_FLORGES_YELLOW_FLOWER 1142 +#define SPECIES_FLORGES_ORANGE_FLOWER 1143 +#define SPECIES_FLORGES_BLUE_FLOWER 1144 +#define SPECIES_FLORGES_WHITE_FLOWER 1145 +#define SPECIES_FURFROU_HEART_TRIM 1146 +#define SPECIES_FURFROU_STAR_TRIM 1147 +#define SPECIES_FURFROU_DIAMOND_TRIM 1148 +#define SPECIES_FURFROU_DEBUTANTE_TRIM 1149 +#define SPECIES_FURFROU_MATRON_TRIM 1150 +#define SPECIES_FURFROU_DANDY_TRIM 1151 +#define SPECIES_FURFROU_LA_REINE_TRIM 1152 +#define SPECIES_FURFROU_KABUKI_TRIM 1153 +#define SPECIES_FURFROU_PHARAOH_TRIM 1154 +#define SPECIES_MEOWSTIC_FEMALE 1155 +#define SPECIES_AEGISLASH_BLADE 1156 +#define SPECIES_PUMPKABOO_SMALL 1157 +#define SPECIES_PUMPKABOO_LARGE 1158 +#define SPECIES_PUMPKABOO_SUPER 1159 +#define SPECIES_GOURGEIST_SMALL 1160 +#define SPECIES_GOURGEIST_LARGE 1161 +#define SPECIES_GOURGEIST_SUPER 1162 +#define SPECIES_XERNEAS_ACTIVE 1163 #define SPECIES_ZYGARDE_10 SPECIES_ZYGARDE_10_AURA_BREAK -#define SPECIES_ZYGARDE_10_AURA_BREAK FORMS_START + 259 -#define SPECIES_ZYGARDE_10_POWER_CONSTRUCT FORMS_START + 260 -#define SPECIES_ZYGARDE_50_POWER_CONSTRUCT FORMS_START + 261 -#define SPECIES_ZYGARDE_COMPLETE FORMS_START + 262 - -// Hoopa -#define SPECIES_HOOPA_UNBOUND FORMS_START + 263 - -// Oricorio -#define SPECIES_ORICORIO_POM_POM FORMS_START + 264 -#define SPECIES_ORICORIO_PAU FORMS_START + 265 -#define SPECIES_ORICORIO_SENSU FORMS_START + 266 - -// Rockruff -#define SPECIES_ROCKRUFF_OWN_TEMPO FORMS_START + 267 - -// Lycanroc -#define SPECIES_LYCANROC_MIDNIGHT FORMS_START + 268 -#define SPECIES_LYCANROC_DUSK FORMS_START + 269 - -// Wishiwashi -#define SPECIES_WISHIWASHI_SCHOOL FORMS_START + 270 - -// Silvally -#define SPECIES_SILVALLY_FIGHTING FORMS_START + 271 -#define SPECIES_SILVALLY_FLYING FORMS_START + 272 -#define SPECIES_SILVALLY_POISON FORMS_START + 273 -#define SPECIES_SILVALLY_GROUND FORMS_START + 274 -#define SPECIES_SILVALLY_ROCK FORMS_START + 275 -#define SPECIES_SILVALLY_BUG FORMS_START + 276 -#define SPECIES_SILVALLY_GHOST FORMS_START + 277 -#define SPECIES_SILVALLY_STEEL FORMS_START + 278 -#define SPECIES_SILVALLY_FIRE FORMS_START + 279 -#define SPECIES_SILVALLY_WATER FORMS_START + 280 -#define SPECIES_SILVALLY_GRASS FORMS_START + 281 -#define SPECIES_SILVALLY_ELECTRIC FORMS_START + 282 -#define SPECIES_SILVALLY_PSYCHIC FORMS_START + 283 -#define SPECIES_SILVALLY_ICE FORMS_START + 284 -#define SPECIES_SILVALLY_DRAGON FORMS_START + 285 -#define SPECIES_SILVALLY_DARK FORMS_START + 286 -#define SPECIES_SILVALLY_FAIRY FORMS_START + 287 - -// Minior +#define SPECIES_ZYGARDE_10_AURA_BREAK 1164 +#define SPECIES_ZYGARDE_10_POWER_CONSTRUCT 1165 +#define SPECIES_ZYGARDE_50_POWER_CONSTRUCT 1166 +#define SPECIES_ZYGARDE_COMPLETE 1167 +#define SPECIES_HOOPA_UNBOUND 1168 +#define SPECIES_ORICORIO_POM_POM 1169 +#define SPECIES_ORICORIO_PAU 1170 +#define SPECIES_ORICORIO_SENSU 1171 +#define SPECIES_ROCKRUFF_OWN_TEMPO 1172 +#define SPECIES_LYCANROC_MIDNIGHT 1173 +#define SPECIES_LYCANROC_DUSK 1174 +#define SPECIES_WISHIWASHI_SCHOOL 1175 +#define SPECIES_SILVALLY_FIGHTING 1176 +#define SPECIES_SILVALLY_FLYING 1177 +#define SPECIES_SILVALLY_POISON 1178 +#define SPECIES_SILVALLY_GROUND 1179 +#define SPECIES_SILVALLY_ROCK 1180 +#define SPECIES_SILVALLY_BUG 1181 +#define SPECIES_SILVALLY_GHOST 1182 +#define SPECIES_SILVALLY_STEEL 1183 +#define SPECIES_SILVALLY_FIRE 1184 +#define SPECIES_SILVALLY_WATER 1185 +#define SPECIES_SILVALLY_GRASS 1186 +#define SPECIES_SILVALLY_ELECTRIC 1187 +#define SPECIES_SILVALLY_PSYCHIC 1188 +#define SPECIES_SILVALLY_ICE 1189 +#define SPECIES_SILVALLY_DRAGON 1190 +#define SPECIES_SILVALLY_DARK 1191 +#define SPECIES_SILVALLY_FAIRY 1192 #define SPECIES_MINIOR_ORANGE SPECIES_MINIOR_METEOR_ORANGE #define SPECIES_MINIOR_YELLOW SPECIES_MINIOR_METEOR_YELLOW #define SPECIES_MINIOR_GREEN SPECIES_MINIOR_METEOR_GREEN #define SPECIES_MINIOR_BLUE SPECIES_MINIOR_METEOR_BLUE #define SPECIES_MINIOR_INDIGO SPECIES_MINIOR_METEOR_INDIGO #define SPECIES_MINIOR_VIOLET SPECIES_MINIOR_METEOR_VIOLET -#define SPECIES_MINIOR_METEOR_ORANGE FORMS_START + 288 -#define SPECIES_MINIOR_METEOR_YELLOW FORMS_START + 289 -#define SPECIES_MINIOR_METEOR_GREEN FORMS_START + 290 -#define SPECIES_MINIOR_METEOR_BLUE FORMS_START + 291 -#define SPECIES_MINIOR_METEOR_INDIGO FORMS_START + 292 -#define SPECIES_MINIOR_METEOR_VIOLET FORMS_START + 293 +#define SPECIES_MINIOR_METEOR_ORANGE 1193 +#define SPECIES_MINIOR_METEOR_YELLOW 1194 +#define SPECIES_MINIOR_METEOR_GREEN 1195 +#define SPECIES_MINIOR_METEOR_BLUE 1196 +#define SPECIES_MINIOR_METEOR_INDIGO 1197 +#define SPECIES_MINIOR_METEOR_VIOLET 1198 #define SPECIES_MINIOR_CORE SPECIES_MINIOR_CORE_RED -#define SPECIES_MINIOR_CORE_RED FORMS_START + 294 -#define SPECIES_MINIOR_CORE_ORANGE FORMS_START + 295 -#define SPECIES_MINIOR_CORE_YELLOW FORMS_START + 296 -#define SPECIES_MINIOR_CORE_GREEN FORMS_START + 297 -#define SPECIES_MINIOR_CORE_BLUE FORMS_START + 298 -#define SPECIES_MINIOR_CORE_INDIGO FORMS_START + 299 -#define SPECIES_MINIOR_CORE_VIOLET FORMS_START + 300 - -// Mimikyu -#define SPECIES_MIMIKYU_BUSTED FORMS_START + 301 - -// Necrozma -#define SPECIES_NECROZMA_DUSK_MANE FORMS_START + 302 -#define SPECIES_NECROZMA_DAWN_WINGS FORMS_START + 303 -#define SPECIES_NECROZMA_ULTRA FORMS_START + 304 - -// Magearna -#define SPECIES_MAGEARNA_ORIGINAL_COLOR FORMS_START + 305 - -// Cramorant -#define SPECIES_CRAMORANT_GULPING FORMS_START + 306 -#define SPECIES_CRAMORANT_GORGING FORMS_START + 307 - -// Toxtricity -#define SPECIES_TOXTRICITY_LOW_KEY FORMS_START + 308 - -// Sinistea -#define SPECIES_SINISTEA_ANTIQUE FORMS_START + 309 - -// Polteageist -#define SPECIES_POLTEAGEIST_ANTIQUE FORMS_START + 310 - -// Alcremie +#define SPECIES_MINIOR_CORE_RED 1199 +#define SPECIES_MINIOR_CORE_ORANGE 1200 +#define SPECIES_MINIOR_CORE_YELLOW 1201 +#define SPECIES_MINIOR_CORE_GREEN 1202 +#define SPECIES_MINIOR_CORE_BLUE 1203 +#define SPECIES_MINIOR_CORE_INDIGO 1204 +#define SPECIES_MINIOR_CORE_VIOLET 1205 +#define SPECIES_MIMIKYU_BUSTED 1206 +#define SPECIES_NECROZMA_DUSK_MANE 1207 +#define SPECIES_NECROZMA_DAWN_WINGS 1208 +#define SPECIES_NECROZMA_ULTRA 1209 +#define SPECIES_MAGEARNA_ORIGINAL_COLOR 1210 +#define SPECIES_CRAMORANT_GULPING 1211 +#define SPECIES_CRAMORANT_GORGING 1212 +#define SPECIES_TOXTRICITY_LOW_KEY 1213 +#define SPECIES_SINISTEA_ANTIQUE 1214 +#define SPECIES_POLTEAGEIST_ANTIQUE 1215 #define SPECIES_ALCREMIE_RUBY_CREAM SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM #define SPECIES_ALCREMIE_MATCHA_CREAM SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM #define SPECIES_ALCREMIE_MINT_CREAM SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM @@ -1404,373 +1295,341 @@ #define SPECIES_ALCREMIE_RUBY_SWIRL SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL #define SPECIES_ALCREMIE_CARAMEL_SWIRL SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL #define SPECIES_ALCREMIE_RAINBOW_SWIRL SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL -#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM FORMS_START + 311 -#define SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM FORMS_START + 312 -#define SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM FORMS_START + 313 -#define SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM FORMS_START + 314 -#define SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM FORMS_START + 315 -#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL FORMS_START + 316 -#define SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL FORMS_START + 317 -#define SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL FORMS_START + 318 - -// Eiscue -#define SPECIES_EISCUE_NOICE_FACE FORMS_START + 319 - -// Indeedee -#define SPECIES_INDEEDEE_FEMALE FORMS_START + 320 - -// Morpeko -#define SPECIES_MORPEKO_HANGRY FORMS_START + 321 - -// Zacian -#define SPECIES_ZACIAN_CROWNED_SWORD FORMS_START + 322 - -// Zamazenta -#define SPECIES_ZAMAZENTA_CROWNED_SHIELD FORMS_START + 323 - -// Eternatus -#define SPECIES_ETERNATUS_ETERNAMAX FORMS_START + 324 - -// Urshifu -#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE FORMS_START + 325 - -// Zarude -#define SPECIES_ZARUDE_DADA FORMS_START + 326 - -// Calyrex -#define SPECIES_CALYREX_ICE_RIDER FORMS_START + 327 -#define SPECIES_CALYREX_SHADOW_RIDER FORMS_START + 328 - -// Basculegion -#define SPECIES_BASCULEGION_FEMALE FORMS_START + 329 - -// More Alcremie +#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM 1216 +#define SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM 1217 +#define SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM 1218 +#define SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM 1219 +#define SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM 1220 +#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL 1221 +#define SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL 1222 +#define SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL 1223 +#define SPECIES_EISCUE_NOICE_FACE 1224 +#define SPECIES_INDEEDEE_FEMALE 1225 +#define SPECIES_MORPEKO_HANGRY 1226 +#define SPECIES_ZACIAN_CROWNED_SWORD 1227 +#define SPECIES_ZAMAZENTA_CROWNED_SHIELD 1228 +#define SPECIES_ETERNATUS_ETERNAMAX 1229 +#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE 1230 +#define SPECIES_ZARUDE_DADA 1231 +#define SPECIES_CALYREX_ICE_RIDER 1232 +#define SPECIES_CALYREX_SHADOW_RIDER 1233 +#define SPECIES_BASCULEGION_FEMALE 1234 #define SPECIES_ALCREMIE_BERRY SPECIES_ALCREMIE_BERRY_VANILLA_CREAM -#define SPECIES_ALCREMIE_BERRY_VANILLA_CREAM FORMS_START + 330 -#define SPECIES_ALCREMIE_BERRY_RUBY_CREAM FORMS_START + 331 -#define SPECIES_ALCREMIE_BERRY_MATCHA_CREAM FORMS_START + 332 -#define SPECIES_ALCREMIE_BERRY_MINT_CREAM FORMS_START + 333 -#define SPECIES_ALCREMIE_BERRY_LEMON_CREAM FORMS_START + 334 -#define SPECIES_ALCREMIE_BERRY_SALTED_CREAM FORMS_START + 335 -#define SPECIES_ALCREMIE_BERRY_RUBY_SWIRL FORMS_START + 336 -#define SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL FORMS_START + 337 -#define SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL FORMS_START + 338 +#define SPECIES_ALCREMIE_BERRY_VANILLA_CREAM 1235 +#define SPECIES_ALCREMIE_BERRY_RUBY_CREAM 1236 +#define SPECIES_ALCREMIE_BERRY_MATCHA_CREAM 1237 +#define SPECIES_ALCREMIE_BERRY_MINT_CREAM 1238 +#define SPECIES_ALCREMIE_BERRY_LEMON_CREAM 1239 +#define SPECIES_ALCREMIE_BERRY_SALTED_CREAM 1240 +#define SPECIES_ALCREMIE_BERRY_RUBY_SWIRL 1241 +#define SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL 1242 +#define SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL 1243 #define SPECIES_ALCREMIE_LOVE SPECIES_ALCREMIE_LOVE_VANILLA_CREAM -#define SPECIES_ALCREMIE_LOVE_VANILLA_CREAM FORMS_START + 339 -#define SPECIES_ALCREMIE_LOVE_RUBY_CREAM FORMS_START + 340 -#define SPECIES_ALCREMIE_LOVE_MATCHA_CREAM FORMS_START + 341 -#define SPECIES_ALCREMIE_LOVE_MINT_CREAM FORMS_START + 342 -#define SPECIES_ALCREMIE_LOVE_LEMON_CREAM FORMS_START + 343 -#define SPECIES_ALCREMIE_LOVE_SALTED_CREAM FORMS_START + 344 -#define SPECIES_ALCREMIE_LOVE_RUBY_SWIRL FORMS_START + 345 -#define SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL FORMS_START + 346 -#define SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL FORMS_START + 347 +#define SPECIES_ALCREMIE_LOVE_VANILLA_CREAM 1244 +#define SPECIES_ALCREMIE_LOVE_RUBY_CREAM 1245 +#define SPECIES_ALCREMIE_LOVE_MATCHA_CREAM 1246 +#define SPECIES_ALCREMIE_LOVE_MINT_CREAM 1247 +#define SPECIES_ALCREMIE_LOVE_LEMON_CREAM 1248 +#define SPECIES_ALCREMIE_LOVE_SALTED_CREAM 1249 +#define SPECIES_ALCREMIE_LOVE_RUBY_SWIRL 1250 +#define SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL 1251 +#define SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL 1252 #define SPECIES_ALCREMIE_STAR SPECIES_ALCREMIE_STAR_VANILLA_CREAM -#define SPECIES_ALCREMIE_STAR_VANILLA_CREAM FORMS_START + 348 -#define SPECIES_ALCREMIE_STAR_RUBY_CREAM FORMS_START + 349 -#define SPECIES_ALCREMIE_STAR_MATCHA_CREAM FORMS_START + 350 -#define SPECIES_ALCREMIE_STAR_MINT_CREAM FORMS_START + 351 -#define SPECIES_ALCREMIE_STAR_LEMON_CREAM FORMS_START + 352 -#define SPECIES_ALCREMIE_STAR_SALTED_CREAM FORMS_START + 353 -#define SPECIES_ALCREMIE_STAR_RUBY_SWIRL FORMS_START + 354 -#define SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL FORMS_START + 355 -#define SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL FORMS_START + 356 +#define SPECIES_ALCREMIE_STAR_VANILLA_CREAM 1253 +#define SPECIES_ALCREMIE_STAR_RUBY_CREAM 1254 +#define SPECIES_ALCREMIE_STAR_MATCHA_CREAM 1255 +#define SPECIES_ALCREMIE_STAR_MINT_CREAM 1256 +#define SPECIES_ALCREMIE_STAR_LEMON_CREAM 1257 +#define SPECIES_ALCREMIE_STAR_SALTED_CREAM 1258 +#define SPECIES_ALCREMIE_STAR_RUBY_SWIRL 1259 +#define SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL 1260 +#define SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL 1261 #define SPECIES_ALCREMIE_CLOVER SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM -#define SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM FORMS_START + 357 -#define SPECIES_ALCREMIE_CLOVER_RUBY_CREAM FORMS_START + 358 -#define SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM FORMS_START + 359 -#define SPECIES_ALCREMIE_CLOVER_MINT_CREAM FORMS_START + 360 -#define SPECIES_ALCREMIE_CLOVER_LEMON_CREAM FORMS_START + 361 -#define SPECIES_ALCREMIE_CLOVER_SALTED_CREAM FORMS_START + 362 -#define SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL FORMS_START + 363 -#define SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL FORMS_START + 364 -#define SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL FORMS_START + 365 +#define SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM 1262 +#define SPECIES_ALCREMIE_CLOVER_RUBY_CREAM 1263 +#define SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM 1264 +#define SPECIES_ALCREMIE_CLOVER_MINT_CREAM 1265 +#define SPECIES_ALCREMIE_CLOVER_LEMON_CREAM 1266 +#define SPECIES_ALCREMIE_CLOVER_SALTED_CREAM 1267 +#define SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL 1268 +#define SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL 1269 +#define SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL 1270 #define SPECIES_ALCREMIE_FLOWER SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM -#define SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM FORMS_START + 366 -#define SPECIES_ALCREMIE_FLOWER_RUBY_CREAM FORMS_START + 367 -#define SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM FORMS_START + 368 -#define SPECIES_ALCREMIE_FLOWER_MINT_CREAM FORMS_START + 369 -#define SPECIES_ALCREMIE_FLOWER_LEMON_CREAM FORMS_START + 370 -#define SPECIES_ALCREMIE_FLOWER_SALTED_CREAM FORMS_START + 371 -#define SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL FORMS_START + 372 -#define SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL FORMS_START + 373 -#define SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL FORMS_START + 374 +#define SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM 1271 +#define SPECIES_ALCREMIE_FLOWER_RUBY_CREAM 1272 +#define SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM 1273 +#define SPECIES_ALCREMIE_FLOWER_MINT_CREAM 1274 +#define SPECIES_ALCREMIE_FLOWER_LEMON_CREAM 1275 +#define SPECIES_ALCREMIE_FLOWER_SALTED_CREAM 1276 +#define SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL 1277 +#define SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL 1278 +#define SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL 1279 #define SPECIES_ALCREMIE_RIBBON SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM -#define SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM FORMS_START + 375 -#define SPECIES_ALCREMIE_RIBBON_RUBY_CREAM FORMS_START + 376 -#define SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM FORMS_START + 377 -#define SPECIES_ALCREMIE_RIBBON_MINT_CREAM FORMS_START + 378 -#define SPECIES_ALCREMIE_RIBBON_LEMON_CREAM FORMS_START + 379 -#define SPECIES_ALCREMIE_RIBBON_SALTED_CREAM FORMS_START + 380 -#define SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL FORMS_START + 381 -#define SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL FORMS_START + 382 -#define SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL FORMS_START + 383 +#define SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM 1280 +#define SPECIES_ALCREMIE_RIBBON_RUBY_CREAM 1281 +#define SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM 1282 +#define SPECIES_ALCREMIE_RIBBON_MINT_CREAM 1283 +#define SPECIES_ALCREMIE_RIBBON_LEMON_CREAM 1284 +#define SPECIES_ALCREMIE_RIBBON_SALTED_CREAM 1285 +#define SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL 1286 +#define SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL 1287 +#define SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL 1288 #define GEN9_START SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL -#define SPECIES_SPRIGATITO GEN9_START + 1 -#define SPECIES_FLORAGATO GEN9_START + 2 -#define SPECIES_MEOWSCARADA GEN9_START + 3 -#define SPECIES_FUECOCO GEN9_START + 4 -#define SPECIES_CROCALOR GEN9_START + 5 -#define SPECIES_SKELEDIRGE GEN9_START + 6 -#define SPECIES_QUAXLY GEN9_START + 7 -#define SPECIES_QUAXWELL GEN9_START + 8 -#define SPECIES_QUAQUAVAL GEN9_START + 9 -#define SPECIES_LECHONK GEN9_START + 10 +#define SPECIES_SPRIGATITO 1289 +#define SPECIES_FLORAGATO 1290 +#define SPECIES_MEOWSCARADA 1291 +#define SPECIES_FUECOCO 1292 +#define SPECIES_CROCALOR 1293 +#define SPECIES_SKELEDIRGE 1294 +#define SPECIES_QUAXLY 1295 +#define SPECIES_QUAXWELL 1296 +#define SPECIES_QUAQUAVAL 1297 +#define SPECIES_LECHONK 1298 #define SPECIES_OINKOLOGNE SPECIES_OINKOLOGNE_MALE -#define SPECIES_OINKOLOGNE_MALE GEN9_START + 11 -#define SPECIES_OINKOLOGNE_FEMALE GEN9_START + 12 -#define SPECIES_TAROUNTULA GEN9_START + 13 -#define SPECIES_SPIDOPS GEN9_START + 14 -#define SPECIES_NYMBLE GEN9_START + 15 -#define SPECIES_LOKIX GEN9_START + 16 -#define SPECIES_PAWMI GEN9_START + 17 -#define SPECIES_PAWMO GEN9_START + 18 -#define SPECIES_PAWMOT GEN9_START + 19 -#define SPECIES_TANDEMAUS GEN9_START + 20 +#define SPECIES_OINKOLOGNE_MALE 1299 +#define SPECIES_OINKOLOGNE_FEMALE 1300 +#define SPECIES_TAROUNTULA 1301 +#define SPECIES_SPIDOPS 1302 +#define SPECIES_NYMBLE 1303 +#define SPECIES_LOKIX 1304 +#define SPECIES_PAWMI 1305 +#define SPECIES_PAWMO 1306 +#define SPECIES_PAWMOT 1307 +#define SPECIES_TANDEMAUS 1308 #define SPECIES_MAUSHOLD SPECIES_MAUSHOLD_FAMILY_OF_THREE -#define SPECIES_MAUSHOLD_FAMILY_OF_THREE GEN9_START + 21 -#define SPECIES_MAUSHOLD_FAMILY_OF_FOUR GEN9_START + 22 -#define SPECIES_FIDOUGH GEN9_START + 23 -#define SPECIES_DACHSBUN GEN9_START + 24 -#define SPECIES_SMOLIV GEN9_START + 25 -#define SPECIES_DOLLIV GEN9_START + 26 -#define SPECIES_ARBOLIVA GEN9_START + 27 +#define SPECIES_MAUSHOLD_FAMILY_OF_THREE 1309 +#define SPECIES_MAUSHOLD_FAMILY_OF_FOUR 1310 +#define SPECIES_FIDOUGH 1311 +#define SPECIES_DACHSBUN 1312 +#define SPECIES_SMOLIV 1313 +#define SPECIES_DOLLIV 1314 +#define SPECIES_ARBOLIVA 1315 #define SPECIES_SQUAWKABILLY SPECIES_SQUAWKABILLY_GREEN_PLUMAGE -#define SPECIES_SQUAWKABILLY_GREEN_PLUMAGE GEN9_START + 28 -#define SPECIES_SQUAWKABILLY_BLUE_PLUMAGE GEN9_START + 29 -#define SPECIES_SQUAWKABILLY_YELLOW_PLUMAGE GEN9_START + 30 -#define SPECIES_SQUAWKABILLY_WHITE_PLUMAGE GEN9_START + 31 -#define SPECIES_NACLI GEN9_START + 32 -#define SPECIES_NACLSTACK GEN9_START + 33 -#define SPECIES_GARGANACL GEN9_START + 34 -#define SPECIES_CHARCADET GEN9_START + 35 -#define SPECIES_ARMAROUGE GEN9_START + 36 -#define SPECIES_CERULEDGE GEN9_START + 37 -#define SPECIES_TADBULB GEN9_START + 38 -#define SPECIES_BELLIBOLT GEN9_START + 39 -#define SPECIES_WATTREL GEN9_START + 40 -#define SPECIES_KILOWATTREL GEN9_START + 41 -#define SPECIES_MASCHIFF GEN9_START + 42 -#define SPECIES_MABOSSTIFF GEN9_START + 43 -#define SPECIES_SHROODLE GEN9_START + 44 -#define SPECIES_GRAFAIAI GEN9_START + 45 -#define SPECIES_BRAMBLIN GEN9_START + 46 -#define SPECIES_BRAMBLEGHAST GEN9_START + 47 -#define SPECIES_TOEDSCOOL GEN9_START + 48 -#define SPECIES_TOEDSCRUEL GEN9_START + 49 -#define SPECIES_KLAWF GEN9_START + 50 -#define SPECIES_CAPSAKID GEN9_START + 51 -#define SPECIES_SCOVILLAIN GEN9_START + 52 -#define SPECIES_RELLOR GEN9_START + 53 -#define SPECIES_RABSCA GEN9_START + 54 -#define SPECIES_FLITTLE GEN9_START + 55 -#define SPECIES_ESPATHRA GEN9_START + 56 -#define SPECIES_TINKATINK GEN9_START + 57 -#define SPECIES_TINKATUFF GEN9_START + 58 -#define SPECIES_TINKATON GEN9_START + 59 -#define SPECIES_WIGLETT GEN9_START + 60 -#define SPECIES_WUGTRIO GEN9_START + 61 -#define SPECIES_BOMBIRDIER GEN9_START + 62 -#define SPECIES_FINIZEN GEN9_START + 63 +#define SPECIES_SQUAWKABILLY_GREEN_PLUMAGE 1316 +#define SPECIES_SQUAWKABILLY_BLUE_PLUMAGE 1317 +#define SPECIES_SQUAWKABILLY_YELLOW_PLUMAGE 1318 +#define SPECIES_SQUAWKABILLY_WHITE_PLUMAGE 1319 +#define SPECIES_NACLI 1320 +#define SPECIES_NACLSTACK 1321 +#define SPECIES_GARGANACL 1322 +#define SPECIES_CHARCADET 1323 +#define SPECIES_ARMAROUGE 1324 +#define SPECIES_CERULEDGE 1325 +#define SPECIES_TADBULB 1326 +#define SPECIES_BELLIBOLT 1327 +#define SPECIES_WATTREL 1328 +#define SPECIES_KILOWATTREL 1329 +#define SPECIES_MASCHIFF 1330 +#define SPECIES_MABOSSTIFF 1331 +#define SPECIES_SHROODLE 1332 +#define SPECIES_GRAFAIAI 1333 +#define SPECIES_BRAMBLIN 1334 +#define SPECIES_BRAMBLEGHAST 1335 +#define SPECIES_TOEDSCOOL 1336 +#define SPECIES_TOEDSCRUEL 1337 +#define SPECIES_KLAWF 1338 +#define SPECIES_CAPSAKID 1339 +#define SPECIES_SCOVILLAIN 1340 +#define SPECIES_RELLOR 1341 +#define SPECIES_RABSCA 1342 +#define SPECIES_FLITTLE 1343 +#define SPECIES_ESPATHRA 1344 +#define SPECIES_TINKATINK 1345 +#define SPECIES_TINKATUFF 1346 +#define SPECIES_TINKATON 1347 +#define SPECIES_WIGLETT 1348 +#define SPECIES_WUGTRIO 1349 +#define SPECIES_BOMBIRDIER 1350 +#define SPECIES_FINIZEN 1351 #define SPECIES_PALAFIN SPECIES_PALAFIN_ZERO -#define SPECIES_PALAFIN_ZERO GEN9_START + 64 -#define SPECIES_PALAFIN_HERO GEN9_START + 65 -#define SPECIES_VAROOM GEN9_START + 66 -#define SPECIES_REVAVROOM GEN9_START + 67 -#define SPECIES_CYCLIZAR GEN9_START + 68 -#define SPECIES_ORTHWORM GEN9_START + 69 -#define SPECIES_GLIMMET GEN9_START + 70 -#define SPECIES_GLIMMORA GEN9_START + 71 -#define SPECIES_GREAVARD GEN9_START + 72 -#define SPECIES_HOUNDSTONE GEN9_START + 73 -#define SPECIES_FLAMIGO GEN9_START + 74 -#define SPECIES_CETODDLE GEN9_START + 75 -#define SPECIES_CETITAN GEN9_START + 76 -#define SPECIES_VELUZA GEN9_START + 77 -#define SPECIES_DONDOZO GEN9_START + 78 +#define SPECIES_PALAFIN_ZERO 1352 +#define SPECIES_PALAFIN_HERO 1353 +#define SPECIES_VAROOM 1354 +#define SPECIES_REVAVROOM 1355 +#define SPECIES_CYCLIZAR 1356 +#define SPECIES_ORTHWORM 1357 +#define SPECIES_GLIMMET 1358 +#define SPECIES_GLIMMORA 1359 +#define SPECIES_GREAVARD 1360 +#define SPECIES_HOUNDSTONE 1361 +#define SPECIES_FLAMIGO 1362 +#define SPECIES_CETODDLE 1363 +#define SPECIES_CETITAN 1364 +#define SPECIES_VELUZA 1365 +#define SPECIES_DONDOZO 1366 #define SPECIES_TATSUGIRI SPECIES_TATSUGIRI_CURLY -#define SPECIES_TATSUGIRI_CURLY GEN9_START + 79 -#define SPECIES_TATSUGIRI_DROOPY GEN9_START + 80 -#define SPECIES_TATSUGIRI_STRETCHY GEN9_START + 81 -#define SPECIES_ANNIHILAPE GEN9_START + 82 -#define SPECIES_CLODSIRE GEN9_START + 83 -#define SPECIES_FARIGIRAF GEN9_START + 84 +#define SPECIES_TATSUGIRI_CURLY 1367 +#define SPECIES_TATSUGIRI_DROOPY 1368 +#define SPECIES_TATSUGIRI_STRETCHY 1369 +#define SPECIES_ANNIHILAPE 1370 +#define SPECIES_CLODSIRE 1371 +#define SPECIES_FARIGIRAF 1372 #define SPECIES_DUDUNSPARCE SPECIES_DUDUNSPARCE_TWO_SEGMENT -#define SPECIES_DUDUNSPARCE_TWO_SEGMENT GEN9_START + 85 -#define SPECIES_DUDUNSPARCE_THREE_SEGMENT GEN9_START + 86 -#define SPECIES_KINGAMBIT GEN9_START + 87 -#define SPECIES_GREAT_TUSK GEN9_START + 88 -#define SPECIES_SCREAM_TAIL GEN9_START + 89 -#define SPECIES_BRUTE_BONNET GEN9_START + 90 -#define SPECIES_FLUTTER_MANE GEN9_START + 91 -#define SPECIES_SLITHER_WING GEN9_START + 92 -#define SPECIES_SANDY_SHOCKS GEN9_START + 93 -#define SPECIES_IRON_TREADS GEN9_START + 94 -#define SPECIES_IRON_BUNDLE GEN9_START + 95 -#define SPECIES_IRON_HANDS GEN9_START + 96 -#define SPECIES_IRON_JUGULIS GEN9_START + 97 -#define SPECIES_IRON_MOTH GEN9_START + 98 -#define SPECIES_IRON_THORNS GEN9_START + 99 -#define SPECIES_FRIGIBAX GEN9_START + 100 -#define SPECIES_ARCTIBAX GEN9_START + 101 -#define SPECIES_BAXCALIBUR GEN9_START + 102 +#define SPECIES_DUDUNSPARCE_TWO_SEGMENT 1373 +#define SPECIES_DUDUNSPARCE_THREE_SEGMENT 1374 +#define SPECIES_KINGAMBIT 1375 +#define SPECIES_GREAT_TUSK 1376 +#define SPECIES_SCREAM_TAIL 1377 +#define SPECIES_BRUTE_BONNET 1378 +#define SPECIES_FLUTTER_MANE 1379 +#define SPECIES_SLITHER_WING 1380 +#define SPECIES_SANDY_SHOCKS 1381 +#define SPECIES_IRON_TREADS 1382 +#define SPECIES_IRON_BUNDLE 1383 +#define SPECIES_IRON_HANDS 1384 +#define SPECIES_IRON_JUGULIS 1385 +#define SPECIES_IRON_MOTH 1386 +#define SPECIES_IRON_THORNS 1387 +#define SPECIES_FRIGIBAX 1388 +#define SPECIES_ARCTIBAX 1389 +#define SPECIES_BAXCALIBUR 1390 #define SPECIES_GIMMIGHOUL SPECIES_GIMMIGHOUL_CHEST -#define SPECIES_GIMMIGHOUL_CHEST GEN9_START + 103 -#define SPECIES_GIMMIGHOUL_ROAMING GEN9_START + 104 -#define SPECIES_GHOLDENGO GEN9_START + 105 -#define SPECIES_WO_CHIEN GEN9_START + 106 -#define SPECIES_CHIEN_PAO GEN9_START + 107 -#define SPECIES_TING_LU GEN9_START + 108 -#define SPECIES_CHI_YU GEN9_START + 109 -#define SPECIES_ROARING_MOON GEN9_START + 110 -#define SPECIES_IRON_VALIANT GEN9_START + 111 -#define SPECIES_KORAIDON GEN9_START + 112 -#define SPECIES_MIRAIDON GEN9_START + 113 +#define SPECIES_GIMMIGHOUL_CHEST 1391 +#define SPECIES_GIMMIGHOUL_ROAMING 1392 +#define SPECIES_GHOLDENGO 1393 +#define SPECIES_WO_CHIEN 1394 +#define SPECIES_CHIEN_PAO 1395 +#define SPECIES_TING_LU 1396 +#define SPECIES_CHI_YU 1397 +#define SPECIES_ROARING_MOON 1398 +#define SPECIES_IRON_VALIANT 1399 +#define SPECIES_KORAIDON 1400 +#define SPECIES_MIRAIDON 1401 // Paldean Forms -#define SPECIES_TAUROS_PALDEAN_COMBAT_BREED GEN9_START + 114 -#define SPECIES_TAUROS_PALDEAN_BLAZE_BREED GEN9_START + 115 -#define SPECIES_TAUROS_PALDEAN_AQUA_BREED GEN9_START + 116 -#define SPECIES_WOOPER_PALDEAN GEN9_START + 117 +#define SPECIES_TAUROS_PALDEAN_COMBAT_BREED 1402 +#define SPECIES_TAUROS_PALDEAN_BLAZE_BREED 1403 +#define SPECIES_TAUROS_PALDEAN_AQUA_BREED 1404 +#define SPECIES_WOOPER_PALDEAN 1405 // Scarlet and Violet 1.2.0 -#define SPECIES_WALKING_WAKE GEN9_START + 118 -#define SPECIES_IRON_LEAVES GEN9_START + 119 +#define SPECIES_WALKING_WAKE 1406 +#define SPECIES_IRON_LEAVES 1407 // Teal Mask -#define SPECIES_DIPPLIN GEN9_START + 120 +#define SPECIES_DIPPLIN 1408 #define SPECIES_POLTCHAGEIST SPECIES_POLTCHAGEIST_COUNTERFEIT -#define SPECIES_POLTCHAGEIST_COUNTERFEIT GEN9_START + 121 -#define SPECIES_POLTCHAGEIST_ARTISAN GEN9_START + 122 +#define SPECIES_POLTCHAGEIST_COUNTERFEIT 1409 +#define SPECIES_POLTCHAGEIST_ARTISAN 1410 #define SPECIES_SINISTCHA SPECIES_SINISTCHA_UNREMARKABLE -#define SPECIES_SINISTCHA_UNREMARKABLE GEN9_START + 123 -#define SPECIES_SINISTCHA_MASTERPIECE GEN9_START + 124 -#define SPECIES_OKIDOGI GEN9_START + 125 -#define SPECIES_MUNKIDORI GEN9_START + 126 -#define SPECIES_FEZANDIPITI GEN9_START + 127 +#define SPECIES_SINISTCHA_UNREMARKABLE 1411 +#define SPECIES_SINISTCHA_MASTERPIECE 1412 +#define SPECIES_OKIDOGI 1413 +#define SPECIES_MUNKIDORI 1414 +#define SPECIES_FEZANDIPITI 1415 #define SPECIES_OGERPON SPECIES_OGERPON_TEAL_MASK -#define SPECIES_OGERPON_TEAL_MASK GEN9_START + 128 -#define SPECIES_OGERPON_WELLSPRING_MASK GEN9_START + 129 -#define SPECIES_OGERPON_HEARTHFLAME_MASK GEN9_START + 130 -#define SPECIES_OGERPON_CORNERSTONE_MASK GEN9_START + 131 -#define SPECIES_OGERPON_TEAL_MASK_TERA GEN9_START + 132 -#define SPECIES_OGERPON_WELLSPRING_MASK_TERA GEN9_START + 133 -#define SPECIES_OGERPON_HEARTHFLAME_MASK_TERA GEN9_START + 134 -#define SPECIES_OGERPON_CORNERSTONE_MASK_TERA GEN9_START + 135 -#define SPECIES_URSALUNA_BLOODMOON GEN9_START + 136 +#define SPECIES_OGERPON_TEAL_MASK 1416 +#define SPECIES_OGERPON_WELLSPRING_MASK 1417 +#define SPECIES_OGERPON_HEARTHFLAME_MASK 1418 +#define SPECIES_OGERPON_CORNERSTONE_MASK 1419 +#define SPECIES_OGERPON_TEAL_MASK_TERA 1420 +#define SPECIES_OGERPON_WELLSPRING_MASK_TERA 1421 +#define SPECIES_OGERPON_HEARTHFLAME_MASK_TERA 1422 +#define SPECIES_OGERPON_CORNERSTONE_MASK_TERA 1423 +#define SPECIES_URSALUNA_BLOODMOON 1424 // Indigo Disk -#define SPECIES_ARCHALUDON GEN9_START + 137 -#define SPECIES_HYDRAPPLE GEN9_START + 138 -#define SPECIES_GOUGING_FIRE GEN9_START + 139 -#define SPECIES_RAGING_BOLT GEN9_START + 140 -#define SPECIES_IRON_BOULDER GEN9_START + 141 -#define SPECIES_IRON_CROWN GEN9_START + 142 +#define SPECIES_ARCHALUDON 1425 +#define SPECIES_HYDRAPPLE 1426 +#define SPECIES_GOUGING_FIRE 1427 +#define SPECIES_RAGING_BOLT 1428 +#define SPECIES_IRON_BOULDER 1429 +#define SPECIES_IRON_CROWN 1430 #define SPECIES_TERAPAGOS SPECIES_TERAPAGOS_NORMAL -#define SPECIES_TERAPAGOS_NORMAL GEN9_START + 143 -#define SPECIES_TERAPAGOS_TERASTAL GEN9_START + 144 -#define SPECIES_TERAPAGOS_STELLAR GEN9_START + 145 -#define SPECIES_PECHARUNT GEN9_START + 146 +#define SPECIES_TERAPAGOS_NORMAL 1431 +#define SPECIES_TERAPAGOS_TERASTAL 1432 +#define SPECIES_TERAPAGOS_STELLAR 1433 +#define SPECIES_PECHARUNT 1434 +#define SPECIES_LUGIA_SHADOW 1435 +#define SPECIES_MOTHIM_SANDY_CLOAK 1436 +#define SPECIES_MOTHIM_TRASH_CLOAK 1437 +#define SPECIES_SCATTERBUG_POLAR 1438 +#define SPECIES_SCATTERBUG_TUNDRA 1439 +#define SPECIES_SCATTERBUG_CONTINENTAL 1440 +#define SPECIES_SCATTERBUG_GARDEN 1441 +#define SPECIES_SCATTERBUG_ELEGANT 1442 +#define SPECIES_SCATTERBUG_MEADOW 1443 +#define SPECIES_SCATTERBUG_MODERN 1444 +#define SPECIES_SCATTERBUG_MARINE 1445 +#define SPECIES_SCATTERBUG_ARCHIPELAGO 1446 +#define SPECIES_SCATTERBUG_HIGH_PLAINS 1447 +#define SPECIES_SCATTERBUG_SANDSTORM 1448 +#define SPECIES_SCATTERBUG_RIVER 1449 +#define SPECIES_SCATTERBUG_MONSOON 1450 +#define SPECIES_SCATTERBUG_SAVANNA 1451 +#define SPECIES_SCATTERBUG_SUN 1452 +#define SPECIES_SCATTERBUG_OCEAN 1453 +#define SPECIES_SCATTERBUG_JUNGLE 1454 +#define SPECIES_SCATTERBUG_FANCY 1455 +#define SPECIES_SCATTERBUG_POKE_BALL 1456 +#define SPECIES_SPEWPA_POLAR 1457 +#define SPECIES_SPEWPA_TUNDRA 1458 +#define SPECIES_SPEWPA_CONTINENTAL 1459 +#define SPECIES_SPEWPA_GARDEN 1460 +#define SPECIES_SPEWPA_ELEGANT 1461 +#define SPECIES_SPEWPA_MEADOW 1462 +#define SPECIES_SPEWPA_MODERN 1463 +#define SPECIES_SPEWPA_MARINE 1464 +#define SPECIES_SPEWPA_ARCHIPELAGO 1465 +#define SPECIES_SPEWPA_HIGH_PLAINS 1466 +#define SPECIES_SPEWPA_SANDSTORM 1467 +#define SPECIES_SPEWPA_RIVER 1468 +#define SPECIES_SPEWPA_MONSOON 1469 +#define SPECIES_SPEWPA_SAVANNA 1470 +#define SPECIES_SPEWPA_SUN 1471 +#define SPECIES_SPEWPA_OCEAN 1472 +#define SPECIES_SPEWPA_JUNGLE 1473 +#define SPECIES_SPEWPA_FANCY 1474 +#define SPECIES_SPEWPA_POKE_BALL 1475 +#define SPECIES_RATICATE_ALOLAN_TOTEM 1476 +#define SPECIES_GUMSHOOS_TOTEM 1477 +#define SPECIES_VIKAVOLT_TOTEM 1478 +#define SPECIES_LURANTIS_TOTEM 1479 +#define SPECIES_SALAZZLE_TOTEM 1480 +#define SPECIES_MIMIKYU_TOTEM SPECIES_MIMIKYU_TOTEM_DISGUISED +#define SPECIES_MIMIKYU_TOTEM_DISGUISED 1481 +#define SPECIES_KOMMO_O_TOTEM 1482 +#define SPECIES_MAROWAK_ALOLAN_TOTEM 1483 +#define SPECIES_RIBOMBEE_TOTEM 1484 +#define SPECIES_ARAQUANID_TOTEM 1485 +#define SPECIES_TOGEDEMARU_TOTEM 1486 +#define SPECIES_PIKACHU_PARTNER 1487 +#define SPECIES_EEVEE_PARTNER 1488 +#define SPECIES_VENUSAUR_GIGANTAMAX 1489 +#define SPECIES_BLASTOISE_GIGANTAMAX 1490 +#define SPECIES_CHARIZARD_GIGANTAMAX 1491 +#define SPECIES_BUTTERFREE_GIGANTAMAX 1492 +#define SPECIES_PIKACHU_GIGANTAMAX 1493 +#define SPECIES_MEOWTH_GIGANTAMAX 1494 +#define SPECIES_MACHAMP_GIGANTAMAX 1495 +#define SPECIES_GENGAR_GIGANTAMAX 1496 +#define SPECIES_KINGLER_GIGANTAMAX 1497 +#define SPECIES_LAPRAS_GIGANTAMAX 1498 +#define SPECIES_EEVEE_GIGANTAMAX 1499 +#define SPECIES_SNORLAX_GIGANTAMAX 1500 +#define SPECIES_GARBODOR_GIGANTAMAX 1501 +#define SPECIES_MELMETAL_GIGANTAMAX 1502 +#define SPECIES_RILLABOOM_GIGANTAMAX 1503 +#define SPECIES_CINDERACE_GIGANTAMAX 1504 +#define SPECIES_INTELEON_GIGANTAMAX 1505 +#define SPECIES_CORVIKNIGHT_GIGANTAMAX 1506 +#define SPECIES_ORBEETLE_GIGANTAMAX 1507 +#define SPECIES_DREDNAW_GIGANTAMAX 1508 +#define SPECIES_COALOSSAL_GIGANTAMAX 1509 +#define SPECIES_FLAPPLE_GIGANTAMAX 1510 +#define SPECIES_APPLETUN_GIGANTAMAX 1511 +#define SPECIES_SANDACONDA_GIGANTAMAX 1512 +#define SPECIES_TOXTRICITY_AMPED_GIGANTAMAX 1513 +#define SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX 1514 +#define SPECIES_CENTISKORCH_GIGANTAMAX 1515 +#define SPECIES_HATTERENE_GIGANTAMAX 1516 +#define SPECIES_GRIMMSNARL_GIGANTAMAX 1517 +#define SPECIES_ALCREMIE_GIGANTAMAX 1518 +#define SPECIES_COPPERAJAH_GIGANTAMAX 1519 +#define SPECIES_DURALUDON_GIGANTAMAX 1520 +#define SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX 1521 +#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX 1522 +#define SPECIES_MIMIKYU_TOTEM_BUSTED 1523 -#define PLACEHOLDER_START SPECIES_PECHARUNT -// XD: Gale of Darkness -#define SPECIES_LUGIA_SHADOW PLACEHOLDER_START + 1 -// Diamond & Pearl -#define SPECIES_MOTHIM_SANDY_CLOAK PLACEHOLDER_START + 2 -#define SPECIES_MOTHIM_TRASH_CLOAK PLACEHOLDER_START + 3 -// X & Y -#define SPECIES_SCATTERBUG_POLAR PLACEHOLDER_START + 4 -#define SPECIES_SCATTERBUG_TUNDRA PLACEHOLDER_START + 5 -#define SPECIES_SCATTERBUG_CONTINENTAL PLACEHOLDER_START + 6 -#define SPECIES_SCATTERBUG_GARDEN PLACEHOLDER_START + 7 -#define SPECIES_SCATTERBUG_ELEGANT PLACEHOLDER_START + 8 -#define SPECIES_SCATTERBUG_MEADOW PLACEHOLDER_START + 9 -#define SPECIES_SCATTERBUG_MODERN PLACEHOLDER_START + 10 -#define SPECIES_SCATTERBUG_MARINE PLACEHOLDER_START + 11 -#define SPECIES_SCATTERBUG_ARCHIPELAGO PLACEHOLDER_START + 12 -#define SPECIES_SCATTERBUG_HIGH_PLAINS PLACEHOLDER_START + 13 -#define SPECIES_SCATTERBUG_SANDSTORM PLACEHOLDER_START + 14 -#define SPECIES_SCATTERBUG_RIVER PLACEHOLDER_START + 15 -#define SPECIES_SCATTERBUG_MONSOON PLACEHOLDER_START + 16 -#define SPECIES_SCATTERBUG_SAVANNA PLACEHOLDER_START + 17 -#define SPECIES_SCATTERBUG_SUN PLACEHOLDER_START + 18 -#define SPECIES_SCATTERBUG_OCEAN PLACEHOLDER_START + 19 -#define SPECIES_SCATTERBUG_JUNGLE PLACEHOLDER_START + 20 -#define SPECIES_SCATTERBUG_FANCY PLACEHOLDER_START + 21 -#define SPECIES_SCATTERBUG_POKE_BALL PLACEHOLDER_START + 22 -#define SPECIES_SPEWPA_POLAR PLACEHOLDER_START + 23 -#define SPECIES_SPEWPA_TUNDRA PLACEHOLDER_START + 24 -#define SPECIES_SPEWPA_CONTINENTAL PLACEHOLDER_START + 25 -#define SPECIES_SPEWPA_GARDEN PLACEHOLDER_START + 26 -#define SPECIES_SPEWPA_ELEGANT PLACEHOLDER_START + 27 -#define SPECIES_SPEWPA_MEADOW PLACEHOLDER_START + 28 -#define SPECIES_SPEWPA_MODERN PLACEHOLDER_START + 29 -#define SPECIES_SPEWPA_MARINE PLACEHOLDER_START + 30 -#define SPECIES_SPEWPA_ARCHIPELAGO PLACEHOLDER_START + 31 -#define SPECIES_SPEWPA_HIGH_PLAINS PLACEHOLDER_START + 32 -#define SPECIES_SPEWPA_SANDSTORM PLACEHOLDER_START + 33 -#define SPECIES_SPEWPA_RIVER PLACEHOLDER_START + 34 -#define SPECIES_SPEWPA_MONSOON PLACEHOLDER_START + 35 -#define SPECIES_SPEWPA_SAVANNA PLACEHOLDER_START + 36 -#define SPECIES_SPEWPA_SUN PLACEHOLDER_START + 37 -#define SPECIES_SPEWPA_OCEAN PLACEHOLDER_START + 38 -#define SPECIES_SPEWPA_JUNGLE PLACEHOLDER_START + 39 -#define SPECIES_SPEWPA_FANCY PLACEHOLDER_START + 40 -#define SPECIES_SPEWPA_POKE_BALL PLACEHOLDER_START + 41 -// Sun & Moon -#define SPECIES_RATICATE_ALOLAN_TOTEM PLACEHOLDER_START + 42 -#define SPECIES_GUMSHOOS_TOTEM PLACEHOLDER_START + 43 -#define SPECIES_VIKAVOLT_TOTEM PLACEHOLDER_START + 44 -#define SPECIES_LURANTIS_TOTEM PLACEHOLDER_START + 45 -#define SPECIES_SALAZZLE_TOTEM PLACEHOLDER_START + 46 -#define SPECIES_MIMIKYU_TOTEM PLACEHOLDER_START + 47 -#define SPECIES_KOMMO_O_TOTEM PLACEHOLDER_START + 48 -// Ultra Sun & Ultra Moon -#define SPECIES_MAROWAK_ALOLAN_TOTEM PLACEHOLDER_START + 49 -#define SPECIES_RIBOMBEE_TOTEM PLACEHOLDER_START + 50 -#define SPECIES_ARAQUANID_TOTEM PLACEHOLDER_START + 51 -#define SPECIES_TOGEDEMARU_TOTEM PLACEHOLDER_START + 52 -// Let's Go Pikachu & Let's Go Eevee -#define SPECIES_PIKACHU_PARTNER PLACEHOLDER_START + 53 -#define SPECIES_EEVEE_PARTNER PLACEHOLDER_START + 54 - -#define GIGANTAMAX_START SPECIES_EEVEE_PARTNER - -// Gigantamax Forms -#define SPECIES_VENUSAUR_GIGANTAMAX GIGANTAMAX_START + 1 -#define SPECIES_BLASTOISE_GIGANTAMAX GIGANTAMAX_START + 2 -#define SPECIES_CHARIZARD_GIGANTAMAX GIGANTAMAX_START + 3 -#define SPECIES_BUTTERFREE_GIGANTAMAX GIGANTAMAX_START + 4 -#define SPECIES_PIKACHU_GIGANTAMAX GIGANTAMAX_START + 5 -#define SPECIES_MEOWTH_GIGANTAMAX GIGANTAMAX_START + 6 -#define SPECIES_MACHAMP_GIGANTAMAX GIGANTAMAX_START + 7 -#define SPECIES_GENGAR_GIGANTAMAX GIGANTAMAX_START + 8 -#define SPECIES_KINGLER_GIGANTAMAX GIGANTAMAX_START + 9 -#define SPECIES_LAPRAS_GIGANTAMAX GIGANTAMAX_START + 10 -#define SPECIES_EEVEE_GIGANTAMAX GIGANTAMAX_START + 11 -#define SPECIES_SNORLAX_GIGANTAMAX GIGANTAMAX_START + 12 -#define SPECIES_GARBODOR_GIGANTAMAX GIGANTAMAX_START + 13 -#define SPECIES_MELMETAL_GIGANTAMAX GIGANTAMAX_START + 14 -#define SPECIES_RILLABOOM_GIGANTAMAX GIGANTAMAX_START + 15 -#define SPECIES_CINDERACE_GIGANTAMAX GIGANTAMAX_START + 16 -#define SPECIES_INTELEON_GIGANTAMAX GIGANTAMAX_START + 17 -#define SPECIES_CORVIKNIGHT_GIGANTAMAX GIGANTAMAX_START + 18 -#define SPECIES_ORBEETLE_GIGANTAMAX GIGANTAMAX_START + 19 -#define SPECIES_DREDNAW_GIGANTAMAX GIGANTAMAX_START + 20 -#define SPECIES_COALOSSAL_GIGANTAMAX GIGANTAMAX_START + 21 -#define SPECIES_FLAPPLE_GIGANTAMAX GIGANTAMAX_START + 22 -#define SPECIES_APPLETUN_GIGANTAMAX GIGANTAMAX_START + 23 -#define SPECIES_SANDACONDA_GIGANTAMAX GIGANTAMAX_START + 24 -#define SPECIES_TOXTRICITY_AMPED_GIGANTAMAX GIGANTAMAX_START + 25 -#define SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX GIGANTAMAX_START + 26 -#define SPECIES_CENTISKORCH_GIGANTAMAX GIGANTAMAX_START + 27 -#define SPECIES_HATTERENE_GIGANTAMAX GIGANTAMAX_START + 28 -#define SPECIES_GRIMMSNARL_GIGANTAMAX GIGANTAMAX_START + 29 -#define SPECIES_ALCREMIE_GIGANTAMAX GIGANTAMAX_START + 30 -#define SPECIES_COPPERAJAH_GIGANTAMAX GIGANTAMAX_START + 31 -#define SPECIES_DURALUDON_GIGANTAMAX GIGANTAMAX_START + 32 -#define SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX GIGANTAMAX_START + 33 -#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX GIGANTAMAX_START + 34 - -#define SPECIES_EGG SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX + 1 +#define SPECIES_EGG SPECIES_MIMIKYU_TOTEM_BUSTED + 1 #define NUM_SPECIES SPECIES_EGG diff --git a/include/pokemon.h b/include/pokemon.h index 4baf6a85a1..984a86b1ae 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -424,6 +424,7 @@ struct SpeciesInfo /*0x8C*/ /* 0x7A */ u32 isLegendary:1; u32 isMythical:1; u32 isUltraBeast:1; + u32 isTotem:1; u32 isParadoxForm:1; u32 isMegaEvolution:1; u32 isPrimalReversion:1; diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 5d6e778277..8e0955b1de 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -3625,7 +3625,8 @@ bool32 ShouldUseZMove(u32 battlerAtk, u32 battlerDef, u32 chosenMove) { u8 effectiveness; - if (gBattleMons[battlerDef].ability == ABILITY_DISGUISE && gBattleMons[battlerDef].species == SPECIES_MIMIKYU_DISGUISED) + if (gBattleMons[battlerDef].ability == ABILITY_DISGUISE + && (gBattleMons[battlerDef].species == SPECIES_MIMIKYU_DISGUISED || gBattleMons[battlerDef].species == SPECIES_MIMIKYU_TOTEM_DISGUISED)) return FALSE; // Don't waste a Z-Move busting disguise if (gBattleMons[battlerDef].ability == ABILITY_ICE_FACE && gBattleMons[battlerDef].species == SPECIES_EISCUE_ICE_FACE && IS_MOVE_PHYSICAL(chosenMove)) return FALSE; // Don't waste a Z-Move busting Ice Face diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 7c51af43be..43071ff5f6 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2317,7 +2317,10 @@ static void Cmd_datahpupdate(void) u32 side = GetBattlerSide(battler); if (gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[battler]] == SPECIES_NONE) gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[battler]] = gBattleMons[battler].species; - gBattleMons[battler].species = SPECIES_MIMIKYU_BUSTED; + if (gBattleMons[battler].species == SPECIES_MIMIKYU_TOTEM_DISGUISED) + gBattleMons[battler].species = SPECIES_MIMIKYU_TOTEM_BUSTED; + else + gBattleMons[battler].species = SPECIES_MIMIKYU_BUSTED; BattleScriptPush(cmd->nextInstr); gBattlescriptCurrInstr = BattleScript_TargetFormChange; return; @@ -14682,7 +14685,7 @@ bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move) bool32 DoesDisguiseBlockMove(u32 battlerAtk, u32 battlerDef, u32 move) { - if (gBattleMons[battlerDef].species != SPECIES_MIMIKYU_DISGUISED + if (!(gBattleMons[battlerDef].species == SPECIES_MIMIKYU_DISGUISED || gBattleMons[battlerDef].species == SPECIES_MIMIKYU_TOTEM_DISGUISED) || gBattleMons[battlerDef].status2 & STATUS2_TRANSFORMED || IS_MOVE_STATUS(move) || gHitMarker & HITMARKER_IGNORE_DISGUISE diff --git a/src/battle_z_move.c b/src/battle_z_move.c index e4ea9fabc0..b65f017f19 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -57,45 +57,47 @@ static void ZMoveSelectionDisplayMoveType(u16 zMove, u32 battler); // Const Data static const struct SignatureZMove sSignatureZMoves[] = { - {SPECIES_PIKACHU_COSPLAY, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, - {SPECIES_PIKACHU_ROCK_STAR, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, - {SPECIES_PIKACHU_BELLE, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, - {SPECIES_PIKACHU_POP_STAR, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, - {SPECIES_PIKACHU_PH_D, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, - {SPECIES_PIKACHU_LIBRE, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, + {SPECIES_PIKACHU_COSPLAY, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, + {SPECIES_PIKACHU_ROCK_STAR, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, + {SPECIES_PIKACHU_BELLE, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, + {SPECIES_PIKACHU_POP_STAR, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, + {SPECIES_PIKACHU_PH_D, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, + {SPECIES_PIKACHU_LIBRE, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, - {SPECIES_RAICHU_ALOLAN, ITEM_ALORAICHIUM_Z, MOVE_THUNDERBOLT, MOVE_STOKED_SPARKSURFER}, - {SPECIES_DECIDUEYE, ITEM_DECIDIUM_Z, MOVE_SPIRIT_SHACKLE, MOVE_SINISTER_ARROW_RAID}, - {SPECIES_INCINEROAR, ITEM_INCINIUM_Z, MOVE_DARKEST_LARIAT, MOVE_MALICIOUS_MOONSAULT}, - {SPECIES_KOMMO_O, ITEM_KOMMONIUM_Z, MOVE_CLANGING_SCALES, MOVE_CLANGOROUS_SOULBLAZE}, - {SPECIES_LUNALA, ITEM_LUNALIUM_Z, MOVE_MOONGEIST_BEAM, MOVE_MENACING_MOONRAZE_MAELSTROM}, - {SPECIES_NECROZMA_DAWN_WINGS, ITEM_LUNALIUM_Z, MOVE_MOONGEIST_BEAM, MOVE_MENACING_MOONRAZE_MAELSTROM}, - {SPECIES_LYCANROC_MIDDAY, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, - {SPECIES_LYCANROC_MIDNIGHT, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, - {SPECIES_LYCANROC_DUSK, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, - {SPECIES_MARSHADOW, ITEM_MARSHADIUM_Z, MOVE_SPECTRAL_THIEF, MOVE_SOUL_STEALING_7_STAR_STRIKE}, - {SPECIES_MIMIKYU_DISGUISED, ITEM_MIMIKIUM_Z, MOVE_PLAY_ROUGH, MOVE_LETS_SNUGGLE_FOREVER}, - {SPECIES_MIMIKYU_BUSTED, ITEM_MIMIKIUM_Z, MOVE_PLAY_ROUGH, MOVE_LETS_SNUGGLE_FOREVER}, - {SPECIES_PIKACHU_ORIGINAL_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, - {SPECIES_PIKACHU_HOENN_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, - {SPECIES_PIKACHU_SINNOH_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, - {SPECIES_PIKACHU_UNOVA_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, - {SPECIES_PIKACHU_KALOS_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, - {SPECIES_PIKACHU_ALOLA_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, - {SPECIES_PIKACHU_PARTNER_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, - {SPECIES_PIKACHU_WORLD_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, - {SPECIES_PRIMARINA, ITEM_PRIMARIUM_Z, MOVE_SPARKLING_ARIA, MOVE_OCEANIC_OPERETTA}, - {SPECIES_SOLGALEO, ITEM_SOLGANIUM_Z, MOVE_SUNSTEEL_STRIKE, MOVE_SEARING_SUNRAZE_SMASH}, - {SPECIES_NECROZMA_DUSK_MANE, ITEM_SOLGANIUM_Z, MOVE_SUNSTEEL_STRIKE, MOVE_SEARING_SUNRAZE_SMASH}, - {SPECIES_TAPU_KOKO, ITEM_TAPUNIUM_Z, MOVE_NATURES_MADNESS, MOVE_GUARDIAN_OF_ALOLA}, - {SPECIES_TAPU_BULU, ITEM_TAPUNIUM_Z, MOVE_NATURES_MADNESS, MOVE_GUARDIAN_OF_ALOLA}, - {SPECIES_TAPU_LELE, ITEM_TAPUNIUM_Z, MOVE_NATURES_MADNESS, MOVE_GUARDIAN_OF_ALOLA}, - {SPECIES_TAPU_FINI, ITEM_TAPUNIUM_Z, MOVE_NATURES_MADNESS, MOVE_GUARDIAN_OF_ALOLA}, - {SPECIES_NECROZMA_ULTRA, ITEM_ULTRANECROZIUM_Z, MOVE_PHOTON_GEYSER, MOVE_LIGHT_THAT_BURNS_THE_SKY}, - {SPECIES_MEW, ITEM_MEWNIUM_Z, MOVE_PSYCHIC, MOVE_GENESIS_SUPERNOVA}, - {SPECIES_PIKACHU, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, - {SPECIES_EEVEE, ITEM_EEVIUM_Z, MOVE_LAST_RESORT, MOVE_EXTREME_EVOBOOST}, - {SPECIES_SNORLAX, ITEM_SNORLIUM_Z, MOVE_GIGA_IMPACT, MOVE_PULVERIZING_PANCAKE}, + {SPECIES_RAICHU_ALOLAN, ITEM_ALORAICHIUM_Z, MOVE_THUNDERBOLT, MOVE_STOKED_SPARKSURFER}, + {SPECIES_DECIDUEYE, ITEM_DECIDIUM_Z, MOVE_SPIRIT_SHACKLE, MOVE_SINISTER_ARROW_RAID}, + {SPECIES_INCINEROAR, ITEM_INCINIUM_Z, MOVE_DARKEST_LARIAT, MOVE_MALICIOUS_MOONSAULT}, + {SPECIES_KOMMO_O, ITEM_KOMMONIUM_Z, MOVE_CLANGING_SCALES, MOVE_CLANGOROUS_SOULBLAZE}, + {SPECIES_LUNALA, ITEM_LUNALIUM_Z, MOVE_MOONGEIST_BEAM, MOVE_MENACING_MOONRAZE_MAELSTROM}, + {SPECIES_NECROZMA_DAWN_WINGS, ITEM_LUNALIUM_Z, MOVE_MOONGEIST_BEAM, MOVE_MENACING_MOONRAZE_MAELSTROM}, + {SPECIES_LYCANROC_MIDDAY, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, + {SPECIES_LYCANROC_MIDNIGHT, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, + {SPECIES_LYCANROC_DUSK, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, + {SPECIES_MARSHADOW, ITEM_MARSHADIUM_Z, MOVE_SPECTRAL_THIEF, MOVE_SOUL_STEALING_7_STAR_STRIKE}, + {SPECIES_MIMIKYU_DISGUISED, ITEM_MIMIKIUM_Z, MOVE_PLAY_ROUGH, MOVE_LETS_SNUGGLE_FOREVER}, + {SPECIES_MIMIKYU_BUSTED, ITEM_MIMIKIUM_Z, MOVE_PLAY_ROUGH, MOVE_LETS_SNUGGLE_FOREVER}, + {SPECIES_MIMIKYU_TOTEM_DISGUISED, ITEM_MIMIKIUM_Z, MOVE_PLAY_ROUGH, MOVE_LETS_SNUGGLE_FOREVER}, + {SPECIES_MIMIKYU_TOTEM_BUSTED, ITEM_MIMIKIUM_Z, MOVE_PLAY_ROUGH, MOVE_LETS_SNUGGLE_FOREVER}, + {SPECIES_PIKACHU_ORIGINAL_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, + {SPECIES_PIKACHU_HOENN_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, + {SPECIES_PIKACHU_SINNOH_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, + {SPECIES_PIKACHU_UNOVA_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, + {SPECIES_PIKACHU_KALOS_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, + {SPECIES_PIKACHU_ALOLA_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, + {SPECIES_PIKACHU_PARTNER_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, + {SPECIES_PIKACHU_WORLD_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, + {SPECIES_PRIMARINA, ITEM_PRIMARIUM_Z, MOVE_SPARKLING_ARIA, MOVE_OCEANIC_OPERETTA}, + {SPECIES_SOLGALEO, ITEM_SOLGANIUM_Z, MOVE_SUNSTEEL_STRIKE, MOVE_SEARING_SUNRAZE_SMASH}, + {SPECIES_NECROZMA_DUSK_MANE, ITEM_SOLGANIUM_Z, MOVE_SUNSTEEL_STRIKE, MOVE_SEARING_SUNRAZE_SMASH}, + {SPECIES_TAPU_KOKO, ITEM_TAPUNIUM_Z, MOVE_NATURES_MADNESS, MOVE_GUARDIAN_OF_ALOLA}, + {SPECIES_TAPU_BULU, ITEM_TAPUNIUM_Z, MOVE_NATURES_MADNESS, MOVE_GUARDIAN_OF_ALOLA}, + {SPECIES_TAPU_LELE, ITEM_TAPUNIUM_Z, MOVE_NATURES_MADNESS, MOVE_GUARDIAN_OF_ALOLA}, + {SPECIES_TAPU_FINI, ITEM_TAPUNIUM_Z, MOVE_NATURES_MADNESS, MOVE_GUARDIAN_OF_ALOLA}, + {SPECIES_NECROZMA_ULTRA, ITEM_ULTRANECROZIUM_Z, MOVE_PHOTON_GEYSER, MOVE_LIGHT_THAT_BURNS_THE_SKY}, + {SPECIES_MEW, ITEM_MEWNIUM_Z, MOVE_PSYCHIC, MOVE_GENESIS_SUPERNOVA}, + {SPECIES_PIKACHU, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, + {SPECIES_EEVEE, ITEM_EEVIUM_Z, MOVE_LAST_RESORT, MOVE_EXTREME_EVOBOOST}, + {SPECIES_SNORLAX, ITEM_SNORLIUM_Z, MOVE_GIGA_IMPACT, MOVE_PULVERIZING_PANCAKE}, }; static const u8 sText_ResetStats[] = _("Reset Lowered Stats"); diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index 62ba52dd02..d285ad85f4 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -835,6 +835,12 @@ static const struct FormChange sMimikyuFormChangeTable[] = { {FORM_CHANGE_END_BATTLE, SPECIES_MIMIKYU_DISGUISED}, {FORM_CHANGE_TERMINATOR}, }; + +static const struct FormChange sMimikyuTotemFormChangeTable[] = { + {FORM_CHANGE_FAINT, SPECIES_MIMIKYU_TOTEM_DISGUISED}, + {FORM_CHANGE_END_BATTLE, SPECIES_MIMIKYU_TOTEM_DISGUISED}, + {FORM_CHANGE_TERMINATOR}, +}; #endif //P_FAMILY_MIMIKYU #if P_FAMILY_NECROZMA diff --git a/src/data/pokemon/form_species_tables.h b/src/data/pokemon/form_species_tables.h index 3fdd6dcbf5..736a7abe70 100644 --- a/src/data/pokemon/form_species_tables.h +++ b/src/data/pokemon/form_species_tables.h @@ -60,6 +60,7 @@ static const u16 sRattataFormSpeciesIdTable[] = { static const u16 sRaticateFormSpeciesIdTable[] = { SPECIES_RATICATE, SPECIES_RATICATE_ALOLAN, + SPECIES_RATICATE_ALOLAN_TOTEM, FORM_SPECIES_END, }; #endif //P_FAMILY_RATTATA @@ -90,6 +91,7 @@ static const u16 sPikachuFormSpeciesIdTable[] = { SPECIES_PIKACHU_PARTNER_CAP, SPECIES_PIKACHU_WORLD_CAP, SPECIES_PIKACHU_GIGANTAMAX, + SPECIES_PIKACHU_PARTNER, FORM_SPECIES_END, }; @@ -320,6 +322,7 @@ static const u16 sExeggutorFormSpeciesIdTable[] = { static const u16 sMarowakFormSpeciesIdTable[] = { SPECIES_MAROWAK, SPECIES_MAROWAK_ALOLAN, + SPECIES_MAROWAK_ALOLAN_TOTEM, FORM_SPECIES_END, }; #endif //P_FAMILY_CUBONE @@ -396,6 +399,7 @@ static const u16 sLaprasFormSpeciesIdTable[] = { static const u16 sEeveeFormSpeciesIdTable[] = { SPECIES_EEVEE, SPECIES_EEVEE_GIGANTAMAX, + SPECIES_EEVEE_PARTNER, FORM_SPECIES_END, }; #endif //P_FAMILY_EEVEE @@ -803,6 +807,13 @@ static const u16 sWormadamFormSpeciesIdTable[] = { SPECIES_WORMADAM_TRASH_CLOAK, FORM_SPECIES_END, }; + +static const u16 sMothimFormSpeciesIdTable[] = { + SPECIES_MOTHIM_PLANT_CLOAK, + SPECIES_MOTHIM_SANDY_CLOAK, + SPECIES_MOTHIM_TRASH_CLOAK, + FORM_SPECIES_END, +}; #endif //P_FAMILY_BURMY #if P_FAMILY_CHERUBI @@ -1116,6 +1127,54 @@ static const u16 sGreninjaFormSpeciesIdTable[] = { #endif //P_FAMILY_FROAKIE #if P_FAMILY_SCATTERBUG +static const u16 sScatterbugFormSpeciesIdTable[] = { + SPECIES_SCATTERBUG_ICY_SNOW, + SPECIES_SCATTERBUG_POLAR, + SPECIES_SCATTERBUG_TUNDRA, + SPECIES_SCATTERBUG_CONTINENTAL, + SPECIES_SCATTERBUG_GARDEN, + SPECIES_SCATTERBUG_ELEGANT, + SPECIES_SCATTERBUG_MEADOW, + SPECIES_SCATTERBUG_MODERN, + SPECIES_SCATTERBUG_MARINE, + SPECIES_SCATTERBUG_ARCHIPELAGO, + SPECIES_SCATTERBUG_HIGH_PLAINS, + SPECIES_SCATTERBUG_SANDSTORM, + SPECIES_SCATTERBUG_RIVER, + SPECIES_SCATTERBUG_MONSOON, + SPECIES_SCATTERBUG_SAVANNA, + SPECIES_SCATTERBUG_SUN, + SPECIES_SCATTERBUG_OCEAN, + SPECIES_SCATTERBUG_JUNGLE, + SPECIES_SCATTERBUG_FANCY, + SPECIES_SCATTERBUG_POKE_BALL, + FORM_SPECIES_END, +}; + +static const u16 sSpewpaFormSpeciesIdTable[] = { + SPECIES_SPEWPA_ICY_SNOW, + SPECIES_SPEWPA_POLAR, + SPECIES_SPEWPA_TUNDRA, + SPECIES_SPEWPA_CONTINENTAL, + SPECIES_SPEWPA_GARDEN, + SPECIES_SPEWPA_ELEGANT, + SPECIES_SPEWPA_MEADOW, + SPECIES_SPEWPA_MODERN, + SPECIES_SPEWPA_MARINE, + SPECIES_SPEWPA_ARCHIPELAGO, + SPECIES_SPEWPA_HIGH_PLAINS, + SPECIES_SPEWPA_SANDSTORM, + SPECIES_SPEWPA_RIVER, + SPECIES_SPEWPA_MONSOON, + SPECIES_SPEWPA_SAVANNA, + SPECIES_SPEWPA_SUN, + SPECIES_SPEWPA_OCEAN, + SPECIES_SPEWPA_JUNGLE, + SPECIES_SPEWPA_FANCY, + SPECIES_SPEWPA_POKE_BALL, + FORM_SPECIES_END, +}; + static const u16 sVivillonFormSpeciesIdTable[] = { SPECIES_VIVILLON_ICY_SNOW, SPECIES_VIVILLON_POLAR, @@ -1286,6 +1345,22 @@ static const u16 sDecidueyeFormSpeciesIdTable[] = { }; #endif //P_FAMILY_ROWLET +#if P_FAMILY_YUNGOOS +static const u16 sGumshoosFormSpeciesIdTable[] = { + SPECIES_GUMSHOOS, + SPECIES_GUMSHOOS_TOTEM, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_YUNGOOS + +#if P_FAMILY_GRUBBIN +static const u16 sVikavoltFormSpeciesIdTable[] = { + SPECIES_VIKAVOLT, + SPECIES_VIKAVOLT_TOTEM, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_GRUBBIN + #if P_FAMILY_ORICORIO static const u16 sOricorioFormSpeciesIdTable[] = { SPECIES_ORICORIO_BAILE, @@ -1296,6 +1371,14 @@ static const u16 sOricorioFormSpeciesIdTable[] = { }; #endif //P_FAMILY_ORICORIO +#if P_FAMILY_CUTIEFLY +static const u16 sRibombeeFormSpeciesIdTable[] = { + SPECIES_RIBOMBEE, + SPECIES_RIBOMBEE_TOTEM, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_CUTIEFLY + #if P_FAMILY_ROCKRUFF static const u16 sRockruffFormSpeciesIdTable[] = { SPECIES_ROCKRUFF, @@ -1319,6 +1402,30 @@ static const u16 sWishiwashiFormSpeciesIdTable[] = { }; #endif //P_FAMILY_WISHIWASHI +#if P_FAMILY_DEWPIDER +static const u16 sAraquanidFormSpeciesIdTable[] = { + SPECIES_ARAQUANID, + SPECIES_ARAQUANID_TOTEM, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_DEWPIDER + +#if P_FAMILY_FOMANTIS +static const u16 sLurantisFormSpeciesIdTable[] = { + SPECIES_LURANTIS, + SPECIES_LURANTIS_TOTEM, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_FOMANTIS + +#if P_FAMILY_SALANDIT +static const u16 sSalanditFormSpeciesIdTable[] = { + SPECIES_SALAZZLE, + SPECIES_SALAZZLE_TOTEM, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_FOMANTIS + #if P_FAMILY_TYPE_NULL static const u16 sSilvallyFormSpeciesIdTable[] = { SPECIES_SILVALLY_NORMAL, @@ -1363,14 +1470,32 @@ static const u16 sMiniorFormSpeciesIdTable[] = { }; #endif //P_FAMILY_MINIOR +#if P_FAMILY_TOGEDEMARU +static const u16 sTogedemaruFormSpeciesIdTable[] = { + SPECIES_TOGEDEMARU, + SPECIES_TOGEDEMARU_TOTEM, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_TOGEDEMARU + #if P_FAMILY_MIMIKYU static const u16 sMimikyuFormSpeciesIdTable[] = { SPECIES_MIMIKYU_DISGUISED, SPECIES_MIMIKYU_BUSTED, + SPECIES_MIMIKYU_TOTEM_DISGUISED, + SPECIES_MIMIKYU_TOTEM_BUSTED, FORM_SPECIES_END, }; #endif //P_FAMILY_MIMIKYU +#if P_FAMILY_JANGMO_O +static const u16 sKommoOFormSpeciesIdTable[] = { + SPECIES_KOMMO_O, + SPECIES_KOMMO_O_TOTEM, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_JANGMO_O + #if P_FAMILY_NECROZMA static const u16 sNecrozmaFormSpeciesIdTable[] = { SPECIES_NECROZMA, diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index 4d70fa5da4..63c5d752a8 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -1,181 +1,5 @@ #include "constants/abilities.h" - -// Shared Pokédex entries -const u8 gPichuPokedexText[] = _( - "It is still inept at retaining electricity.\n" - "When it is startled, it discharges power\n" - "accidentally. It gets better at holding\n" - "power as it grows older."); - -const u8 gPikachuPokedexText[] = _( - "It stores electricity in the electric sacs\n" - "on its cheeks. When it releases pent-up\n" - "energy in a burst, the electric power is\n" - "equal to a lightning bolt."); - -const u8 gUnownPokedexText[] = _( - "This Pokémon is shaped like ancient text\n" - "characters. Although research is ongoing,\n" - "it is a mystery as to which came first,\n" - "the ancient writings or the various Unown."); - -const u8 gDeoxysNormalPokedexText[] = _( - "Deoxys emerged from a virus that came\n" - "from space. It is highly intelligent and\n" - "can shoot lasers from the crystalline\n" - "organ on its chest."); - -const u8 gArceusPokedexText[] = _( - "It is told in mythology that this Pokémon\n" - "emerged from an egg and shaped all there\n" - "is in this world, before the universe\n" - "even existed."); - -const u8 gGenesectPokedexText[] = _( - "Over 300 million years ago, it was\n" - "feared as the strongest of hunters.\n" - "Team Plasma altered it and attached\n" - "a cannon to its back."); - -const u8 gGreninjaPokedexText[] = _( - "It appears and vanishes with a ninja's\n" - "grace. It toys with its enemies using swift\n" - "movements, while slicing them with throwing\n" - "stars made of compressed water."); - -const u8 gFurfrouPokedexText[] = _( - "Trimming its fluffy fur not only makes\n" - "it more elegant but also increases the\n" - "swiftness of its movements. These\n" - "Pokémon were the guardians of kings."); - -const u8 gXerneasPokedexText[] = _( - "Legends say that when the horns on\n" - "its head shine in seven colors, it is\n" - "sharing everlasting life. It slept for a\n" - "thousand years in the form of a tree"); - -const u8 gZygarde50PokedexText[] = _( - "It's said to be monitoring the ecosystem\n" - "from deep in the caves where it lives.\n" - "There are rumors that even greater power\n" - "lies hidden within its cells."); - -const u8 gZygarde10PokedexText[] = _( - "This is Zygarde when about 10% of\n" - "its pieces have been assembled. It\n" - "leaps at its opponent's chest and\n" - "sinks its sharp fangs into them."); - -const u8 gRockruffPokedexText[] = _( - "This Pokémon has lived with people since\n" - "times long ago. It can sense when its\n" - "Trainer is in the dumps and will stick\n" - "close by its Trainer's side."); - -const u8 gSilvallyNormalPokedexText[] = _( - "Its trust in its partner awakens it.\n" - "This Pokémon is capable of changing its\n" - "type by equipping special memories, a\n" - "trait that is well displayed in battle."); - -const u8 gSilvallyMemoryPokedexText[] = _( - "Upon awakening, its RKS System is\n" - "activated. By employing specific\n" - "memories, this Pokémon can adapt its\n" - "type to confound its enemies."); - -const u8 gMiniorMeteorPokedexText[] = _( - "Originally making its home in the ozone\n" - "layer, it hurtles to the ground when the\n" - "shell encasing its body grows too heavy.\n" - "It was born from mutated nanoparticles."); - -const u8 gMiniorCorePokedexText[] = _( - "If its core stays exposed, it will\n" - "soon die off. It's possible that it\n" - "may survive if it's put into a Poké Ball\n" - "quickly enough."); - -const u8 gAlcremieVanillaCreamPokedexText[] = _( - "When it trusts a Trainer, it will treat\n" - "them to berries it's decorated with cream."); - -const u8 gAlcremieRubyCreamPokedexText[] = _( - "The moment it evolved, it took on a\n" - "sweet and tart flavor. This is\n" - "because of the way its cells\n" - "spontaneously shifted during evolution."); - -const u8 gAlcremieMatchaCreamPokedexText[] = _( - "The moment it evolved, it took on\n" - "an aromatic flavor. This is because\n" - "of the way its cells spontaneously\n" - "shifted during evolution."); - -const u8 gAlcremieMintCreamPokedexText[] = _( - "The moment it evolved, it took on a\n" - "refreshing flavor. This is because\n" - "of the way its cells spontaneously\n" - "shifted during evolution."); - -const u8 gAlcremieLemonCreamPokedexText[] = _( - "The moment it evolved, it took on a\n" - "sour flavor. This is because of the\n" - "way its cells spontaneously shifted\n" - "during evolution."); - -const u8 gAlcremieSaltedCreamPokedexText[] = _( - "The moment it evolved, it took on a\n" - "salty flavor. This is because of the\n" - "way its cells spontaneously shifted\n" - "during evolution."); - -const u8 gAlcremieRubySwirlPokedexText[] = _( - "The moment it evolved, it took on a\n" - "mixed flavor. This is because of the\n" - "way its cells spontaneously shifted\n" - "during evolution."); - -const u8 gAlcremieCaramelSwirlPokedexText[] = _( - "The moment it evolved, it took on a\n" - "bitter flavor. This is because of\n" - "the way its cells spontaneously\n" - "shifted during evolution."); - -const u8 gAlcremieRainbowSwirlPokedexText[] = _( - "The moment it evolved, it took on a\n" - "complex flavor. This is because of\n" - "the way its cells spontaneously\n" - "shifted during evolution."); - -const u8 gToxtricityGigantamaxPokedexText[] = _( - "Out of control after its own\n" - "poison penetrated its brain, it tears\n" - "across the land in a rampage,\n" - "contaminating the earth with toxic sweat."); - -const u8 gOgerponTealMaskPokedexText[] = _( - "This Pokémon's type changes based on\n" - "which mask it's wearing. It confounds\n" - "its enemies with nimble movements\n" - "and kicks."); - -const u8 gOgerponWellspringMaskPokedexText[] = _( - "This form excels in both attack\n" - "and defense. It ceaselessly unleashes\n" - "moves like a spring gushes water."); - -const u8 gOgerponHearthflameMaskPokedexText[] = _( - "This form is the most aggressive,\n" - "bombarding enemies with the\n" - "intensity of flames blazing within a hearth."); - -const u8 gOgerponCornerstoneMaskPokedexText[] = _( - "In this form, it draws on the power\n" - "of stone. Its body is rock-solid,\n" - "protecting it from all manner of\n" - "attacks."); +#include "species_info/shared_dex_text.h" // Macros for ease of use. @@ -233,15 +57,15 @@ const struct SpeciesInfo gSpeciesInfo[] = .teachableLearnset = sNoneTeachableLearnset, }, - #include "species_info/gen_1.h" - #include "species_info/gen_2.h" - #include "species_info/gen_3.h" - #include "species_info/gen_4.h" - #include "species_info/gen_5.h" - #include "species_info/gen_6.h" - #include "species_info/gen_7.h" - #include "species_info/gen_8.h" - #include "species_info/gen_9.h" + #include "species_info/gen_1_families.h" + #include "species_info/gen_2_families.h" + #include "species_info/gen_3_families.h" + #include "species_info/gen_4_families.h" + #include "species_info/gen_5_families.h" + #include "species_info/gen_6_families.h" + #include "species_info/gen_7_families.h" + #include "species_info/gen_8_families.h" + #include "species_info/gen_9_families.h" [SPECIES_EGG] = { diff --git a/src/data/pokemon/species_info/gen_1.h b/src/data/pokemon/species_info/gen_1_families.h similarity index 98% rename from src/data/pokemon/species_info/gen_1.h rename to src/data/pokemon/species_info/gen_1_families.h index 0a948d27f8..c66b4a7a4e 100644 --- a/src/data/pokemon/species_info/gen_1.h +++ b/src/data/pokemon/species_info/gen_1_families.h @@ -985,7 +985,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), - .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Metapod"), .cryId = CRY_METAPOD, @@ -1227,7 +1227,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), - .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Kakuna"), .cryId = CRY_KAKUNA, @@ -1794,7 +1794,8 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .levelUpLearnset = sRattataAlolanLevelUpLearnset, .teachableLearnset = sRattataAlolanTeachableLearnset, .formSpeciesIdTable = sRattataFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 20, SPECIES_RATICATE_ALOLAN}), + .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 20, SPECIES_RATICATE_ALOLAN}, + {EVO_NONE, 0, SPECIES_RATICATE_ALOLAN_TOTEM}), }, [SPECIES_RATICATE_ALOLAN] = @@ -1823,11 +1824,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .categoryName = _("Mouse"), .height = 7, .weight = 255, - .description = COMPOUND_STRING( - "It forms a group of Rattata, which it \n" - "assumes command of. Each group\n" - "has its own territory, and disputes\n" - "over food happen often."), + .description = gRaticateAlolanPokedexText, .pokemonScale = 459, .pokemonOffset = 18, .trainerScale = 256, @@ -1851,6 +1848,58 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sRaticateAlolanTeachableLearnset, .formSpeciesIdTable = sRaticateFormSpeciesIdTable, }, + + [SPECIES_RATICATE_ALOLAN_TOTEM] = + { + .baseHP = 75, + .baseAttack = 71, + .baseDefense = 70, + .baseSpeed = 77, + .baseSpAttack = 40, + .baseSpDefense = 80, + .types = MON_TYPES(TYPE_DARK, TYPE_NORMAL), + .catchRate = 127, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 145 : 116, + .evYield_Speed = 2, + .itemRare = ITEM_PECHA_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_THICK_FAT, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Raticate"), + .cryId = CRY_RATICATE, + .natDexNum = NATIONAL_DEX_RATICATE, + .categoryName = _("Mouse"), + .height = 14, + .weight = 1050, + .description = gRaticateAlolanPokedexText, + .pokemonScale = 459, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_RaticateAlolan, + .frontPicSize = MON_COORDS_SIZE(56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_RaticateAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_RaticateAlolan, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_RaticateAlolan, + .shinyPalette = gMonShinyPalette_RaticateAlolan, + .iconSprite = gMonIcon_RaticateAlolan, + .iconPalIndex = 2, + FOOTPRINT(Raticate) + .isTotem = TRUE, + .isAlolanForm = TRUE, + .levelUpLearnset = sRaticateAlolanLevelUpLearnset, + .teachableLearnset = sRaticateAlolanTeachableLearnset, + .formSpeciesIdTable = sRaticateFormSpeciesIdTable, + }, #endif //P_ALOLAN_FORMS #endif //P_FAMILY_RATTATA @@ -3053,6 +3102,67 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #endif //P_GIGANTAMAX_FORMS + [SPECIES_PIKACHU_PARTNER] = + { + .baseHP = 45, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 120, + .baseSpAttack = 75, + .baseSpDefense = 60, + .types = MON_TYPES(TYPE_ELECTRIC), + .catchRate = 190, + .expYield = PIKACHU_EXP_YIELD, + .evYield_Speed = 2, + .itemRare = ITEM_LIGHT_BALL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pikachu"), + .cryId = CRY_PIKACHU, + .natDexNum = NATIONAL_DEX_PIKACHU, + .categoryName = _("Mouse"), + .height = 4, + .weight = 60, + .description = gPikachuPokedexText, + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Pikachu, + .frontPicFemale = gMonFrontPic_PikachuF, + .frontPicSize = MON_COORDS_SIZE(48, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Pikachu, + .frontAnimId = ANIM_FLASH_YELLOW, + .frontAnimDelay = 25, + .backPic = gMonBackPic_Pikachu, + .backPicFemale = gMonBackPic_PikachuF, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicSizeFemale = MON_COORDS_SIZE(64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + .palette = gMonPalette_Pikachu, + .shinyPalette = gMonShinyPalette_Pikachu, + .iconSprite = gMonIcon_Pikachu, + .iconPalIndex = 2, + #if P_CUSTOM_GENDER_DIFF_ICONS == TRUE + .iconSpriteFemale = gMonIcon_PikachuF, + .iconPalIndexFemale = 2, + #endif + FOOTPRINT(Pikachu) + .cannotBeTraded = TRUE, + .allPerfectIVs = TRUE, + .levelUpLearnset = sPikachuLevelUpLearnset, + .teachableLearnset = sPikachuTeachableLearnset, + .formSpeciesIdTable = sPikachuFormSpeciesIdTable, + }, + #define RAICHU_SPEED (P_UPDATED_STATS >= GEN_6 ? 110 : 100) #if P_UPDATED_EXP_YIELDS >= GEN_8 @@ -3138,7 +3248,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), - .abilities = { ABILITY_SURGE_SURFER, ABILITY_NONE }, + .abilities = { ABILITY_SURGE_SURFER, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Raichu"), .cryId = CRY_RAICHU, @@ -9024,7 +9134,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Gastly"), .cryId = CRY_GASTLY, @@ -9078,7 +9188,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Haunter"), .cryId = CRY_HAUNTER, @@ -10211,7 +10321,8 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .levelUpLearnset = sCuboneLevelUpLearnset, .teachableLearnset = sCuboneTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_MAROWAK}, - {EVO_NONE, 0, SPECIES_MAROWAK_ALOLAN}), + {EVO_NONE, 0, SPECIES_MAROWAK_ALOLAN}, + {EVO_NONE, 0, SPECIES_MAROWAK_ALOLAN_TOTEM}), }, [SPECIES_MAROWAK] = @@ -10295,11 +10406,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .categoryName = _("Bone Keeper"), .height = 10, .weight = 340, - .description = COMPOUND_STRING( - "The cursed flames that light up the bone\n" - "carried by this Pokémon are said\n" - "to cause both mental and physical\n" - "pain that will never fade."), + .description = gMarowakAlolanPokedexText, .pokemonScale = 293, .pokemonOffset = 12, .trainerScale = 256, @@ -10323,6 +10430,58 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sMarowakAlolanTeachableLearnset, .formSpeciesIdTable = sMarowakFormSpeciesIdTable, }, + + [SPECIES_MAROWAK_ALOLAN_TOTEM] = + { + .baseHP = 60, + .baseAttack = 80, + .baseDefense = 110, + .baseSpeed = 45, + .baseSpAttack = 50, + .baseSpDefense = 80, + .types = MON_TYPES(TYPE_FIRE, TYPE_GHOST), + .catchRate = 75, + .expYield = 149, + .evYield_Defense = 2, + .itemRare = ITEM_THICK_CLUB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), + .abilities = { ABILITY_ROCK_HEAD, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Marowak"), + .cryId = CRY_MAROWAK, + .natDexNum = NATIONAL_DEX_MAROWAK, + .categoryName = _("Bone Keeper"), + .height = 17, + .weight = 980, + .description = gMarowakAlolanPokedexText, + .pokemonScale = 293, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_MarowakAlolan, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_MarowakAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_MarowakAlolan, + .backPicSize = MON_COORDS_SIZE(56, 56), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_MarowakAlolan, + .shinyPalette = gMonShinyPalette_MarowakAlolan, + .iconSprite = gMonIcon_MarowakAlolan, + .iconPalIndex = 1, + FOOTPRINT(Marowak) + .isTotem = TRUE, + .isAlolanForm = TRUE, + .levelUpLearnset = sMarowakAlolanLevelUpLearnset, + .teachableLearnset = sMarowakAlolanTeachableLearnset, + .formSpeciesIdTable = sMarowakFormSpeciesIdTable, + }, #endif //P_ALOLAN_FORMS #endif //P_FAMILY_CUBONE @@ -10676,7 +10835,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #if P_UPDATED_ABILITIES >= GEN_8 .abilities = { ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_STENCH }, #else - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Koffing"), @@ -10736,7 +10895,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #if P_UPDATED_ABILITIES >= GEN_8 .abilities = { ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_STENCH }, #else - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, #endif .bodyColor = BODY_COLOR_PURPLE, .noFlip = TRUE, @@ -13438,11 +13597,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .categoryName = _("Evolution"), .height = 3, .weight = 65, - .description = COMPOUND_STRING( - "An Eevee has an unstable genetic makeup\n" - "that suddenly mutates due to its\n" - "environment. Radiation from various\n" - "Stones causes this Pokémon to evolve."), + .description = gEeveePokedexText, .pokemonScale = 476, .pokemonOffset = 18, .trainerScale = 256, @@ -13538,6 +13693,61 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #endif //P_GIGANTAMAX_FORMS + [SPECIES_EEVEE_PARTNER] = + { + .baseHP = 65, + .baseAttack = 75, + .baseDefense = 70, + .baseSpeed = 75, + .baseSpAttack = 65, + .baseSpDefense = 85, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 65 : 92, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_RUN_AWAY, ABILITY_ADAPTABILITY, ABILITY_ANTICIPATION }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Eevee"), + .cryId = CRY_EEVEE, + .natDexNum = NATIONAL_DEX_EEVEE, + .categoryName = _("Evolution"), + .height = 3, + .weight = 65, + .description = gEeveePokedexText, + .pokemonScale = 476, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Eevee, + .frontPicFemale = gMonFrontPic_EeveeF, + .frontPicSize = MON_COORDS_SIZE(40, 48), + .frontPicSizeFemale = MON_COORDS_SIZE(40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Eevee, + .frontAnimId = ANIM_V_STRETCH, + .backPic = gMonBackPic_Eevee, + .backPicFemale = gMonBackPic_EeveeF, + .backPicSize = MON_COORDS_SIZE(56, 48), + .backPicSizeFemale = MON_COORDS_SIZE(56, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + .palette = gMonPalette_Eevee, + .shinyPalette = gMonShinyPalette_Eevee, + .iconSprite = gMonIcon_Eevee, + .iconPalIndex = 2, + FOOTPRINT(Eevee) + .cannotBeTraded = TRUE, + .allPerfectIVs = TRUE, + .levelUpLearnset = sEeveeLevelUpLearnset, + .teachableLearnset = sEeveeTeachableLearnset, + .formSpeciesIdTable = sEeveeFormSpeciesIdTable, + }, + [SPECIES_VAPOREON] = { .baseHP = 130, @@ -15392,7 +15602,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = 100, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_SYNCHRONIZE, ABILITY_NONE }, + .abilities = { ABILITY_SYNCHRONIZE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PINK, .speciesName = _("Mew"), .cryId = CRY_MEW, diff --git a/src/data/pokemon/species_info/gen_2.h b/src/data/pokemon/species_info/gen_2_families.h similarity index 99% rename from src/data/pokemon/species_info/gen_2.h rename to src/data/pokemon/species_info/gen_2_families.h index 5a2065021f..68d15b3398 100644 --- a/src/data/pokemon/species_info/gen_2.h +++ b/src/data/pokemon/species_info/gen_2_families.h @@ -2807,7 +2807,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = 35, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Misdreavus"), .cryId = CRY_MISDREAVUS, @@ -2863,7 +2863,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = 35, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Mismagius"), .cryId = CRY_MISMAGIUS, @@ -2920,7 +2920,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, \ + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, \ .bodyColor = BODY_COLOR_BLACK, \ .noFlip = _noFlip, \ .speciesName = _("Unown"), \ @@ -4500,7 +4500,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), - .abilities = { ABILITY_MINDS_EYE, ABILITY_NONE }, + .abilities = { ABILITY_MINDS_EYE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Ursaluna"), .cryId = CRY_URSALUNA, @@ -6112,7 +6112,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = 35, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER), - .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Pupitar"), .cryId = CRY_PUPITAR, @@ -6420,7 +6420,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = 100, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_NATURAL_CURE, ABILITY_NONE }, + .abilities = { ABILITY_NATURAL_CURE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Celebi"), .cryId = CRY_CELEBI, diff --git a/src/data/pokemon/species_info/gen_3.h b/src/data/pokemon/species_info/gen_3_families.h similarity index 99% rename from src/data/pokemon/species_info/gen_3.h rename to src/data/pokemon/species_info/gen_3_families.h index 6664a61899..fb34fdc4af 100644 --- a/src/data/pokemon/species_info/gen_3.h +++ b/src/data/pokemon/species_info/gen_3_families.h @@ -1168,7 +1168,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), - .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Silcoon"), .cryId = CRY_SILCOON, @@ -1294,7 +1294,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), - .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Cascoon"), .cryId = CRY_CASCOON, @@ -2587,7 +2587,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), - .abilities = { ABILITY_TRUANT, ABILITY_NONE }, + .abilities = { ABILITY_TRUANT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Slakoth"), .cryId = CRY_SLAKOTH, @@ -2640,7 +2640,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), - .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_NONE }, + .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Vigoroth"), .cryId = CRY_VIGOROTH, @@ -2699,7 +2699,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), - .abilities = { ABILITY_TRUANT, ABILITY_NONE }, + .abilities = { ABILITY_TRUANT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Slaking"), .cryId = CRY_SLAKING, @@ -2861,7 +2861,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), - .abilities = { ABILITY_WONDER_GUARD, ABILITY_NONE }, + .abilities = { ABILITY_WONDER_GUARD, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Shedinja"), .cryId = CRY_SHEDINJA, @@ -6015,7 +6015,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Lunatone"), .cryId = CRY_LUNATONE, @@ -6078,7 +6078,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Solrock"), .cryId = CRY_SOLROCK, @@ -6349,7 +6349,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Baltoy"), .cryId = CRY_BALTOY, @@ -6404,7 +6404,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Claydol"), .cryId = CRY_CLAYDOL, @@ -6815,7 +6815,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_FORECAST, ABILITY_NONE }, + .abilities = { ABILITY_FORECAST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Castform"), .cryId = CRY_CASTFORM, @@ -6872,7 +6872,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_FORECAST, ABILITY_NONE }, + .abilities = { ABILITY_FORECAST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Castform"), .cryId = CRY_CASTFORM, @@ -6929,7 +6929,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_FORECAST, ABILITY_NONE }, + .abilities = { ABILITY_FORECAST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Castform"), .cryId = CRY_CASTFORM, @@ -6986,7 +6986,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_FORECAST, ABILITY_NONE }, + .abilities = { ABILITY_FORECAST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Castform"), .cryId = CRY_CASTFORM, @@ -7502,7 +7502,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Chingling"), .cryId = CRY_CHINGLING, @@ -7564,7 +7564,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Chimecho"), .cryId = CRY_CHIMECHO, @@ -9061,7 +9061,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 90, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Latias"), .cryId = CRY_LATIAS, @@ -9184,7 +9184,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 90, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Latios"), .cryId = CRY_LATIOS, @@ -9307,7 +9307,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_DRIZZLE, ABILITY_NONE }, + .abilities = { ABILITY_DRIZZLE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Kyogre"), .cryId = CRY_KYOGRE, @@ -9428,7 +9428,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_DROUGHT, ABILITY_NONE }, + .abilities = { ABILITY_DROUGHT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Groudon"), .cryId = CRY_GROUDON, @@ -9550,7 +9550,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_AIR_LOCK, ABILITY_NONE }, + .abilities = { ABILITY_AIR_LOCK, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Rayquaza"), .cryId = CRY_RAYQUAZA, @@ -9677,7 +9677,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 100, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE }, + .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Jirachi"), .cryId = CRY_JIRACHI, @@ -9743,7 +9743,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Deoxys"), .cryId = CRY_DEOXYS, @@ -9795,7 +9795,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Deoxys"), .cryId = CRY_DEOXYS, @@ -9847,7 +9847,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Deoxys"), .cryId = CRY_DEOXYS, @@ -9898,7 +9898,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .noFlip = TRUE, .speciesName = _("Deoxys"), diff --git a/src/data/pokemon/species_info/gen_4.h b/src/data/pokemon/species_info/gen_4_families.h similarity index 97% rename from src/data/pokemon/species_info/gen_4.h rename to src/data/pokemon/species_info/gen_4_families.h index ca4283c78b..8cdd112e7b 100644 --- a/src/data/pokemon/species_info/gen_4.h +++ b/src/data/pokemon/species_info/gen_4_families.h @@ -1378,7 +1378,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .formSpeciesIdTable = sBurmyFormSpeciesIdTable, .formChangeTable = sBurmyFormChangeTable, .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_PLANT_CLOAK}, - {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM}), + {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM_PLANT_CLOAK}), }, [SPECIES_BURMY_SANDY_CLOAK] = @@ -1436,7 +1436,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .formSpeciesIdTable = sBurmyFormSpeciesIdTable, .formChangeTable = sBurmyFormChangeTable, .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_SANDY_CLOAK}, - {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM}), + {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM_SANDY_CLOAK}), }, [SPECIES_BURMY_TRASH_CLOAK] = @@ -1494,7 +1494,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .formSpeciesIdTable = sBurmyFormSpeciesIdTable, .formChangeTable = sBurmyFormChangeTable, .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_TRASH_CLOAK}, - {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM}), + {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM_TRASH_CLOAK}), }, [SPECIES_WORMADAM_PLANT_CLOAK] = @@ -1663,60 +1663,61 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .formSpeciesIdTable = sWormadamFormSpeciesIdTable, }, - [SPECIES_MOTHIM] = - { - .baseHP = 70, - .baseAttack = 94, - .baseDefense = 50, - .baseSpeed = 66, - .baseSpAttack = 94, - .baseSpDefense = 50, - .types = MON_TYPES(TYPE_BUG, TYPE_FLYING), - .catchRate = 45, - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 148 : 159, - .evYield_Attack = 1, - .evYield_SpAttack = 1, - .itemRare = ITEM_SILVER_POWDER, - .genderRatio = MON_MALE, - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), - .abilities = { ABILITY_SWARM, ABILITY_NONE, ABILITY_TINTED_LENS }, - .bodyColor = BODY_COLOR_YELLOW, - .speciesName = _("Mothim"), - .cryId = CRY_MOTHIM, - .natDexNum = NATIONAL_DEX_MOTHIM, - .categoryName = _("Moth"), - .height = 9, - .weight = 233, - .description = COMPOUND_STRING( - "It does not keep a nest. While it\n" - "loves floral honey, it won't gather\n" - "any itself. Instead, it plots to steal\n" - "honey collected by Combee."), - .pokemonScale = 338, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - .frontPic = gMonFrontPic_Mothim, - .frontPicSize = MON_COORDS_SIZE(64, 64), - .frontPicYOffset = 12, - .frontAnimFrames = sAnims_Mothim, - .frontAnimId = ANIM_H_SLIDE_WOBBLE, - .enemyMonElevation = 10, - .backPic = gMonBackPic_Mothim, - .backPicSize = MON_COORDS_SIZE(64, 56), - .backPicYOffset = 8, - .backAnimId = BACK_ANIM_H_SHAKE, - .palette = gMonPalette_Mothim, - .shinyPalette = gMonShinyPalette_Mothim, - .iconSprite = gMonIcon_Mothim, - .iconPalIndex = 0, - FOOTPRINT(Mothim) - .levelUpLearnset = sMothimLevelUpLearnset, - .teachableLearnset = sMothimTeachableLearnset, - }, +#define MOTHIM_SPECIES_INFO \ + { \ + .baseHP = 70, \ + .baseAttack = 94, \ + .baseDefense = 50, \ + .baseSpeed = 66, \ + .baseSpAttack = 94, \ + .baseSpDefense = 50, \ + .types = MON_TYPES(TYPE_BUG, TYPE_FLYING), \ + .catchRate = 45, \ + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 148 : 159, \ + .evYield_Attack = 1, \ + .evYield_SpAttack = 1, \ + .itemRare = ITEM_SILVER_POWDER, \ + .genderRatio = MON_MALE, \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), \ + .abilities = { ABILITY_SWARM, ABILITY_NONE, ABILITY_TINTED_LENS }, \ + .bodyColor = BODY_COLOR_YELLOW, \ + .speciesName = _("Mothim"), \ + .cryId = CRY_MOTHIM, \ + .natDexNum = NATIONAL_DEX_MOTHIM, \ + .categoryName = _("Moth"), \ + .height = 9, \ + .weight = 233, \ + .description = gMothimPokedexText, \ + .pokemonScale = 338, \ + .pokemonOffset = 8, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontPic = gMonFrontPic_Mothim, \ + .frontPicSize = MON_COORDS_SIZE(64, 64), \ + .frontPicYOffset = 12, \ + .frontAnimFrames = sAnims_Mothim, \ + .frontAnimId = ANIM_H_SLIDE_WOBBLE, \ + .enemyMonElevation = 10, \ + .backPic = gMonBackPic_Mothim, \ + .backPicSize = MON_COORDS_SIZE(64, 56), \ + .backPicYOffset = 8, \ + .backAnimId = BACK_ANIM_H_SHAKE, \ + .palette = gMonPalette_Mothim, \ + .shinyPalette = gMonShinyPalette_Mothim, \ + .iconSprite = gMonIcon_Mothim, \ + .iconPalIndex = 0, \ + FOOTPRINT(Mothim) \ + .levelUpLearnset = sMothimLevelUpLearnset, \ + .teachableLearnset = sMothimTeachableLearnset, \ + .formSpeciesIdTable = sMothimFormSpeciesIdTable, \ + } + + [SPECIES_MOTHIM_PLANT_CLOAK] = MOTHIM_SPECIES_INFO, + [SPECIES_MOTHIM_SANDY_CLOAK] = MOTHIM_SPECIES_INFO, + [SPECIES_MOTHIM_TRASH_CLOAK] = MOTHIM_SPECIES_INFO, #endif //P_FAMILY_BURMY #if P_FAMILY_COMBEE @@ -2020,7 +2021,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_GRASS), - .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PINK, .speciesName = _("Cherubi"), .cryId = CRY_CHERUBI, @@ -2074,7 +2075,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_GRASS), - .abilities = { ABILITY_FLOWER_GIFT, ABILITY_NONE }, + .abilities = { ABILITY_FLOWER_GIFT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Cherrim"), .cryId = CRY_CHERRIM, @@ -2129,7 +2130,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_GRASS), - .abilities = { ABILITY_FLOWER_GIFT, ABILITY_NONE }, + .abilities = { ABILITY_FLOWER_GIFT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PINK, .speciesName = _("Cherrim"), .cryId = CRY_CHERRIM, @@ -3860,7 +3861,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Carnivine"), .cryId = CRY_CARNIVINE, @@ -4208,7 +4209,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Rotom"), .cryId = CRY_ROTOM, @@ -4272,7 +4273,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Rotom"), .cryId = CRY_ROTOM, @@ -4328,7 +4329,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .noFlip = TRUE, .speciesName = _("Rotom"), @@ -4385,7 +4386,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Rotom"), .cryId = CRY_ROTOM, @@ -4441,7 +4442,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Rotom"), .cryId = CRY_ROTOM, @@ -4498,7 +4499,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Rotom"), .cryId = CRY_ROTOM, @@ -4562,7 +4563,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = 140, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Uxie"), .cryId = CRY_UXIE, @@ -4626,7 +4627,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = 140, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PINK, .speciesName = _("Mesprit"), .cryId = CRY_MESPRIT, @@ -4689,7 +4690,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = 140, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Azelf"), .cryId = CRY_AZELF, @@ -5052,7 +5053,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_SLOW_START, ABILITY_NONE }, + .abilities = { ABILITY_SLOW_START, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Regigigas"), .cryId = CRY_REGIGIGAS, @@ -5234,7 +5235,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = 100, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Cresselia"), .cryId = CRY_CRESSELIA, @@ -5296,7 +5297,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FAIRY), - .abilities = { ABILITY_HYDRATION, ABILITY_NONE }, + .abilities = { ABILITY_HYDRATION, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Phione"), .cryId = CRY_PHIONE, @@ -5356,7 +5357,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FAIRY), - .abilities = { ABILITY_HYDRATION, ABILITY_NONE }, + .abilities = { ABILITY_HYDRATION, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Manaphy"), .cryId = CRY_MANAPHY, @@ -5419,7 +5420,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_BAD_DREAMS, ABILITY_NONE }, + .abilities = { ABILITY_BAD_DREAMS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Darkrai"), .cryId = CRY_DARKRAI, @@ -5485,7 +5486,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = 100, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_NATURAL_CURE, ABILITY_NONE }, + .abilities = { ABILITY_NATURAL_CURE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Shaymin"), .cryId = CRY_SHAYMIN_LAND, @@ -5546,7 +5547,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = 100, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE }, + .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, .speciesName = _("Shaymin"), @@ -5595,55 +5596,55 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = #define ARCEUS_EXP_YIELD 255 #endif -#define ARCEUS_SPECIES_INFO(type, typeName) \ - { \ - .baseHP = 120, \ - .baseAttack = 120, \ - .baseDefense = 120, \ - .baseSpeed = 120, \ - .baseSpAttack = 120, \ - .baseSpDefense = 120, \ - .types = MON_TYPES(type), \ - .catchRate = 3, \ - .expYield = ARCEUS_EXP_YIELD, \ - .evYield_HP = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_MULTITYPE, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_WHITE, \ - .speciesName = _("Arceus"), \ - .cryId = CRY_ARCEUS, \ - .natDexNum = NATIONAL_DEX_ARCEUS, \ - .categoryName = _("Alpha"), \ - .height = 32, \ - .weight = 3200, \ - .description = gArceusPokedexText, \ - .pokemonScale = 256, \ - .pokemonOffset = 0, \ - .trainerScale = 495, \ - .trainerOffset = 10, \ - .frontPic = gMonFrontPic_Arceus, \ - .frontPicSize = MON_COORDS_SIZE(64, 64), \ - .frontPicYOffset = 0, \ - .frontAnimFrames = sAnims_Arceus, \ - .frontAnimId = ANIM_GROW_VIBRATE, \ - .backPic = gMonBackPic_Arceus, \ - .backPicSize = MON_COORDS_SIZE(64, 64), \ - .backPicYOffset = 3, \ - .backAnimId = BACK_ANIM_GROW_STUTTER, \ - .palette = gMonPalette_Arceus ##typeName, \ - .shinyPalette = gMonShinyPalette_Arceus ##typeName, \ - .iconSprite = gMonIcon_Arceus, \ - .iconPalIndex = 1, \ - FOOTPRINT(Arceus) \ - .levelUpLearnset = sArceusLevelUpLearnset, \ - .teachableLearnset = sArceusTeachableLearnset, \ - .formSpeciesIdTable = sArceusFormSpeciesIdTable, \ - .formChangeTable = sArceusFormChangeTable, \ - .isMythical = TRUE, \ +#define ARCEUS_SPECIES_INFO(type, typeName) \ + { \ + .baseHP = 120, \ + .baseAttack = 120, \ + .baseDefense = 120, \ + .baseSpeed = 120, \ + .baseSpAttack = 120, \ + .baseSpDefense = 120, \ + .types = MON_TYPES(type), \ + .catchRate = 3, \ + .expYield = ARCEUS_EXP_YIELD, \ + .evYield_HP = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ + .abilities = { ABILITY_MULTITYPE, ABILITY_NONE, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_WHITE, \ + .speciesName = _("Arceus"), \ + .cryId = CRY_ARCEUS, \ + .natDexNum = NATIONAL_DEX_ARCEUS, \ + .categoryName = _("Alpha"), \ + .height = 32, \ + .weight = 3200, \ + .description = gArceusPokedexText, \ + .pokemonScale = 256, \ + .pokemonOffset = 0, \ + .trainerScale = 495, \ + .trainerOffset = 10, \ + .frontPic = gMonFrontPic_Arceus, \ + .frontPicSize = MON_COORDS_SIZE(64, 64), \ + .frontPicYOffset = 0, \ + .frontAnimFrames = sAnims_Arceus, \ + .frontAnimId = ANIM_GROW_VIBRATE, \ + .backPic = gMonBackPic_Arceus, \ + .backPicSize = MON_COORDS_SIZE(64, 64), \ + .backPicYOffset = 3, \ + .backAnimId = BACK_ANIM_GROW_STUTTER, \ + .palette = gMonPalette_Arceus ##typeName, \ + .shinyPalette = gMonShinyPalette_Arceus ##typeName, \ + .iconSprite = gMonIcon_Arceus, \ + .iconPalIndex = 1, \ + FOOTPRINT(Arceus) \ + .levelUpLearnset = sArceusLevelUpLearnset, \ + .teachableLearnset = sArceusTeachableLearnset, \ + .formSpeciesIdTable = sArceusFormSpeciesIdTable, \ + .formChangeTable = sArceusFormChangeTable, \ + .isMythical = TRUE, \ } [SPECIES_ARCEUS_NORMAL] = ARCEUS_SPECIES_INFO(TYPE_NORMAL, Normal), diff --git a/src/data/pokemon/species_info/gen_5.h b/src/data/pokemon/species_info/gen_5_families.h similarity index 99% rename from src/data/pokemon/species_info/gen_5.h rename to src/data/pokemon/species_info/gen_5_families.h index a00c691c17..1edf573743 100644 --- a/src/data/pokemon/species_info/gen_5.h +++ b/src/data/pokemon/species_info/gen_5_families.h @@ -21,7 +21,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 100, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_VICTORY_STAR, ABILITY_NONE }, + .abilities = { ABILITY_VICTORY_STAR, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Victini"), .cryId = CRY_VICTINI, @@ -4399,7 +4399,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_MUMMY, ABILITY_NONE }, + .abilities = { ABILITY_MUMMY, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Yamask"), .cryId = CRY_YAMASK, @@ -4455,7 +4455,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_MUMMY, ABILITY_NONE }, + .abilities = { ABILITY_MUMMY, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Cofagrigus"), .cryId = CRY_COFAGRIGUS, @@ -4508,7 +4508,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_WANDERING_SPIRIT, ABILITY_NONE }, + .abilities = { ABILITY_WANDERING_SPIRIT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Yamask"), .cryId = CRY_YAMASK, @@ -4564,7 +4564,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_WANDERING_SPIRIT, ABILITY_NONE }, + .abilities = { ABILITY_WANDERING_SPIRIT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Runerigus"), .cryId = CRY_RUNERIGUS, @@ -4726,7 +4726,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING, EGG_GROUP_WATER_3), - .abilities = { ABILITY_DEFEATIST, ABILITY_NONE }, + .abilities = { ABILITY_DEFEATIST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Archen"), .cryId = CRY_ARCHEN, @@ -4779,7 +4779,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING, EGG_GROUP_WATER_3), - .abilities = { ABILITY_DEFEATIST, ABILITY_NONE }, + .abilities = { ABILITY_DEFEATIST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Archeops"), .cryId = CRY_ARCHEOPS, @@ -5007,7 +5007,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), - .abilities = { ABILITY_ILLUSION, ABILITY_NONE }, + .abilities = { ABILITY_ILLUSION, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Zorua"), .cryId = CRY_ZORUA, @@ -5061,7 +5061,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), - .abilities = { ABILITY_ILLUSION, ABILITY_NONE }, + .abilities = { ABILITY_ILLUSION, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Zoroark"), .cryId = CRY_ZOROARK, @@ -5115,7 +5115,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), - .abilities = { ABILITY_ILLUSION, ABILITY_NONE }, + .abilities = { ABILITY_ILLUSION, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Zorua"), .cryId = CRY_ZORUA, @@ -5170,7 +5170,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), - .abilities = { ABILITY_ILLUSION, ABILITY_NONE }, + .abilities = { ABILITY_ILLUSION, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Zoroark"), .cryId = CRY_ZOROARK, @@ -6919,7 +6919,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS, EGG_GROUP_MINERAL), - .abilities = { ABILITY_IRON_BARBS, ABILITY_NONE }, + .abilities = { ABILITY_IRON_BARBS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Ferroseed"), .cryId = CRY_FERROSEED, @@ -7194,7 +7194,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Tynamo"), .cryId = CRY_TYNAMO, @@ -7249,7 +7249,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Eelektrik"), .cryId = CRY_EELEKTRIK, @@ -7303,7 +7303,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Eelektross"), .cryId = CRY_EELEKTROSS, @@ -7908,7 +7908,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Cryogonal"), .cryId = CRY_CRYOGONAL, @@ -8125,7 +8125,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_MIMICRY, ABILITY_NONE }, + .abilities = { ABILITY_MIMICRY, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Stunfisk"), .cryId = CRY_STUNFISK, @@ -9052,7 +9052,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 35, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_DRAGON), - .abilities = { ABILITY_HUSTLE, ABILITY_NONE }, + .abilities = { ABILITY_HUSTLE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Deino"), .cryId = CRY_DEINO, @@ -9105,7 +9105,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 35, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_DRAGON), - .abilities = { ABILITY_HUSTLE, ABILITY_NONE }, + .abilities = { ABILITY_HUSTLE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Zweilous"), .cryId = CRY_ZWEILOUS, @@ -9158,7 +9158,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 35, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_DRAGON), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Hydreigon"), .cryId = CRY_HYDREIGON, @@ -9323,7 +9323,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 35, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE }, + .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Cobalion"), .cryId = CRY_COBALION, @@ -9378,7 +9378,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 35, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE }, + .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Terrakion"), .cryId = CRY_TERRAKION, @@ -9433,7 +9433,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 35, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE }, + .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Virizion"), .cryId = CRY_VIRIZION, @@ -9715,7 +9715,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_TURBOBLAZE, ABILITY_NONE }, + .abilities = { ABILITY_TURBOBLAZE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Reshiram"), .cryId = CRY_RESHIRAM, @@ -9770,7 +9770,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_TERAVOLT, ABILITY_NONE }, + .abilities = { ABILITY_TERAVOLT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Zekrom"), .cryId = CRY_ZEKROM, @@ -9881,7 +9881,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 90, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Landorus"), .cryId = CRY_LANDORUS_THERIAN, @@ -9940,7 +9940,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, .speciesName = _("Kyurem"), @@ -10002,7 +10002,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_TURBOBLAZE, ABILITY_NONE }, + .abilities = { ABILITY_TURBOBLAZE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, .speciesName = _("Kyurem"), @@ -10064,7 +10064,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_TERAVOLT, ABILITY_NONE }, + .abilities = { ABILITY_TERAVOLT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, .speciesName = _("Kyurem"), @@ -10123,7 +10123,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 35, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE }, + .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Keldeo"), .cryId = CRY_KELDEO, @@ -10178,7 +10178,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 35, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE }, + .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, .speciesName = _("Keldeo"), @@ -10240,7 +10240,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 100, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE }, + .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, .speciesName = _("Meloetta"), @@ -10301,7 +10301,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = 100, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE }, + .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, .speciesName = _("Meloetta"), @@ -10342,57 +10342,57 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = #endif //P_FAMILY_MELOETTA #if P_FAMILY_GENESECT -#define GENESECT_SPECIES_INFO(form) \ - { \ - .baseHP = 71, \ - .baseAttack = 120, \ - .baseDefense = 95, \ - .baseSpeed = 99, \ - .baseSpAttack = 120, \ - .baseSpDefense = 95, \ - .types = MON_TYPES(TYPE_BUG, TYPE_STEEL), \ - .catchRate = 3, \ - .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, \ - .evYield_Attack = 1, \ - .evYield_Speed = 1, \ - .evYield_SpAttack = 1, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_DOWNLOAD, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_PURPLE, \ - .speciesName = _("Genesect"), \ - .cryId = CRY_GENESECT, \ - .natDexNum = NATIONAL_DEX_GENESECT, \ - .categoryName = _("Paleozoic"), \ - .height = 15, \ - .weight = 825, \ - .description = gGenesectPokedexText, \ - .pokemonScale = 268, \ - .pokemonOffset = 2, \ - .trainerScale = 271, \ - .trainerOffset = 0, \ - .frontPic = gMonFrontPic_Genesect, \ - .frontPicSize = MON_COORDS_SIZE(56, 64), \ - .frontPicYOffset = 0, \ - .frontAnimFrames = sAnims_Genesect, \ - .frontAnimId = ANIM_H_VIBRATE, \ - .backPic = gMonBackPic_Genesect, \ - .backPicSize = MON_COORDS_SIZE(64, 48), \ - .backPicYOffset = 8, \ - .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, \ - .palette = gMonPalette_##form, \ - .shinyPalette = gMonShinyPalette_##form, \ - .iconSprite = gMonIcon_Genesect, \ - .iconPalIndex = 2, \ - FOOTPRINT(Genesect) \ - .levelUpLearnset = sGenesectLevelUpLearnset, \ - .teachableLearnset = sGenesectTeachableLearnset, \ - .formSpeciesIdTable = sGenesectFormSpeciesIdTable, \ - .formChangeTable = sGenesectFormChangeTable, \ - .isMythical = TRUE, \ +#define GENESECT_SPECIES_INFO(form) \ + { \ + .baseHP = 71, \ + .baseAttack = 120, \ + .baseDefense = 95, \ + .baseSpeed = 99, \ + .baseSpAttack = 120, \ + .baseSpDefense = 95, \ + .types = MON_TYPES(TYPE_BUG, TYPE_STEEL), \ + .catchRate = 3, \ + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, \ + .evYield_Attack = 1, \ + .evYield_Speed = 1, \ + .evYield_SpAttack = 1, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ + .abilities = { ABILITY_DOWNLOAD, ABILITY_NONE, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .speciesName = _("Genesect"), \ + .cryId = CRY_GENESECT, \ + .natDexNum = NATIONAL_DEX_GENESECT, \ + .categoryName = _("Paleozoic"), \ + .height = 15, \ + .weight = 825, \ + .description = gGenesectPokedexText, \ + .pokemonScale = 268, \ + .pokemonOffset = 2, \ + .trainerScale = 271, \ + .trainerOffset = 0, \ + .frontPic = gMonFrontPic_Genesect, \ + .frontPicSize = MON_COORDS_SIZE(56, 64), \ + .frontPicYOffset = 0, \ + .frontAnimFrames = sAnims_Genesect, \ + .frontAnimId = ANIM_H_VIBRATE, \ + .backPic = gMonBackPic_Genesect, \ + .backPicSize = MON_COORDS_SIZE(64, 48), \ + .backPicYOffset = 8, \ + .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, \ + .palette = gMonPalette_##form, \ + .shinyPalette = gMonShinyPalette_##form, \ + .iconSprite = gMonIcon_Genesect, \ + .iconPalIndex = 2, \ + FOOTPRINT(Genesect) \ + .levelUpLearnset = sGenesectLevelUpLearnset, \ + .teachableLearnset = sGenesectTeachableLearnset, \ + .formSpeciesIdTable = sGenesectFormSpeciesIdTable, \ + .formChangeTable = sGenesectFormChangeTable, \ + .isMythical = TRUE, \ } [SPECIES_GENESECT] = GENESECT_SPECIES_INFO(Genesect), diff --git a/src/data/pokemon/species_info/gen_6.h b/src/data/pokemon/species_info/gen_6_families.h similarity index 94% rename from src/data/pokemon/species_info/gen_6.h rename to src/data/pokemon/species_info/gen_6_families.h index 7b0cf9e9d5..ce1f1da228 100644 --- a/src/data/pokemon/species_info/gen_6.h +++ b/src/data/pokemon/species_info/gen_6_families.h @@ -857,113 +857,149 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = #endif //P_FAMILY_FLETCHLING #if P_FAMILY_SCATTERBUG - [SPECIES_SCATTERBUG] = - { - .baseHP = 38, - .baseAttack = 35, - .baseDefense = 40, - .baseSpeed = 35, - .baseSpAttack = 27, - .baseSpDefense = 25, - .types = MON_TYPES(TYPE_BUG), - .catchRate = 255, - .expYield = 40, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), - .abilities = { ABILITY_SHIELD_DUST, ABILITY_COMPOUND_EYES, ABILITY_FRIEND_GUARD }, - .bodyColor = BODY_COLOR_BLACK, - .speciesName = _("Scatterbug"), - .cryId = CRY_SCATTERBUG, - .natDexNum = NATIONAL_DEX_SCATTERBUG, - .categoryName = _("Scatterdust"), - .height = 3, - .weight = 25, - .description = COMPOUND_STRING( - "When under attack from bird Pokémon,\n" - "it spews a poisonous black powder that\n" - "causes paralysis on contact. Scatterbug\n" - "can live in any region or climate."), - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - .frontPic = gMonFrontPic_Scatterbug, - .frontPicSize = MON_COORDS_SIZE(32, 48), - .frontPicYOffset = 13, - .frontAnimFrames = sAnims_Scatterbug, - .frontAnimId = ANIM_V_STRETCH, - .backPic = gMonBackPic_Scatterbug, - .backPicSize = MON_COORDS_SIZE(40, 56), - .backPicYOffset = 12, - .backAnimId = BACK_ANIM_H_SLIDE, - .palette = gMonPalette_Scatterbug, - .shinyPalette = gMonShinyPalette_Scatterbug, - .iconSprite = gMonIcon_Scatterbug, - .iconPalIndex = 1, - FOOTPRINT(Scatterbug) - .tmIlliterate = TRUE, - .levelUpLearnset = sScatterbugLevelUpLearnset, - .teachableLearnset = sScatterbugTeachableLearnset, - .evolutions = EVOLUTION({EVO_LEVEL, 9, SPECIES_SPEWPA}), - }, +#define SCATTERBUG_SPECIES_INFO(evolution) \ + { \ + .baseHP = 38, \ + .baseAttack = 35, \ + .baseDefense = 40, \ + .baseSpeed = 35, \ + .baseSpAttack = 27, \ + .baseSpDefense = 25, \ + .types = MON_TYPES(TYPE_BUG), \ + .catchRate = 255, \ + .expYield = 40, \ + .evYield_Defense = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), \ + .abilities = { ABILITY_SHIELD_DUST, ABILITY_COMPOUND_EYES, ABILITY_FRIEND_GUARD }, \ + .bodyColor = BODY_COLOR_BLACK, \ + .speciesName = _("Scatterbug"), \ + .cryId = CRY_SCATTERBUG, \ + .natDexNum = NATIONAL_DEX_SCATTERBUG, \ + .categoryName = _("Scatterdust"), \ + .height = 3, \ + .weight = 25, \ + .description = gScatterbugPokedexText, \ + .pokemonScale = 530, \ + .pokemonOffset = 13, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontPic = gMonFrontPic_Scatterbug, \ + .frontPicSize = MON_COORDS_SIZE(32, 48), \ + .frontPicYOffset = 13, \ + .frontAnimFrames = sAnims_Scatterbug, \ + .frontAnimId = ANIM_V_STRETCH, \ + .backPic = gMonBackPic_Scatterbug, \ + .backPicSize = MON_COORDS_SIZE(40, 56), \ + .backPicYOffset = 12, \ + .backAnimId = BACK_ANIM_H_SLIDE, \ + .palette = gMonPalette_Scatterbug, \ + .shinyPalette = gMonShinyPalette_Scatterbug, \ + .iconSprite = gMonIcon_Scatterbug, \ + .iconPalIndex = 1, \ + FOOTPRINT(Scatterbug) \ + .tmIlliterate = TRUE, \ + .levelUpLearnset = sScatterbugLevelUpLearnset, \ + .teachableLearnset = sScatterbugTeachableLearnset, \ + .formSpeciesIdTable = sScatterbugFormSpeciesIdTable, \ + .evolutions = EVOLUTION({EVO_LEVEL, 9, SPECIES_SPEWPA_##evolution}), \ + } \ - [SPECIES_SPEWPA] = - { - .baseHP = 45, - .baseAttack = 22, - .baseDefense = 60, - .baseSpeed = 29, - .baseSpAttack = 27, - .baseSpDefense = 30, - .types = MON_TYPES(TYPE_BUG), - .catchRate = 120, - .expYield = 75, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), - .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_FRIEND_GUARD }, - .bodyColor = BODY_COLOR_BLACK, - .speciesName = _("Spewpa"), - .cryId = CRY_SPEWPA, - .natDexNum = NATIONAL_DEX_SPEWPA, - .categoryName = _("Scatterdust"), - .height = 3, - .weight = 84, - .description = COMPOUND_STRING( - "It lives hidden within thicket shadows.\n" - "When predators attack, it quickly bristles\n" - "the fur covering its body in an effort to\n" - "threaten them."), - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - .frontPic = gMonFrontPic_Spewpa, - .frontPicSize = MON_COORDS_SIZE(40, 48), - .frontPicYOffset = 11, - .frontAnimFrames = sAnims_Spewpa, - .frontAnimId = ANIM_V_SHAKE, - .backPic = gMonBackPic_Spewpa, - .backPicSize = MON_COORDS_SIZE(48, 48), - .backPicYOffset = 12, - .backAnimId = BACK_ANIM_H_VIBRATE, - .palette = gMonPalette_Spewpa, - .shinyPalette = gMonShinyPalette_Spewpa, - .iconSprite = gMonIcon_Spewpa, - .iconPalIndex = 1, - FOOTPRINT(Spewpa) - .tmIlliterate = TRUE, - .levelUpLearnset = sSpewpaLevelUpLearnset, - .teachableLearnset = sSpewpaTeachableLearnset, - .evolutions = EVOLUTION({EVO_LEVEL, 12, SPECIES_VIVILLON_ICY_SNOW}), - }, + [SPECIES_SCATTERBUG_ICY_SNOW] = SCATTERBUG_SPECIES_INFO(ICY_SNOW), + [SPECIES_SCATTERBUG_POLAR] = SCATTERBUG_SPECIES_INFO(POLAR), + [SPECIES_SCATTERBUG_TUNDRA] = SCATTERBUG_SPECIES_INFO(TUNDRA), + [SPECIES_SCATTERBUG_CONTINENTAL] = SCATTERBUG_SPECIES_INFO(CONTINENTAL), + [SPECIES_SCATTERBUG_GARDEN] = SCATTERBUG_SPECIES_INFO(GARDEN), + [SPECIES_SCATTERBUG_ELEGANT] = SCATTERBUG_SPECIES_INFO(ELEGANT), + [SPECIES_SCATTERBUG_MEADOW] = SCATTERBUG_SPECIES_INFO(MEADOW), + [SPECIES_SCATTERBUG_MODERN] = SCATTERBUG_SPECIES_INFO(MODERN), + [SPECIES_SCATTERBUG_MARINE] = SCATTERBUG_SPECIES_INFO(MARINE), + [SPECIES_SCATTERBUG_ARCHIPELAGO] = SCATTERBUG_SPECIES_INFO(ARCHIPELAGO), + [SPECIES_SCATTERBUG_HIGH_PLAINS] = SCATTERBUG_SPECIES_INFO(HIGH_PLAINS), + [SPECIES_SCATTERBUG_SANDSTORM] = SCATTERBUG_SPECIES_INFO(SANDSTORM), + [SPECIES_SCATTERBUG_RIVER] = SCATTERBUG_SPECIES_INFO(RIVER), + [SPECIES_SCATTERBUG_MONSOON] = SCATTERBUG_SPECIES_INFO(MONSOON), + [SPECIES_SCATTERBUG_SAVANNA] = SCATTERBUG_SPECIES_INFO(SAVANNA), + [SPECIES_SCATTERBUG_SUN] = SCATTERBUG_SPECIES_INFO(SUN), + [SPECIES_SCATTERBUG_OCEAN] = SCATTERBUG_SPECIES_INFO(OCEAN), + [SPECIES_SCATTERBUG_JUNGLE] = SCATTERBUG_SPECIES_INFO(JUNGLE), + [SPECIES_SCATTERBUG_FANCY] = SCATTERBUG_SPECIES_INFO(FANCY), + [SPECIES_SCATTERBUG_POKE_BALL] = SCATTERBUG_SPECIES_INFO(POKE_BALL), + +#define SPEWPA_SPECIES_INFO(evolution) \ + { \ + .baseHP = 45, \ + .baseAttack = 22, \ + .baseDefense = 60, \ + .baseSpeed = 29, \ + .baseSpAttack = 27, \ + .baseSpDefense = 30, \ + .types = MON_TYPES(TYPE_BUG), \ + .catchRate = 120, \ + .expYield = 75, \ + .evYield_Defense = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), \ + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_FRIEND_GUARD }, \ + .bodyColor = BODY_COLOR_BLACK, \ + .speciesName = _("Spewpa"), \ + .cryId = CRY_SPEWPA, \ + .natDexNum = NATIONAL_DEX_SPEWPA, \ + .categoryName = _("Scatterdust"), \ + .height = 3, \ + .weight = 84, \ + .description = gSpewpaPokedexText, \ + .pokemonScale = 530, \ + .pokemonOffset = 13, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontPic = gMonFrontPic_Spewpa, \ + .frontPicSize = MON_COORDS_SIZE(40, 48), \ + .frontPicYOffset = 11, \ + .frontAnimFrames = sAnims_Spewpa, \ + .frontAnimId = ANIM_V_SHAKE, \ + .backPic = gMonBackPic_Spewpa, \ + .backPicSize = MON_COORDS_SIZE(48, 48), \ + .backPicYOffset = 12, \ + .backAnimId = BACK_ANIM_H_VIBRATE, \ + .palette = gMonPalette_Spewpa, \ + .shinyPalette = gMonShinyPalette_Spewpa, \ + .iconSprite = gMonIcon_Spewpa, \ + .iconPalIndex = 1, \ + FOOTPRINT(Spewpa) \ + .tmIlliterate = TRUE, \ + .levelUpLearnset = sSpewpaLevelUpLearnset, \ + .teachableLearnset = sSpewpaTeachableLearnset, \ + .formSpeciesIdTable = sSpewpaFormSpeciesIdTable, \ + .evolutions = EVOLUTION({EVO_LEVEL, 12, SPECIES_VIVILLON_##evolution}), \ + } + + [SPECIES_SPEWPA_ICY_SNOW] = SPEWPA_SPECIES_INFO(ICY_SNOW), + [SPECIES_SPEWPA_POLAR] = SPEWPA_SPECIES_INFO(POLAR), + [SPECIES_SPEWPA_TUNDRA] = SPEWPA_SPECIES_INFO(TUNDRA), + [SPECIES_SPEWPA_CONTINENTAL] = SPEWPA_SPECIES_INFO(CONTINENTAL), + [SPECIES_SPEWPA_GARDEN] = SPEWPA_SPECIES_INFO(GARDEN), + [SPECIES_SPEWPA_ELEGANT] = SPEWPA_SPECIES_INFO(ELEGANT), + [SPECIES_SPEWPA_MEADOW] = SPEWPA_SPECIES_INFO(MEADOW), + [SPECIES_SPEWPA_MODERN] = SPEWPA_SPECIES_INFO(MODERN), + [SPECIES_SPEWPA_MARINE] = SPEWPA_SPECIES_INFO(MARINE), + [SPECIES_SPEWPA_ARCHIPELAGO] = SPEWPA_SPECIES_INFO(ARCHIPELAGO), + [SPECIES_SPEWPA_HIGH_PLAINS] = SPEWPA_SPECIES_INFO(HIGH_PLAINS), + [SPECIES_SPEWPA_SANDSTORM] = SPEWPA_SPECIES_INFO(SANDSTORM), + [SPECIES_SPEWPA_RIVER] = SPEWPA_SPECIES_INFO(RIVER), + [SPECIES_SPEWPA_MONSOON] = SPEWPA_SPECIES_INFO(MONSOON), + [SPECIES_SPEWPA_SAVANNA] = SPEWPA_SPECIES_INFO(SAVANNA), + [SPECIES_SPEWPA_SUN] = SPEWPA_SPECIES_INFO(SUN), + [SPECIES_SPEWPA_OCEAN] = SPEWPA_SPECIES_INFO(OCEAN), + [SPECIES_SPEWPA_JUNGLE] = SPEWPA_SPECIES_INFO(JUNGLE), + [SPECIES_SPEWPA_FANCY] = SPEWPA_SPECIES_INFO(FANCY), + [SPECIES_SPEWPA_POKE_BALL] = SPEWPA_SPECIES_INFO(POKE_BALL), #define VIVILLON_MISC_INFO(form, color, iconPal) \ .baseHP = 80, \ @@ -1854,7 +1890,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), \ - .abilities = { ABILITY_FUR_COAT, ABILITY_NONE }, \ + .abilities = { ABILITY_FUR_COAT, ABILITY_NONE, ABILITY_NONE }, \ .bodyColor = BODY_COLOR_WHITE, \ .noFlip = _noFlip, \ .speciesName = _("Furfrou"), \ @@ -2079,7 +2115,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), - .abilities = { ABILITY_NO_GUARD, ABILITY_NONE }, + .abilities = { ABILITY_NO_GUARD, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Honedge"), .cryId = CRY_HONEDGE, @@ -2133,7 +2169,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), - .abilities = { ABILITY_NO_GUARD, ABILITY_NONE }, + .abilities = { ABILITY_NO_GUARD, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Doublade"), .cryId = CRY_DOUBLADE, @@ -2190,7 +2226,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), - .abilities = { ABILITY_STANCE_CHANGE, ABILITY_NONE }, + .abilities = { ABILITY_STANCE_CHANGE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Aegislash"), .cryId = CRY_AEGISLASH, @@ -2251,7 +2287,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), - .abilities = { ABILITY_STANCE_CHANGE, ABILITY_NONE }, + .abilities = { ABILITY_STANCE_CHANGE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Aegislash"), .cryId = CRY_AEGISLASH, @@ -2848,7 +2884,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_WATER_3), - .abilities = { ABILITY_MEGA_LAUNCHER, ABILITY_NONE }, + .abilities = { ABILITY_MEGA_LAUNCHER, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .noFlip = TRUE, .speciesName = _("Clauncher"), @@ -2902,7 +2938,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_WATER_3), - .abilities = { ABILITY_MEGA_LAUNCHER, ABILITY_NONE }, + .abilities = { ABILITY_MEGA_LAUNCHER, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .noFlip = TRUE, .speciesName = _("Clawitzer"), @@ -4613,7 +4649,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_FAIRY_AURA, ABILITY_NONE }, + .abilities = { ABILITY_FAIRY_AURA, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Xerneas"), .cryId = CRY_XERNEAS, @@ -4664,7 +4700,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_FAIRY_AURA, ABILITY_NONE }, + .abilities = { ABILITY_FAIRY_AURA, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Xerneas"), .cryId = CRY_XERNEAS, @@ -4717,7 +4753,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_DARK_AURA, ABILITY_NONE }, + .abilities = { ABILITY_DARK_AURA, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Yveltal"), .cryId = CRY_YVELTAL, @@ -4773,7 +4809,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_AURA_BREAK, ABILITY_NONE }, + .abilities = { ABILITY_AURA_BREAK, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, .speciesName = _("Zygarde"), @@ -4824,7 +4860,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_POWER_CONSTRUCT, ABILITY_NONE }, + .abilities = { ABILITY_POWER_CONSTRUCT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, .speciesName = _("Zygarde"), @@ -4875,7 +4911,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_AURA_BREAK, ABILITY_NONE }, + .abilities = { ABILITY_AURA_BREAK, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, .noFlip = TRUE, .speciesName = _("Zygarde"), @@ -4927,7 +4963,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_POWER_CONSTRUCT, ABILITY_NONE }, + .abilities = { ABILITY_POWER_CONSTRUCT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, .noFlip = TRUE, .speciesName = _("Zygarde"), @@ -4979,7 +5015,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_POWER_CONSTRUCT, ABILITY_NONE }, + .abilities = { ABILITY_POWER_CONSTRUCT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, .noFlip = TRUE, .speciesName = _("Zygarde"), @@ -5038,7 +5074,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE }, + .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PINK, .speciesName = _("Diancie"), .cryId = CRY_DIANCIE, @@ -5154,7 +5190,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = 100, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_MAGICIAN, ABILITY_NONE }, + .abilities = { ABILITY_MAGICIAN, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Hoopa"), .cryId = CRY_HOOPA_CONFINED, @@ -5210,7 +5246,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = P_UPDATED_FRIENDSHIP >= GEN_8 ? STANDARD_FRIENDSHIP : 100, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_MAGICIAN, ABILITY_NONE }, + .abilities = { ABILITY_MAGICIAN, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Hoopa"), .cryId = CRY_HOOPA_UNBOUND, @@ -5268,7 +5304,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .friendship = 100, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_WATER_ABSORB, ABILITY_NONE }, + .abilities = { ABILITY_WATER_ABSORB, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Volcanion"), .cryId = CRY_VOLCANION, diff --git a/src/data/pokemon/species_info/gen_7.h b/src/data/pokemon/species_info/gen_7_families.h similarity index 89% rename from src/data/pokemon/species_info/gen_7.h rename to src/data/pokemon/species_info/gen_7_families.h index f6a12fc0eb..da640ca852 100644 --- a/src/data/pokemon/species_info/gen_7.h +++ b/src/data/pokemon/species_info/gen_7_families.h @@ -786,11 +786,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .categoryName = _("Stakeout"), .height = 7, .weight = 142, - .description = COMPOUND_STRING( - "When it finds a trace of its prey, it\n" - "patiently stakes out the location...\n" - "but as it's diurnal, it's always snoozing\n" - "by nightfall."), + .description = gGumshoosPokedexText, .pokemonScale = 365, .pokemonOffset = 12, .trainerScale = 256, @@ -811,6 +807,58 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Gumshoos) .levelUpLearnset = sGumshoosLevelUpLearnset, .teachableLearnset = sGumshoosTeachableLearnset, + .formSpeciesIdTable = sGumshoosFormSpeciesIdTable, + }, + + [SPECIES_GUMSHOOS_TOTEM] = + { + .baseHP = 88, + .baseAttack = 110, + .baseDefense = 60, + .baseSpeed = 45, + .baseSpAttack = 55, + .baseSpDefense = 60, + .types = MON_TYPES(TYPE_NORMAL), + .catchRate = 127, + .expYield = 146, + .evYield_Attack = 2, + .itemRare = ITEM_PECHA_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_ADAPTABILITY, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Gumshoos"), + .cryId = CRY_GUMSHOOS, + .natDexNum = NATIONAL_DEX_GUMSHOOS, + .categoryName = _("Stakeout"), + .height = 14, + .weight = 600, + .description = gGumshoosPokedexText, + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Gumshoos, + .frontPicSize = MON_COORDS_SIZE(56, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Gumshoos, + .frontAnimId = ANIM_H_SHAKE, + .backPic = gMonBackPic_Gumshoos, + .backPicSize = MON_COORDS_SIZE(48, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Gumshoos, + .shinyPalette = gMonShinyPalette_Gumshoos, + .iconSprite = gMonIcon_Gumshoos, + .iconPalIndex = 2, + FOOTPRINT(Gumshoos) + .isTotem = TRUE, + .levelUpLearnset = sGumshoosLevelUpLearnset, + .teachableLearnset = sGumshoosTeachableLearnset, + .formSpeciesIdTable = sGumshoosFormSpeciesIdTable, }, #endif //P_FAMILY_YUNGOOS @@ -832,7 +880,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), - .abilities = { ABILITY_SWARM, ABILITY_NONE }, + .abilities = { ABILITY_SWARM, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Grubbin"), .cryId = CRY_GRUBBIN, @@ -886,7 +934,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), - .abilities = { ABILITY_BATTERY, ABILITY_NONE }, + .abilities = { ABILITY_BATTERY, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Charjabug"), .cryId = CRY_CHARJABUG, @@ -920,7 +968,8 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .levelUpLearnset = sCharjabugLevelUpLearnset, .teachableLearnset = sCharjabugTeachableLearnset, .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_VIKAVOLT}, - {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_VIKAVOLT}), + {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_VIKAVOLT}, + {EVO_NONE, 0, SPECIES_VIKAVOLT_TOTEM}), }, [SPECIES_VIKAVOLT] = @@ -940,7 +989,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Vikavolt"), .cryId = CRY_VIKAVOLT, @@ -948,11 +997,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .categoryName = _("Stag Beetle"), .height = 15, .weight = 450, - .description = COMPOUND_STRING( - "It concentrates electrical energy within\n" - "its large jaws and uses it to zap its foes.\n" - "It overwhelms bird Pokémon with shocking\n" - "beams of electrical energy."), + .description = gVikavoltPokedexText, .pokemonScale = 268, .pokemonOffset = 2, .trainerScale = 271, @@ -974,6 +1019,58 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Vikavolt) .levelUpLearnset = sVikavoltLevelUpLearnset, .teachableLearnset = sVikavoltTeachableLearnset, + .formSpeciesIdTable = sVikavoltFormSpeciesIdTable, + }, + + [SPECIES_VIKAVOLT_TOTEM] = + { + .baseHP = 77, + .baseAttack = 70, + .baseDefense = 90, + .baseSpeed = 43, + .baseSpAttack = 145, + .baseSpDefense = 75, + .types = MON_TYPES(TYPE_BUG, TYPE_ELECTRIC), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 250 : 225, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Vikavolt"), + .cryId = CRY_VIKAVOLT, + .natDexNum = NATIONAL_DEX_VIKAVOLT, + .categoryName = _("Stag Beetle"), + .height = 26, + .weight = 1475, + .description = gVikavoltPokedexText, + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Vikavolt, + .frontPicSize = MON_COORDS_SIZE(64, 56), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Vikavolt, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES, + .enemyMonElevation = 8, + .backPic = gMonBackPic_Vikavolt, + .backPicSize = MON_COORDS_SIZE(64, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Vikavolt, + .shinyPalette = gMonShinyPalette_Vikavolt, + .iconSprite = gMonIcon_Vikavolt, + .iconPalIndex = 0, + FOOTPRINT(Vikavolt) + .isTotem = TRUE, + .levelUpLearnset = sVikavoltLevelUpLearnset, + .teachableLearnset = sVikavoltTeachableLearnset, + .formSpeciesIdTable = sVikavoltFormSpeciesIdTable, }, #endif //P_FAMILY_GRUBBIN @@ -1106,7 +1203,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), - .abilities = { ABILITY_DANCER, ABILITY_NONE }, + .abilities = { ABILITY_DANCER, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Oricorio"), .cryId = CRY_ORICORIO_BAILE, @@ -1161,7 +1258,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), - .abilities = { ABILITY_DANCER, ABILITY_NONE }, + .abilities = { ABILITY_DANCER, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Oricorio"), .cryId = CRY_ORICORIO_POM_POM, @@ -1216,7 +1313,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), - .abilities = { ABILITY_DANCER, ABILITY_NONE }, + .abilities = { ABILITY_DANCER, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PINK, .speciesName = _("Oricorio"), .cryId = CRY_ORICORIO_PAU, @@ -1271,7 +1368,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), - .abilities = { ABILITY_DANCER, ABILITY_NONE }, + .abilities = { ABILITY_DANCER, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Oricorio"), .cryId = CRY_ORICORIO_SENSU, @@ -1362,7 +1459,8 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Cutiefly) .levelUpLearnset = sCutieflyLevelUpLearnset, .teachableLearnset = sCutieflyTeachableLearnset, - .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_RIBOMBEE}), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_RIBOMBEE}, + {EVO_NONE, 0, SPECIES_RIBOMBEE_TOTEM}), }, [SPECIES_RIBOMBEE] = @@ -1391,11 +1489,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .categoryName = _("Bee Fly"), .height = 2, .weight = 5, - .description = COMPOUND_STRING( - "Ribombee rolls up pollen into puffs.\n" - "It makes many different varieties, some\n" - "used as food and others used in battle.\n" - "They are sometimes sold as supplements."), + .description = gRibombeePokedexText, .pokemonScale = 682, .pokemonOffset = 24, .trainerScale = 256, @@ -1417,6 +1511,59 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Ribombee) .levelUpLearnset = sRibombeeLevelUpLearnset, .teachableLearnset = sRibombeeTeachableLearnset, + .formSpeciesIdTable = sRibombeeFormSpeciesIdTable, + }, + + [SPECIES_RIBOMBEE_TOTEM] = + { + .baseHP = 60, + .baseAttack = 55, + .baseDefense = 60, + .baseSpeed = 124, + .baseSpAttack = 95, + .baseSpDefense = 70, + .types = MON_TYPES(TYPE_BUG, TYPE_FAIRY), + .catchRate = 75, + .expYield = 162, + .evYield_Speed = 2, + .itemRare = ITEM_HONEY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG, EGG_GROUP_FAIRY), + .abilities = { ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Ribombee"), + .cryId = CRY_RIBOMBEE, + .natDexNum = NATIONAL_DEX_RIBOMBEE, + .categoryName = _("Bee Fly"), + .height = 4, + .weight = 20, + .description = gRibombeePokedexText, + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Ribombee, + .frontPicSize = MON_COORDS_SIZE(32, 47), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Ribombee, + .frontAnimId = ANIM_CONVEX_DOUBLE_ARC_TWICE, + .enemyMonElevation = 6, + .backPic = gMonBackPic_Ribombee, + .backPicSize = MON_COORDS_SIZE(56, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + .palette = gMonPalette_Ribombee, + .shinyPalette = gMonShinyPalette_Ribombee, + .iconSprite = gMonIcon_Ribombee, + .iconPalIndex = 2, + FOOTPRINT(Ribombee) + .isTotem = TRUE, + .levelUpLearnset = sRibombeeLevelUpLearnset, + .teachableLearnset = sRibombeeTeachableLearnset, + .formSpeciesIdTable = sRibombeeFormSpeciesIdTable, }, #endif //P_FAMILY_CUTIEFLY @@ -1645,7 +1792,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), - .abilities = { ABILITY_TOUGH_CLAWS, ABILITY_NONE }, + .abilities = { ABILITY_TOUGH_CLAWS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Lycanroc"), .cryId = CRY_LYCANROC_DUSK, @@ -1700,7 +1847,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), - .abilities = { ABILITY_SCHOOLING, ABILITY_NONE }, + .abilities = { ABILITY_SCHOOLING, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Wishiwashi"), .cryId = CRY_WISHIWASHI_SOLO, @@ -1755,7 +1902,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), - .abilities = { ABILITY_SCHOOLING, ABILITY_NONE }, + .abilities = { ABILITY_SCHOOLING, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Wishiwashi"), .cryId = CRY_WISHIWASHI_SCHOOL, @@ -2063,7 +2210,8 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Dewpider) .levelUpLearnset = sDewpiderLevelUpLearnset, .teachableLearnset = sDewpiderTeachableLearnset, - .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARAQUANID}), + .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARAQUANID}, + {EVO_NONE, 0, SPECIES_ARAQUANID_TOTEM}), }, [SPECIES_ARAQUANID] = @@ -2092,11 +2240,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .categoryName = _("Water Bubble"), .height = 18, .weight = 820, - .description = COMPOUND_STRING( - "Despite what its appearance suggests,\n" - "it cares for others. If it finds vulnerable,\n" - "weak Pokémon, it protectively brings\n" - "them into its water bubble."), + .description = gAraquanidPokedexText, .pokemonScale = 267, .pokemonOffset = 2, .trainerScale = 286, @@ -2117,6 +2261,58 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Araquanid) .levelUpLearnset = sAraquanidLevelUpLearnset, .teachableLearnset = sAraquanidTeachableLearnset, + .formSpeciesIdTable = sAraquanidFormSpeciesIdTable, + }, + + [SPECIES_ARAQUANID_TOTEM] = + { + .baseHP = 68, + .baseAttack = 70, + .baseDefense = 92, + .baseSpeed = 42, + .baseSpAttack = 50, + .baseSpDefense = 132, + .types = MON_TYPES(TYPE_WATER, TYPE_BUG), + .catchRate = 100, + .expYield = 159, + .evYield_SpDefense = 2, + .itemRare = ITEM_MYSTIC_WATER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_BUG), + .abilities = { ABILITY_WATER_BUBBLE, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Araquanid"), + .cryId = CRY_ARAQUANID, + .natDexNum = NATIONAL_DEX_ARAQUANID, + .categoryName = _("Water Bubble"), + .height = 31, + .weight = 2175, + .description = gAraquanidPokedexText, + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + .frontPic = gMonFrontPic_Araquanid, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Araquanid, + .frontAnimId = ANIM_H_SHAKE, + .backPic = gMonBackPic_Araquanid, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicYOffset = 12, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Araquanid, + .shinyPalette = gMonShinyPalette_Araquanid, + .iconSprite = gMonIcon_Araquanid, + .iconPalIndex = 2, + FOOTPRINT(Araquanid) + .isTotem = TRUE, + .levelUpLearnset = sAraquanidLevelUpLearnset, + .teachableLearnset = sAraquanidTeachableLearnset, + .formSpeciesIdTable = sAraquanidFormSpeciesIdTable, }, #endif //P_FAMILY_DEWPIDER @@ -2172,7 +2368,8 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Fomantis) .levelUpLearnset = sFomantisLevelUpLearnset, .teachableLearnset = sFomantisTeachableLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_DAY, 34, SPECIES_LURANTIS}), + .evolutions = EVOLUTION({EVO_LEVEL_DAY, 34, SPECIES_LURANTIS}, + {EVO_NONE, 0, SPECIES_LURANTIS_TOTEM}), }, [SPECIES_LURANTIS] = @@ -2201,11 +2398,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .categoryName = _("Bloom Sickle"), .height = 9, .weight = 185, - .description = COMPOUND_STRING( - "It requires a lot of effort to maintain\n" - "Lurantis's vivid coloring, but some\n" - "collectors enjoy this work and treat it\n" - "as their hobby."), + .description = gLurantisPokedexText, .pokemonScale = 338, .pokemonOffset = 8, .trainerScale = 256, @@ -2226,6 +2419,58 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Lurantis) .levelUpLearnset = sLurantisLevelUpLearnset, .teachableLearnset = sLurantisTeachableLearnset, + .formSpeciesIdTable = sLurantisFormSpeciesIdTable, + }, + + [SPECIES_LURANTIS_TOTEM] = + { + .baseHP = 70, + .baseAttack = 105, + .baseDefense = 90, + .baseSpeed = 45, + .baseSpAttack = 80, + .baseSpDefense = 90, + .types = MON_TYPES(TYPE_GRASS), + .catchRate = 75, + .expYield = 168, + .evYield_Attack = 2, + .itemRare = ITEM_MIRACLE_SEED, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS), + .abilities = { ABILITY_LEAF_GUARD, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Lurantis"), + .cryId = CRY_LURANTIS, + .natDexNum = NATIONAL_DEX_LURANTIS, + .categoryName = _("Bloom Sickle"), + .height = 15, + .weight = 580, + .description = gLurantisPokedexText, + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Lurantis, + .frontPicSize = MON_COORDS_SIZE(48, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Lurantis, + .frontAnimId = ANIM_GROW_VIBRATE, + .backPic = gMonBackPic_Lurantis, + .backPicSize = MON_COORDS_SIZE(56, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Lurantis, + .shinyPalette = gMonShinyPalette_Lurantis, + .iconSprite = gMonIcon_Lurantis, + .iconPalIndex = 1, + FOOTPRINT(Lurantis) + .isTotem = TRUE, + .levelUpLearnset = sLurantisLevelUpLearnset, + .teachableLearnset = sLurantisTeachableLearnset, + .formSpeciesIdTable = sLurantisFormSpeciesIdTable, }, #endif //P_FAMILY_FOMANTIS @@ -2392,7 +2637,8 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Salandit) .levelUpLearnset = sSalanditLevelUpLearnset, .teachableLearnset = sSalanditTeachableLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 33, SPECIES_SALAZZLE}), + .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 33, SPECIES_SALAZZLE}, + {EVO_NONE, 0, SPECIES_SALAZZLE_TOTEM}), }, [SPECIES_SALAZZLE] = @@ -2421,11 +2667,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .categoryName = _("Toxic Lizard"), .height = 12, .weight = 222, - .description = COMPOUND_STRING( - "For some reason, only females have\n" - "been found. It creates a reverse harem of\n" - "male Salandit to live with. Its poisonous\n" - "gas is filled with pheromones."), + .description = gSalazzlePokedexText, .pokemonScale = 282, .pokemonOffset = 4, .trainerScale = 256, @@ -2446,6 +2688,58 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Salazzle) .levelUpLearnset = sSalazzleLevelUpLearnset, .teachableLearnset = sSalazzleTeachableLearnset, + .formSpeciesIdTable = sSalanditFormSpeciesIdTable, + }, + + [SPECIES_SALAZZLE_TOTEM] = + { + .baseHP = 68, + .baseAttack = 64, + .baseDefense = 60, + .baseSpeed = 117, + .baseSpAttack = 111, + .baseSpDefense = 60, + .types = MON_TYPES(TYPE_POISON, TYPE_FIRE), + .catchRate = 45, + .expYield = 168, + .evYield_Speed = 2, + .itemRare = ITEM_SMOKE_BALL, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_DRAGON), + .abilities = { ABILITY_CORROSION, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Salazzle"), + .cryId = CRY_SALAZZLE, + .natDexNum = NATIONAL_DEX_SALAZZLE, + .categoryName = _("Toxic Lizard"), + .height = 21, + .weight = 810, + .description = gSalazzlePokedexText, + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Salazzle, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Salazzle, + .frontAnimId = ANIM_GROW_VIBRATE, + .backPic = gMonBackPic_Salazzle, + .backPicSize = MON_COORDS_SIZE(48, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Salazzle, + .shinyPalette = gMonShinyPalette_Salazzle, + .iconSprite = gMonIcon_Salazzle, + .iconPalIndex = 0, + FOOTPRINT(Salazzle) + .isTotem = TRUE, + .levelUpLearnset = sSalazzleLevelUpLearnset, + .teachableLearnset = sSalazzleTeachableLearnset, + .formSpeciesIdTable = sSalanditFormSpeciesIdTable, }, #endif //P_FAMILY_SALANDIT @@ -2904,7 +3198,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG, EGG_GROUP_WATER_3), - .abilities = { ABILITY_WIMP_OUT, ABILITY_NONE }, + .abilities = { ABILITY_WIMP_OUT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Wimpod"), .cryId = CRY_WIMPOD, @@ -2957,7 +3251,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG, EGG_GROUP_WATER_3), - .abilities = { ABILITY_EMERGENCY_EXIT, ABILITY_NONE }, + .abilities = { ABILITY_EMERGENCY_EXIT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Golisopod"), .cryId = CRY_GOLISOPOD, @@ -3174,7 +3468,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_BATTLE_ARMOR, ABILITY_NONE }, + .abilities = { ABILITY_BATTLE_ARMOR, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Type: Null"), .cryId = CRY_TYPE_NULL, @@ -3211,57 +3505,57 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_SILVALLY_NORMAL}), }, -#define SILVALLY_SPECIES_INFO(type, _palette) \ - { \ - .baseHP = 95, \ - .baseAttack = 95, \ - .baseDefense = 95, \ - .baseSpeed = 95, \ - .baseSpAttack = 95, \ - .baseSpDefense = 95, \ - .types = MON_TYPES(type), \ - .catchRate = 3, \ - .expYield = 257, \ - .evYield_HP = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_RKS_SYSTEM, ABILITY_NONE }, \ - .bodyColor = BODY_COLOR_GRAY, \ - .isLegendary = TRUE, \ - .speciesName = _("Silvally"), \ - .cryId = CRY_SILVALLY, \ - .natDexNum = NATIONAL_DEX_SILVALLY, \ - .categoryName = _("Synthetic"), \ - .height = 23, \ - .weight = 1005, \ - .description = (type == TYPE_NORMAL \ - ? gSilvallyNormalPokedexText \ - : gSilvallyMemoryPokedexText), \ - .pokemonScale = 256, \ - .pokemonOffset = 0, \ - .trainerScale = 342, \ - .trainerOffset = 7, \ - .frontPic = gMonFrontPic_Silvally, \ - .frontPicSize = MON_COORDS_SIZE(64, 64), \ - .frontPicYOffset = 0, \ - .frontAnimFrames = sAnims_Silvally, \ - .frontAnimId = ANIM_V_SHAKE, \ - .backPic = gMonBackPic_Silvally, \ - .backPicSize = MON_COORDS_SIZE(56, 64), \ - .backPicYOffset = 0, \ - /*.backAnimId = BACK_ANIM_NONE,*/ \ - .palette = gMonPalette_Silvally##_palette, \ - .shinyPalette = gMonShinyPalette_Silvally##_palette, \ - .iconSprite = gMonIcon_Silvally, \ - .iconPalIndex = 0, \ - FOOTPRINT(Silvally) \ - .levelUpLearnset = sSilvallyLevelUpLearnset, \ - .teachableLearnset = sSilvallyTeachableLearnset, \ - .formSpeciesIdTable = sSilvallyFormSpeciesIdTable, \ - .formChangeTable = sSilvallyFormChangeTable, \ +#define SILVALLY_SPECIES_INFO(type, _palette) \ + { \ + .baseHP = 95, \ + .baseAttack = 95, \ + .baseDefense = 95, \ + .baseSpeed = 95, \ + .baseSpAttack = 95, \ + .baseSpDefense = 95, \ + .types = MON_TYPES(type), \ + .catchRate = 3, \ + .expYield = 257, \ + .evYield_HP = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ + .abilities = { ABILITY_RKS_SYSTEM, ABILITY_NONE, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_GRAY, \ + .isLegendary = TRUE, \ + .speciesName = _("Silvally"), \ + .cryId = CRY_SILVALLY, \ + .natDexNum = NATIONAL_DEX_SILVALLY, \ + .categoryName = _("Synthetic"), \ + .height = 23, \ + .weight = 1005, \ + .description = (type == TYPE_NORMAL \ + ? gSilvallyNormalPokedexText \ + : gSilvallyMemoryPokedexText), \ + .pokemonScale = 256, \ + .pokemonOffset = 0, \ + .trainerScale = 342, \ + .trainerOffset = 7, \ + .frontPic = gMonFrontPic_Silvally, \ + .frontPicSize = MON_COORDS_SIZE(64, 64), \ + .frontPicYOffset = 0, \ + .frontAnimFrames = sAnims_Silvally, \ + .frontAnimId = ANIM_V_SHAKE, \ + .backPic = gMonBackPic_Silvally, \ + .backPicSize = MON_COORDS_SIZE(56, 64), \ + .backPicYOffset = 0, \ + /*.backAnimId = BACK_ANIM_NONE,*/ \ + .palette = gMonPalette_Silvally##_palette, \ + .shinyPalette = gMonShinyPalette_Silvally##_palette, \ + .iconSprite = gMonIcon_Silvally, \ + .iconPalIndex = 0, \ + FOOTPRINT(Silvally) \ + .levelUpLearnset = sSilvallyLevelUpLearnset, \ + .teachableLearnset = sSilvallyTeachableLearnset, \ + .formSpeciesIdTable = sSilvallyFormSpeciesIdTable, \ + .formChangeTable = sSilvallyFormChangeTable, \ } [SPECIES_SILVALLY_NORMAL] = SILVALLY_SPECIES_INFO(TYPE_NORMAL, Normal), @@ -3285,33 +3579,33 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = #endif //P_FAMILY_TYPE_NULL #if P_FAMILY_MINIOR -#define MINIOR_MISC_INFO(color) \ - .types = MON_TYPES(TYPE_ROCK, TYPE_FLYING), \ - .catchRate = 30, \ - .expYield = 154, \ - .evYield_Defense = 1, \ - .evYield_SpDefense = 1, \ - .itemRare = ITEM_STAR_PIECE, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), \ - .abilities = { ABILITY_SHIELDS_DOWN, ABILITY_NONE }, \ - .bodyColor = color, \ - .noFlip = TRUE, \ - .speciesName = _("Minior"), \ - .cryId = CRY_MINIOR, \ - .natDexNum = NATIONAL_DEX_MINIOR, \ - .categoryName = _("Meteor"), \ - .height = 3, \ - .pokemonScale = 530, \ - .pokemonOffset = 13, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - FOOTPRINT(Minior) \ - .levelUpLearnset = sMiniorLevelUpLearnset, \ - .teachableLearnset = sMiniorTeachableLearnset, \ +#define MINIOR_MISC_INFO(color) \ + .types = MON_TYPES(TYPE_ROCK, TYPE_FLYING), \ + .catchRate = 30, \ + .expYield = 154, \ + .evYield_Defense = 1, \ + .evYield_SpDefense = 1, \ + .itemRare = ITEM_STAR_PIECE, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), \ + .abilities = { ABILITY_SHIELDS_DOWN, ABILITY_NONE, ABILITY_NONE }, \ + .bodyColor = color, \ + .noFlip = TRUE, \ + .speciesName = _("Minior"), \ + .cryId = CRY_MINIOR, \ + .natDexNum = NATIONAL_DEX_MINIOR, \ + .categoryName = _("Meteor"), \ + .height = 3, \ + .pokemonScale = 530, \ + .pokemonOffset = 13, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + FOOTPRINT(Minior) \ + .levelUpLearnset = sMiniorLevelUpLearnset, \ + .teachableLearnset = sMiniorTeachableLearnset, \ .formSpeciesIdTable = sMiniorFormSpeciesIdTable #define MINIOR_METEOR_SPECIES_INFO(Form) \ @@ -3403,7 +3697,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), - .abilities = { ABILITY_COMATOSE, ABILITY_NONE }, + .abilities = { ABILITY_COMATOSE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Komala"), .cryId = CRY_KOMALA, @@ -3458,7 +3752,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_DRAGON), - .abilities = { ABILITY_SHELL_ARMOR, ABILITY_NONE }, + .abilities = { ABILITY_SHELL_ARMOR, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Turtonator"), .cryId = CRY_TURTONATOR, @@ -3521,11 +3815,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .categoryName = _("Roly-Poly"), .height = 3, .weight = 33, - .description = COMPOUND_STRING( - "The spiny fur on its back is normally\n" - "at rest. When this Pokémon becomes\n" - "agitated, its fur stands on end and stabs\n" - "into its attackers."), + .description = gTogedemaruPokedexText, .pokemonScale = 530, .pokemonOffset = 13, .trainerScale = 256, @@ -3546,6 +3836,58 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Togedemaru) .levelUpLearnset = sTogedemaruLevelUpLearnset, .teachableLearnset = sTogedemaruTeachableLearnset, + .formSpeciesIdTable = sTogedemaruFormSpeciesIdTable, + }, + + [SPECIES_TOGEDEMARU_TOTEM] = + { + .baseHP = 65, + .baseAttack = 98, + .baseDefense = 63, + .baseSpeed = 96, + .baseSpAttack = 40, + .baseSpDefense = 73, + .types = MON_TYPES(TYPE_ELECTRIC, TYPE_STEEL), + .catchRate = 180, + .expYield = 152, + .evYield_Attack = 2, + .itemRare = ITEM_ELECTRIC_SEED, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), + .abilities = { ABILITY_STURDY, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Togedemaru"), + .cryId = CRY_TOGEDEMARU, + .natDexNum = NATIONAL_DEX_TOGEDEMARU, + .categoryName = _("Roly-Poly"), + .height = 6, + .weight = 130, + .description = gTogedemaruPokedexText, + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_Togedemaru, + .frontPicSize = MON_COORDS_SIZE(40, 40), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Togedemaru, + .frontAnimId = ANIM_FLASH_YELLOW, + .backPic = gMonBackPic_Togedemaru, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_GROW_STUTTER, + .palette = gMonPalette_Togedemaru, + .shinyPalette = gMonShinyPalette_Togedemaru, + .iconSprite = gMonIcon_Togedemaru, + .iconPalIndex = 2, + FOOTPRINT(Togedemaru) + .isTotem = TRUE, + .levelUpLearnset = sTogedemaruLevelUpLearnset, + .teachableLearnset = sTogedemaruTeachableLearnset, + .formSpeciesIdTable = sTogedemaruFormSpeciesIdTable, }, #endif //P_FAMILY_TOGEDEMARU @@ -3568,7 +3910,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_DISGUISE, ABILITY_NONE }, + .abilities = { ABILITY_DISGUISE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Mimikyu"), .cryId = CRY_MIMIKYU, @@ -3576,11 +3918,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .categoryName = _("Disguise"), .height = 2, .weight = 7, - .description = COMPOUND_STRING( - "A lonely Pokémon, it hides its terrifying\n" - "appearance beneath an old rag so it can\n" - "get closer to people and other Pokémon.\n" - "Its actual appearance is unknown."), + .description = gMimikyuDisguisedPokedexText, .pokemonScale = 682, .pokemonOffset = 24, .trainerScale = 256, @@ -3623,7 +3961,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), - .abilities = { ABILITY_DISGUISE, ABILITY_NONE }, + .abilities = { ABILITY_DISGUISE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Mimikyu"), .cryId = CRY_MIMIKYU, @@ -3631,11 +3969,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .categoryName = _("Disguise"), .height = 2, .weight = 7, - .description = COMPOUND_STRING( - "After going to all the effort of\n" - "disguising itself, its neck was\n" - "broken. Whatever is inside is probably\n" - "unharmed, but it's still feeling sad."), + .description = gMimikyuBustedPokedexText, .pokemonScale = 682, .pokemonOffset = 24, .trainerScale = 256, @@ -3659,6 +3993,110 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .formSpeciesIdTable = sMimikyuFormSpeciesIdTable, .formChangeTable = sMimikyuFormChangeTable, }, + + [SPECIES_MIMIKYU_TOTEM_DISGUISED] = + { + .baseHP = 55, + .baseAttack = 90, + .baseDefense = 80, + .baseSpeed = 96, + .baseSpAttack = 50, + .baseSpDefense = 105, + .types = MON_TYPES(TYPE_GHOST, TYPE_FAIRY), + .catchRate = 45, + .expYield = 167, + .evYield_SpDefense = 2, + .itemRare = ITEM_CHESTO_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_DISGUISE, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Mimikyu"), + .cryId = CRY_MIMIKYU, + .natDexNum = NATIONAL_DEX_MIMIKYU, + .categoryName = _("Disguise"), + .height = 24, + .weight = 28, + .description = gMimikyuDisguisedPokedexText, + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_MimikyuDisguised, + .frontPicSize = MON_COORDS_SIZE(48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_MimikyuDisguised, + .frontAnimId = ANIM_DEEP_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_MimikyuDisguised, + .backPicSize = MON_COORDS_SIZE(56, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_MimikyuDisguised, + .shinyPalette = gMonShinyPalette_MimikyuDisguised, + .iconSprite = gMonIcon_MimikyuDisguised, + .iconPalIndex = 1, + FOOTPRINT(Mimikyu) + .isTotem = TRUE, + .levelUpLearnset = sMimikyuLevelUpLearnset, + .teachableLearnset = sMimikyuTeachableLearnset, + .formSpeciesIdTable = sMimikyuFormSpeciesIdTable, + .formChangeTable = sMimikyuTotemFormChangeTable, + }, + + [SPECIES_MIMIKYU_TOTEM_BUSTED] = + { + .baseHP = 55, + .baseAttack = 90, + .baseDefense = 80, + .baseSpeed = 96, + .baseSpAttack = 50, + .baseSpDefense = 105, + .types = MON_TYPES(TYPE_GHOST, TYPE_FAIRY), + .catchRate = 45, + .expYield = 167, + .evYield_SpDefense = 2, + .itemRare = ITEM_CHESTO_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_DISGUISE, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Mimikyu"), + .cryId = CRY_MIMIKYU, + .natDexNum = NATIONAL_DEX_MIMIKYU, + .categoryName = _("Disguise"), + .height = 24, + .weight = 28, + .description = gMimikyuBustedPokedexText, + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + .frontPic = gMonFrontPic_MimikyuBusted, + .frontPicSize = MON_COORDS_SIZE(48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_MimikyuBusted, + .frontAnimId = ANIM_DEEP_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_MimikyuBusted, + .backPicSize = MON_COORDS_SIZE(64, 40), + .backPicYOffset = 15, + //.backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_MimikyuBusted, + .shinyPalette = gMonShinyPalette_MimikyuBusted, + .iconSprite = gMonIcon_MimikyuBusted, + .iconPalIndex = 1, + FOOTPRINT(Mimikyu) + .isTotem = TRUE, + .levelUpLearnset = sMimikyuLevelUpLearnset, + .teachableLearnset = sMimikyuTeachableLearnset, + .formSpeciesIdTable = sMimikyuFormSpeciesIdTable, + .formChangeTable = sMimikyuTotemFormChangeTable, + }, #endif //P_FAMILY_MIMIKYU #if P_FAMILY_BRUXISH @@ -3789,7 +4227,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), - .abilities = { ABILITY_STEELWORKER, ABILITY_NONE }, + .abilities = { ABILITY_STEELWORKER, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, .speciesName = _("Dhelmise"), @@ -3933,7 +4371,8 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(HakamoO) .levelUpLearnset = sHakamoOLevelUpLearnset, .teachableLearnset = sHakamoOTeachableLearnset, - .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_KOMMO_O}), + .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_KOMMO_O}, + {EVO_NONE, 0, SPECIES_KOMMO_O_TOTEM}), }, [SPECIES_KOMMO_O] = @@ -3962,11 +4401,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .categoryName = _("Scaly"), .height = 16, .weight = 782, - .description = COMPOUND_STRING( - "Its rigid scales function as offense and\n" - "defense. In the past, its scales were\n" - "processed and used to make weapons\n" - "and other valuable commodities."), + .description = gKommoOPokedexText, .pokemonScale = 259, .pokemonOffset = 1, .trainerScale = 296, @@ -3987,6 +4422,58 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(KommoO) .levelUpLearnset = sKommoOLevelUpLearnset, .teachableLearnset = sKommoOTeachableLearnset, + .formSpeciesIdTable = sKommoOFormSpeciesIdTable, + }, + + [SPECIES_KOMMO_O_TOTEM] = + { + .baseHP = 75, + .baseAttack = 110, + .baseDefense = 125, + .baseSpeed = 85, + .baseSpAttack = 100, + .baseSpDefense = 105, + .types = MON_TYPES(TYPE_DRAGON, TYPE_FIGHTING), + .catchRate = 45, + .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, + .evYield_Defense = 3, + .itemCommon = ITEM_RAZOR_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_DRAGON), + .abilities = { ABILITY_OVERCOAT, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Kommo-o"), + .cryId = CRY_KOMMO_O, + .natDexNum = NATIONAL_DEX_KOMMO_O, + .categoryName = _("Scaly"), + .height = 24, + .weight = 2075, + .description = gKommoOPokedexText, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + .frontPic = gMonFrontPic_KommoO, + .frontPicSize = MON_COORDS_SIZE(63, 63), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Kommo_O, + .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_FAST, + .backPic = gMonBackPic_KommoO, + .backPicSize = MON_COORDS_SIZE(60, 60), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + .palette = gMonPalette_KommoO, + .shinyPalette = gMonShinyPalette_KommoO, + .iconSprite = gMonIcon_KommoO, + .iconPalIndex = 2, + FOOTPRINT(KommoO) + .isTotem = TRUE, + .levelUpLearnset = sKommoOLevelUpLearnset, + .teachableLearnset = sKommoOTeachableLearnset, + .formSpeciesIdTable = sKommoOFormSpeciesIdTable, }, #endif //P_FAMILY_JANGMO_O @@ -4233,7 +4720,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_UNAWARE, ABILITY_NONE }, + .abilities = { ABILITY_UNAWARE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Cosmog"), .cryId = CRY_COSMOG, @@ -4290,7 +4777,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_STURDY, ABILITY_NONE }, + .abilities = { ABILITY_STURDY, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Cosmoem"), .cryId = CRY_COSMOEM, @@ -4347,7 +4834,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_FULL_METAL_BODY, ABILITY_NONE }, + .abilities = { ABILITY_FULL_METAL_BODY, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Solgaleo"), .cryId = CRY_SOLGALEO, @@ -4400,7 +4887,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_SHADOW_SHIELD, ABILITY_NONE }, + .abilities = { ABILITY_SHADOW_SHIELD, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Lunala"), .cryId = CRY_LUNALA, @@ -4456,7 +4943,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Nihilego"), .cryId = CRY_NIHILEGO, @@ -4513,7 +5000,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Buzzwole"), .cryId = CRY_BUZZWOLE, @@ -4568,7 +5055,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Pheromosa"), .cryId = CRY_PHEROMOSA, @@ -4623,7 +5110,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Xurkitree"), .cryId = CRY_XURKITREE, @@ -4680,7 +5167,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Celesteela"), .cryId = CRY_CELESTEELA, @@ -4735,7 +5222,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Kartana"), .cryId = CRY_KARTANA, @@ -4791,7 +5278,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Guzzlord"), .cryId = CRY_GUZZLORD, @@ -4847,7 +5334,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PRISM_ARMOR, ABILITY_NONE }, + .abilities = { ABILITY_PRISM_ARMOR, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, .noFlip = TRUE, .speciesName = _("Necrozma"), @@ -4904,7 +5391,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PRISM_ARMOR, ABILITY_NONE }, + .abilities = { ABILITY_PRISM_ARMOR, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, .speciesName = _("Necrozma"), @@ -4961,7 +5448,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PRISM_ARMOR, ABILITY_NONE }, + .abilities = { ABILITY_PRISM_ARMOR, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .noFlip = TRUE, .speciesName = _("Necrozma"), @@ -5022,7 +5509,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_NEUROFORCE, ABILITY_NONE }, + .abilities = { ABILITY_NEUROFORCE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, .speciesName = _("Necrozma"), @@ -5084,7 +5571,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_SOUL_HEART, ABILITY_NONE }, + .abilities = { ABILITY_SOUL_HEART, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Magearna"), .cryId = CRY_MAGEARNA, @@ -5137,7 +5624,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_SOUL_HEART, ABILITY_NONE }, + .abilities = { ABILITY_SOUL_HEART, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Magearna"), .cryId = CRY_MAGEARNA, @@ -5194,7 +5681,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_TECHNICIAN, ABILITY_NONE }, + .abilities = { ABILITY_TECHNICIAN, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, .speciesName = _("Marshadow"), @@ -5250,7 +5737,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Poipole"), .cryId = CRY_POIPOLE, @@ -5304,7 +5791,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Naganadel"), .cryId = CRY_NAGANADEL, @@ -5359,7 +5846,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, .speciesName = _("Stakataka"), @@ -5414,7 +5901,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, .speciesName = _("Blacephaln"), @@ -5469,7 +5956,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_VOLT_ABSORB, ABILITY_NONE }, + .abilities = { ABILITY_VOLT_ABSORB, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Zeraora"), .cryId = CRY_ZERAORA, @@ -5523,7 +6010,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_MAGNET_PULL, ABILITY_NONE }, + .abilities = { ABILITY_MAGNET_PULL, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Meltan"), .cryId = CRY_MELTAN, @@ -5575,7 +6062,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_IRON_FIST, ABILITY_NONE }, + .abilities = { ABILITY_IRON_FIST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Melmetal"), .cryId = CRY_MELMETAL, @@ -5630,7 +6117,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_IRON_FIST, ABILITY_NONE }, + .abilities = { ABILITY_IRON_FIST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Melmetal"), .cryId = CRY_MELMETAL, diff --git a/src/data/pokemon/species_info/gen_8.h b/src/data/pokemon/species_info/gen_8_families.h similarity index 99% rename from src/data/pokemon/species_info/gen_8.h rename to src/data/pokemon/species_info/gen_8_families.h index f7146d4142..1e6abfa420 100644 --- a/src/data/pokemon/species_info/gen_8.h +++ b/src/data/pokemon/species_info/gen_8_families.h @@ -2585,7 +2585,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FLYING), - .abilities = { ABILITY_GULP_MISSILE, ABILITY_NONE }, + .abilities = { ABILITY_GULP_MISSILE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Cramorant"), .cryId = CRY_CRAMORANT, @@ -2638,7 +2638,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FLYING), - .abilities = { ABILITY_GULP_MISSILE, ABILITY_NONE }, + .abilities = { ABILITY_GULP_MISSILE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Cramorant"), .cryId = CRY_CRAMORANT, @@ -2692,7 +2692,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FLYING), - .abilities = { ABILITY_GULP_MISSILE, ABILITY_NONE }, + .abilities = { ABILITY_GULP_MISSILE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Cramorant"), .cryId = CRY_CRAMORANT, @@ -4484,7 +4484,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), - .abilities = { ABILITY_POWER_SPOT, ABILITY_NONE }, + .abilities = { ABILITY_POWER_SPOT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Stonjourne"), .cryId = CRY_STONJOURNER, @@ -4538,7 +4538,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), - .abilities = { ABILITY_ICE_FACE, ABILITY_NONE }, + .abilities = { ABILITY_ICE_FACE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Eiscue"), .cryId = CRY_EISCUE_ICE_FACE, @@ -4592,7 +4592,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), - .abilities = { ABILITY_ICE_FACE, ABILITY_NONE }, + .abilities = { ABILITY_ICE_FACE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Eiscue"), .cryId = CRY_EISCUE_NOICE_FACE, @@ -4756,7 +4756,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), - .abilities = { ABILITY_HUNGER_SWITCH, ABILITY_NONE }, + .abilities = { ABILITY_HUNGER_SWITCH, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Morpeko"), .cryId = CRY_MORPEKO_FULL_BELLY, @@ -4810,7 +4810,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), - .abilities = { ABILITY_HUNGER_SWITCH, ABILITY_NONE }, + .abilities = { ABILITY_HUNGER_SWITCH, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Morpeko"), .cryId = CRY_MORPEKO_HANGRY, @@ -5578,7 +5578,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_INTREPID_SWORD, ABILITY_NONE }, + .abilities = { ABILITY_INTREPID_SWORD, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Zacian"), .cryId = CRY_ZACIAN_HERO_OF_MANY_BATTLES, @@ -5632,7 +5632,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_INTREPID_SWORD, ABILITY_NONE }, + .abilities = { ABILITY_INTREPID_SWORD, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Zacian"), .cryId = CRY_ZACIAN_CROWNED_SWORD, @@ -5689,7 +5689,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_DAUNTLESS_SHIELD, ABILITY_NONE }, + .abilities = { ABILITY_DAUNTLESS_SHIELD, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Zamazenta"), .cryId = CRY_ZAMAZENTA_HERO_OF_MANY_BATTLES, @@ -5744,7 +5744,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_DAUNTLESS_SHIELD, ABILITY_NONE }, + .abilities = { ABILITY_DAUNTLESS_SHIELD, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Zamazenta"), .cryId = CRY_ZAMAZENTA_CROWNED_SHIELD, @@ -5801,7 +5801,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Eternatus"), .cryId = CRY_ETERNATUS, @@ -5856,7 +5856,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Eternatus"), .cryId = CRY_ETERNATUS_ETERNAMAX, @@ -5913,7 +5913,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_INNER_FOCUS, ABILITY_NONE }, + .abilities = { ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Kubfu"), .cryId = CRY_KUBFU, @@ -5969,7 +5969,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_UNSEEN_FIST, ABILITY_NONE }, + .abilities = { ABILITY_UNSEEN_FIST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Urshifu"), .cryId = CRY_URSHIFU_SINGLE_STRIKE_STYLE, @@ -6025,7 +6025,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_UNSEEN_FIST, ABILITY_NONE }, + .abilities = { ABILITY_UNSEEN_FIST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Urshifu"), .cryId = CRY_URSHIFU_SINGLE_STRIKE_STYLE, @@ -6081,7 +6081,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_UNSEEN_FIST, ABILITY_NONE }, + .abilities = { ABILITY_UNSEEN_FIST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Urshifu"), .cryId = CRY_URSHIFU_RAPID_STRIKE_STYLE, @@ -6137,7 +6137,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_UNSEEN_FIST, ABILITY_NONE }, + .abilities = { ABILITY_UNSEEN_FIST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Urshifu"), .cryId = CRY_URSHIFU_RAPID_STRIKE_STYLE, @@ -6196,7 +6196,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_LEAF_GUARD, ABILITY_NONE }, + .abilities = { ABILITY_LEAF_GUARD, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Zarude"), .cryId = CRY_ZARUDE, @@ -6249,7 +6249,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_LEAF_GUARD, ABILITY_NONE }, + .abilities = { ABILITY_LEAF_GUARD, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Zarude"), .cryId = CRY_ZARUDE, @@ -6305,7 +6305,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = 35, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_TRANSISTOR, ABILITY_NONE }, + .abilities = { ABILITY_TRANSISTOR, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Regieleki"), .cryId = CRY_REGIELEKI, @@ -6361,7 +6361,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = 35, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_DRAGONS_MAW, ABILITY_NONE }, + .abilities = { ABILITY_DRAGONS_MAW, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Regidrago"), .cryId = CRY_REGIDRAGO, @@ -6417,7 +6417,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = 35, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_CHILLING_NEIGH, ABILITY_NONE }, + .abilities = { ABILITY_CHILLING_NEIGH, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Glastrier"), .cryId = CRY_GLASTRIER, @@ -6471,7 +6471,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = 35, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_GRIM_NEIGH, ABILITY_NONE }, + .abilities = { ABILITY_GRIM_NEIGH, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Spectrier"), .cryId = CRY_SPECTRIER, @@ -6526,7 +6526,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = 100, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_UNNERVE, ABILITY_NONE }, + .abilities = { ABILITY_UNNERVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Calyrex"), .cryId = CRY_CALYREX, @@ -6581,7 +6581,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = 100, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_AS_ONE_ICE_RIDER, ABILITY_NONE }, + .abilities = { ABILITY_AS_ONE_ICE_RIDER, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Calyrex"), .cryId = CRY_CALYREX_ICE_RIDER, @@ -6636,7 +6636,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .friendship = 100, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_AS_ONE_SHADOW_RIDER, ABILITY_NONE }, + .abilities = { ABILITY_AS_ONE_SHADOW_RIDER, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Calyrex"), .cryId = CRY_CALYREX_SHADOW_RIDER, diff --git a/src/data/pokemon/species_info/gen_9.h b/src/data/pokemon/species_info/gen_9_families.h similarity index 99% rename from src/data/pokemon/species_info/gen_9.h rename to src/data/pokemon/species_info/gen_9_families.h index 3971b47482..43c72fa2c5 100644 --- a/src/data/pokemon/species_info/gen_9.h +++ b/src/data/pokemon/species_info/gen_9_families.h @@ -2534,7 +2534,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS), - .abilities = { ABILITY_MYCELIUM_MIGHT, ABILITY_NONE }, + .abilities = { ABILITY_MYCELIUM_MIGHT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Toedscool"), .cryId = CRY_TOEDSCOOL, @@ -2587,7 +2587,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS), - .abilities = { ABILITY_MYCELIUM_MIGHT, ABILITY_NONE }, + .abilities = { ABILITY_MYCELIUM_MIGHT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Toedscruel"), .cryId = CRY_TOEDSCRUEL, @@ -3336,7 +3336,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_WATER_2), - .abilities = { ABILITY_WATER_VEIL, ABILITY_NONE }, + .abilities = { ABILITY_WATER_VEIL, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Finizen"), .cryId = CRY_FINIZEN, @@ -3388,7 +3388,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_WATER_2), - .abilities = { ABILITY_ZERO_TO_HERO, ABILITY_NONE }, + .abilities = { ABILITY_ZERO_TO_HERO, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Palafin"), .cryId = CRY_PALAFIN_ZERO, @@ -3442,7 +3442,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_WATER_2), - .abilities = { ABILITY_ZERO_TO_HERO, ABILITY_NONE }, + .abilities = { ABILITY_ZERO_TO_HERO, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Palafin"), .cryId = CRY_PALAFIN_HERO, @@ -4359,7 +4359,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Great Tusk"), .cryId = CRY_GREAT_TUSK, @@ -4414,7 +4414,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PINK, .speciesName = _("ScreamTail"), .cryId = CRY_SCREAM_TAIL, @@ -4469,7 +4469,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .speciesName = _("BruteBonet"), .cryId = CRY_BRUTE_BONNET, @@ -4526,7 +4526,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("FluttrMane"), .cryId = CRY_FLUTTER_MANE, @@ -4582,7 +4582,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .speciesName = _("SlithrWing"), .cryId = CRY_SLITHER_WING, @@ -4636,7 +4636,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("SndyShocks"), .cryId = CRY_SANDY_SHOCKS, @@ -4691,7 +4691,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("IronTreads"), .cryId = CRY_IRON_TREADS, @@ -4746,7 +4746,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("IronBundle"), .cryId = CRY_IRON_BUNDLE, @@ -4801,7 +4801,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Iron Hands"), .cryId = CRY_IRON_HANDS, @@ -4856,7 +4856,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("IronJuguls"), .cryId = CRY_IRON_JUGULIS, @@ -4912,7 +4912,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Iron Moth"), .cryId = CRY_IRON_MOTH, @@ -4968,7 +4968,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("IronThorns"), .cryId = CRY_IRON_THORNS, @@ -5183,7 +5183,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_RATTLED, ABILITY_NONE }, + .abilities = { ABILITY_RATTLED, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Gimmighoul"), .cryId = CRY_GIMMIGHOUL, @@ -5237,7 +5237,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_RUN_AWAY, ABILITY_NONE }, + .abilities = { ABILITY_RUN_AWAY, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Gimmighoul"), .cryId = CRY_GIMMIGHOUL, @@ -5291,7 +5291,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_GOOD_AS_GOLD, ABILITY_NONE }, + .abilities = { ABILITY_GOOD_AS_GOLD, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Gholdengo"), .cryId = CRY_GHOLDENGO, @@ -5566,7 +5566,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("RoarngMoon"), .cryId = CRY_ROARING_MOON, @@ -5622,7 +5622,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .speciesName = _("IronVliant"), .cryId = CRY_IRON_VALIANT, @@ -5788,7 +5788,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("WalkngWake"), .cryId = CRY_WALKING_WAKE, @@ -5842,7 +5842,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, .speciesName = _("IronLeaves"), .cryId = CRY_IRON_LEAVES, @@ -6340,7 +6340,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, .speciesName = _("GouginFire"), .cryId = CRY_GOUGING_FIRE, @@ -6395,7 +6395,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("RagingBolt"), .cryId = CRY_RAGING_BOLT, @@ -6450,7 +6450,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("IronBouldr"), .cryId = CRY_IRON_BOULDER, @@ -6504,7 +6504,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Iron Crown"), .cryId = CRY_IRON_CROWN, @@ -6559,7 +6559,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_TERA_SHIFT, ABILITY_NONE }, + .abilities = { ABILITY_TERA_SHIFT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Terapagos"), .cryId = CRY_TERAPAGOS, @@ -6615,7 +6615,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_TERA_SHELL, ABILITY_NONE }, + .abilities = { ABILITY_TERA_SHELL, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Terapagos"), .cryId = CRY_TERAPAGOS, @@ -6670,7 +6670,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_TERAFORM_ZERO, ABILITY_NONE }, + .abilities = { ABILITY_TERAFORM_ZERO, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Terapagos"), .cryId = CRY_TERAPAGOS, @@ -6727,7 +6727,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .friendship = 0, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .abilities = { ABILITY_POISON_PUPPETEER, ABILITY_NONE }, + .abilities = { ABILITY_POISON_PUPPETEER, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Pecharunt"), .cryId = CRY_PECHARUNT, diff --git a/src/data/pokemon/species_info/shared_dex_text.h b/src/data/pokemon/species_info/shared_dex_text.h new file mode 100644 index 0000000000..0e48051537 --- /dev/null +++ b/src/data/pokemon/species_info/shared_dex_text.h @@ -0,0 +1,282 @@ +// Gen 1 families +const u8 gRaticateAlolanPokedexText[] = _( + "It forms a group of Rattata, which it \n" + "assumes command of. Each group\n" + "has its own territory, and disputes\n" + "over food happen often."); + +const u8 gPichuPokedexText[] = _( + "It is still inept at retaining electricity.\n" + "When it is startled, it discharges power\n" + "accidentally. It gets better at holding\n" + "power as it grows older."); + +const u8 gPikachuPokedexText[] = _( + "It stores electricity in the electric sacs\n" + "on its cheeks. When it releases pent-up\n" + "energy in a burst, the electric power is\n" + "equal to a lightning bolt."); + +const u8 gMarowakAlolanPokedexText[] = _( + "The cursed flames that light up the bone\n" + "carried by this Pokémon are said\n" + "to cause both mental and physical\n" + "pain that will never fade."); + +const u8 gEeveePokedexText[] = _( + "An Eevee has an unstable genetic makeup\n" + "that suddenly mutates due to its\n" + "environment. Radiation from various\n" + "Stones causes this Pokémon to evolve."); + +// Gen 2 families +const u8 gUnownPokedexText[] = _( + "This Pokémon is shaped like ancient text\n" + "characters. Although research is ongoing,\n" + "it is a mystery as to which came first,\n" + "the ancient writings or the various Unown."); + +// Gen 3 families +const u8 gDeoxysNormalPokedexText[] = _( + "Deoxys emerged from a virus that came\n" + "from space. It is highly intelligent and\n" + "can shoot lasers from the crystalline\n" + "organ on its chest."); + +// Gen 4 families +const u8 gMothimPokedexText[] = _( + "It does not keep a nest. While it\n" + "loves floral honey, it won't gather\n" + "any itself. Instead, it plots to steal\n" + "honey collected by Combee."); + +const u8 gArceusPokedexText[] = _( + "It is told in mythology that this Pokémon\n" + "emerged from an egg and shaped all there\n" + "is in this world, before the universe\n" + "even existed."); + +// Gen 5 families +const u8 gGenesectPokedexText[] = _( + "Over 300 million years ago, it was\n" + "feared as the strongest of hunters.\n" + "Team Plasma altered it and attached\n" + "a cannon to its back."); + +// Gen 6 families +const u8 gGreninjaPokedexText[] = _( + "It appears and vanishes with a ninja's\n" + "grace. It toys with its enemies using swift\n" + "movements, while slicing them with throwing\n" + "stars made of compressed water."); + +const u8 gScatterbugPokedexText[] = _( + "When under attack from bird Pokémon,\n" + "it spews a poisonous black powder that\n" + "causes paralysis on contact. Scatterbug\n" + "can live in any region or climate."); + +const u8 gSpewpaPokedexText[] = _( + "It lives hidden within thicket shadows.\n" + "When predators attack, it quickly bristles\n" + "the fur covering its body in an effort to\n" + "threaten them."); + +const u8 gFurfrouPokedexText[] = _( + "Trimming its fluffy fur not only makes\n" + "it more elegant but also increases the\n" + "swiftness of its movements. These\n" + "Pokémon were the guardians of kings."); + +const u8 gXerneasPokedexText[] = _( + "Legends say that when the horns on\n" + "its head shine in seven colors, it is\n" + "sharing everlasting life. It slept for a\n" + "thousand years in the form of a tree"); + +const u8 gZygarde50PokedexText[] = _( + "It's said to be monitoring the ecosystem\n" + "from deep in the caves where it lives.\n" + "There are rumors that even greater power\n" + "lies hidden within its cells."); + +const u8 gZygarde10PokedexText[] = _( + "This is Zygarde when about 10% of\n" + "its pieces have been assembled. It\n" + "leaps at its opponent's chest and\n" + "sinks its sharp fangs into them."); + +// Gen 7 families +const u8 gGumshoosPokedexText[] = _( + "When it finds a trace of its prey, it\n" + "patiently stakes out the location...\n" + "but as it's diurnal, it's always snoozing\n" + "by nightfall."); + +const u8 gVikavoltPokedexText[] = _( + "It concentrates electrical energy within\n" + "its large jaws and uses it to zap its foes.\n" + "It overwhelms bird Pokémon with shocking\n" + "beams of electrical energy."); + +const u8 gRibombeePokedexText[] = _( + "Ribombee rolls up pollen into puffs.\n" + "It makes many different varieties, some\n" + "used as food and others used in battle.\n" + "They are sometimes sold as supplements."); + +const u8 gRockruffPokedexText[] = _( + "This Pokémon has lived with people since\n" + "times long ago. It can sense when its\n" + "Trainer is in the dumps and will stick\n" + "close by its Trainer's side."); + +const u8 gAraquanidPokedexText[] = _( + "Despite what its appearance suggests,\n" + "it cares for others. If it finds vulnerable,\n" + "weak Pokémon, it protectively brings\n" + "them into its water bubble."); + +const u8 gLurantisPokedexText[] = _( + "It requires a lot of effort to maintain\n" + "Lurantis's vivid coloring, but some\n" + "collectors enjoy this work and treat it\n" + "as their hobby."); + +const u8 gSalazzlePokedexText[] = _( + "For some reason, only females have\n" + "been found. It creates a reverse harem of\n" + "male Salandit to live with. Its poisonous\n" + "gas is filled with pheromones."); + +const u8 gSilvallyNormalPokedexText[] = _( + "Its trust in its partner awakens it.\n" + "This Pokémon is capable of changing its\n" + "type by equipping special memories, a\n" + "trait that is well displayed in battle."); + +const u8 gSilvallyMemoryPokedexText[] = _( + "Upon awakening, its RKS System is\n" + "activated. By employing specific\n" + "memories, this Pokémon can adapt its\n" + "type to confound its enemies."); + +const u8 gMiniorMeteorPokedexText[] = _( + "Originally making its home in the ozone\n" + "layer, it hurtles to the ground when the\n" + "shell encasing its body grows too heavy.\n" + "It was born from mutated nanoparticles."); + +const u8 gMiniorCorePokedexText[] = _( + "If its core stays exposed, it will\n" + "soon die off. It's possible that it\n" + "may survive if it's put into a Poké Ball\n" + "quickly enough."); + +const u8 gTogedemaruPokedexText[] = _( + "The spiny fur on its back is normally\n" + "at rest. When this Pokémon becomes\n" + "agitated, its fur stands on end and stabs\n" + "into its attackers."); + +const u8 gMimikyuDisguisedPokedexText[] = _( + "A lonely Pokémon, it hides its terrifying\n" + "appearance beneath an old rag so it can\n" + "get closer to people and other Pokémon.\n" + "Its actual appearance is unknown."); + +const u8 gMimikyuBustedPokedexText[] = _( + "After going to all the effort of\n" + "disguising itself, its neck was\n" + "broken. Whatever is inside is probably\n" + "unharmed, but it's still feeling sad."); + +const u8 gKommoOPokedexText[] = _( + "Its rigid scales function as offense and\n" + "defense. In the past, its scales were\n" + "processed and used to make weapons\n" + "and other valuable commodities."); + +// Gen 8 families +const u8 gAlcremieVanillaCreamPokedexText[] = _( + "If Alcremie is content, the secreted cream\n" + "from its hands becomes sweeter and richer." + "When it trusts a Trainer, it will treat\n" + "them to berries it's decorated with cream."); + +const u8 gAlcremieRubyCreamPokedexText[] = _( + "The moment it evolved, it took on a\n" + "sweet and tart flavor. This is\n" + "because of the way its cells\n" + "spontaneously shifted during evolution."); + +const u8 gAlcremieMatchaCreamPokedexText[] = _( + "The moment it evolved, it took on\n" + "an aromatic flavor. This is because\n" + "of the way its cells spontaneously\n" + "shifted during evolution."); + +const u8 gAlcremieMintCreamPokedexText[] = _( + "The moment it evolved, it took on a\n" + "refreshing flavor. This is because\n" + "of the way its cells spontaneously\n" + "shifted during evolution."); + +const u8 gAlcremieLemonCreamPokedexText[] = _( + "The moment it evolved, it took on a\n" + "sour flavor. This is because of the\n" + "way its cells spontaneously shifted\n" + "during evolution."); + +const u8 gAlcremieSaltedCreamPokedexText[] = _( + "The moment it evolved, it took on a\n" + "salty flavor. This is because of the\n" + "way its cells spontaneously shifted\n" + "during evolution."); + +const u8 gAlcremieRubySwirlPokedexText[] = _( + "The moment it evolved, it took on a\n" + "mixed flavor. This is because of the\n" + "way its cells spontaneously shifted\n" + "during evolution."); + +const u8 gAlcremieCaramelSwirlPokedexText[] = _( + "The moment it evolved, it took on a\n" + "bitter flavor. This is because of\n" + "the way its cells spontaneously\n" + "shifted during evolution."); + +const u8 gAlcremieRainbowSwirlPokedexText[] = _( + "The moment it evolved, it took on a\n" + "complex flavor. This is because of\n" + "the way its cells spontaneously\n" + "shifted during evolution."); + +const u8 gToxtricityGigantamaxPokedexText[] = _( + "Out of control after its own\n" + "poison penetrated its brain, it tears\n" + "across the land in a rampage,\n" + "contaminating the earth with toxic sweat."); + +// Gen 9 families +const u8 gOgerponTealMaskPokedexText[] = _( + "This Pokémon's type changes based on\n" + "which mask it's wearing. It confounds\n" + "its enemies with nimble movements\n" + "and kicks."); + +const u8 gOgerponWellspringMaskPokedexText[] = _( + "This form excels in both attack\n" + "and defense. It ceaselessly unleashes\n" + "moves like a spring gushes water."); + +const u8 gOgerponHearthflameMaskPokedexText[] = _( + "This form is the most aggressive,\n" + "bombarding enemies with the\n" + "intensity of flames blazing within a hearth."); + +const u8 gOgerponCornerstoneMaskPokedexText[] = _( + "In this form, it draws on the power\n" + "of stone. Its body is rock-solid,\n" + "protecting it from all manner of\n" + "attacks."); \ No newline at end of file diff --git a/src/daycare.c b/src/daycare.c index 0a06ed7ddb..ead6668ec5 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1054,12 +1054,15 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent eggSpecies = SPECIES_PHIONE; else if (eggSpecies == SPECIES_SINISTEA_ANTIQUE) eggSpecies = SPECIES_SINISTEA_PHONY; - else if (GET_BASE_SPECIES_ID(eggSpecies) == SPECIES_VIVILLON) - eggSpecies = SPECIES_SCATTERBUG; else if (GET_BASE_SPECIES_ID(eggSpecies) == SPECIES_ROTOM) eggSpecies = SPECIES_ROTOM; else if (GET_BASE_SPECIES_ID(eggSpecies) == SPECIES_FURFROU) eggSpecies = SPECIES_FURFROU; + // To avoid single-stage Totem Pokémon to breed more of themselves. + else if (eggSpecies == SPECIES_MIMIKYU_TOTEM_DISGUISED) + eggSpecies = SPECIES_MIMIKYU_DISGUISED; + else if (eggSpecies == SPECIES_TOGEDEMARU_TOTEM) + eggSpecies = SPECIES_TOGEDEMARU; // Make Ditto the "mother" slot if the other daycare mon is male. if (species[parentSlots[1]] == SPECIES_DITTO && GetBoxMonGender(&daycare->mons[parentSlots[0]].mon) != MON_FEMALE) diff --git a/src/pokemon.c b/src/pokemon.c index 59cbe15f51..ab36c3e7fb 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -953,7 +953,8 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, else if (P_LEGENDARY_PERFECT_IVS >= GEN_6 && (gSpeciesInfo[species].isLegendary || gSpeciesInfo[species].isMythical - || gSpeciesInfo[species].isUltraBeast)) + || gSpeciesInfo[species].isUltraBeast + || gSpeciesInfo[species].isTotem)) { iv = MAX_PER_STAT_IVS; // Initialize a list of IV indices. diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index 5b0ee35715..c2a0a4170a 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -453,6 +453,7 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .species = SPECIES_PIKACHU_ALOLA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_PIKACHU_PARTNER_CAP, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_PIKACHU_WORLD_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_PARTNER, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_SANDSHREW, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_SANDSHREW_ALOLAN, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_NIDORAN_F, .jumpType = JUMP_TYPE_NORMAL, }, @@ -477,6 +478,7 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .species = SPECIES_CUBONE, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_DITTO, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_EEVEE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_EEVEE_PARTNER, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_OMANYTE, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_KABUTO, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_CHIKORITA, .jumpType = JUMP_TYPE_SLOW, }, @@ -629,8 +631,44 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .species = SPECIES_FROAKIE, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_FROGADIER, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_BUNNELBY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SPEWPA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SCATTERBUG_POLAR, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_TUNDRA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_CONTINENTAL, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_GARDEN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_ELEGANT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_MEADOW, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_MODERN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_MARINE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_ARCHIPELAGO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_HIGH_PLAINS, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_SANDSTORM, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_RIVER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_MONSOON, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_SAVANNA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_SUN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_OCEAN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_JUNGLE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_FANCY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG_POKE_BALL, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SPEWPA_POLAR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_TUNDRA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_CONTINENTAL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_GARDEN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_ELEGANT, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_MEADOW, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_MODERN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_MARINE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_ARCHIPELAGO, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_HIGH_PLAINS, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_SANDSTORM, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_RIVER, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_MONSOON, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_SAVANNA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_SUN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_OCEAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_JUNGLE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_FANCY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPEWPA_POKE_BALL, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_LITLEO, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_PANCHAM, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_ESPURR, .jumpType = JUMP_TYPE_NORMAL, }, diff --git a/test/battle/move_effect/rage_fist.c b/test/battle/move_effect/rage_fist.c index 10acacd91f..109713b64d 100644 --- a/test/battle/move_effect/rage_fist.c +++ b/test/battle/move_effect/rage_fist.c @@ -252,9 +252,13 @@ SINGLE_BATTLE_TEST("Rage Fist base power is not increased if move had no affect" SINGLE_BATTLE_TEST("Rage Fist base power is increased if Disguise breaks") { s16 timesGotHit[2]; + u16 species = SPECIES_NONE; + + PARAMETRIZE { species = SPECIES_MIMIKYU_DISGUISED; } + PARAMETRIZE { species = SPECIES_MIMIKYU_TOTEM_DISGUISED; } GIVEN { - PLAYER(SPECIES_MIMIKYU_DISGUISED) { Ability(ABILITY_DISGUISE); } + PLAYER(species) { Ability(ABILITY_DISGUISE); } OPPONENT(SPECIES_REGIROCK); } WHEN { TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_ROCK_THROW); } From 7ac8aac913398b3e0301543c741f1360f6e3c17a Mon Sep 17 00:00:00 2001 From: tertu Date: Sat, 16 Mar 2024 14:55:01 -0500 Subject: [PATCH 51/55] Add LocalRandomSeed (#4278) --- include/random.h | 7 +++++++ src/random.c | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/include/random.h b/include/random.h index 99ec280474..d15aa28bfb 100644 --- a/include/random.h +++ b/include/random.h @@ -17,6 +17,7 @@ * LocalRandom(*val) allows you to have local random states that are the same * type as the global states regardless of HQ_RANDOM setting, which is useful * if you want to be able to set them from or assign them to gRngValue. +* LocalRandomSeed(u32) returns a properly seeded rng_value_t. * * Random2_32() was added to HQ_RANDOM because the output of the generator is * always 32 bits and Random()/Random2() are just wrappers in that mode. It is @@ -61,6 +62,7 @@ static inline u16 Random(void) void SeedRng(u32 seed); void SeedRng2(u32 seed); +rng_value_t LocalRandomSeed(u32 seed); static inline u16 Random2(void) { @@ -96,6 +98,11 @@ static inline void AdvanceRandom(void) Random(); } +static inline rng_value_t LocalRandomSeed(u32 seed) +{ + return seed; +} + #endif extern rng_value_t gRngValue; diff --git a/src/random.c b/src/random.c index 8e8dae8f3d..3ec3638fe1 100644 --- a/src/random.c +++ b/src/random.c @@ -91,6 +91,13 @@ void SeedRng2(u32 seed) SFC32_Seed(&gRng2Value, seed, STREAM2); } +rng_value_t LocalRandomSeed(u32 seed) +{ + rng_value_t result; + SFC32_Seed(&result, seed, STREAM1); + return result; +} + void AdvanceRandom(void) { if (sRngLoopUnlocked == TRUE) From f692244ce725a1f8b0c7c2c88c6f6a76e64d6ea9 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 16 Mar 2024 22:31:58 +0100 Subject: [PATCH 52/55] Improve error message with unsupported cpp (#4272) * Improve error message with unsupported cpp * Update include/metaprogram.h Co-authored-by: Martin Griffin --------- Co-authored-by: Martin Griffin --- include/metaprogram.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/metaprogram.h b/include/metaprogram.h index eee79b73b1..4bcc306b6f 100644 --- a/include/metaprogram.h +++ b/include/metaprogram.h @@ -2,6 +2,15 @@ #ifndef METAPROGRAM_H #define METAPROGRAM_H +/* Check if VA_OPT_ is supported by the compiler. GCC's version should be at least 9.5*/ +#define PP_THIRD_ARG(a,b,c,...) c +#define VA_OPT_SUPPORTED_I(...) PP_THIRD_ARG(__VA_OPT__(,),TRUE,FALSE,) +#define VA_OPT_SUPPORTED VA_OPT_SUPPORTED_I(?) + +#if !VA_OPT_SUPPORTED +#error ERROR: VA_OPT__ is not supported. Please update your gcc compiler to version 10 or higher +#endif // VA_OPT_SUPPORTED + /* Calls m0/m1/.../m8 depending on how many arguments are passed. */ #define VARARG_8(m, ...) CAT(m, NARG_8(__VA_ARGS__))(__VA_ARGS__) From 331efedf7ea1ae9622a06f10e1a847fc05539ec7 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sat, 16 Mar 2024 19:46:20 -0300 Subject: [PATCH 53/55] Version 1.8.0 --- .../ISSUE_TEMPLATE/01_battle_engine_bugs.yaml | 10 +- .../ISSUE_TEMPLATE/02_battle_ai_issues.yaml | 10 +- .github/ISSUE_TEMPLATE/04_other_errors.yaml | 10 +- CHANGELOG.md | 3 + README.md | 27 +- docs/changelogs/1.8.0.md | 704 ++++++++++++++++++ docs/changelogs/template.md | 8 + include/constants/expansion.h | 7 +- 8 files changed, 744 insertions(+), 35 deletions(-) create mode 100644 docs/changelogs/1.8.0.md diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml index 33af7d9649..9b892bc732 100644 --- a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml +++ b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml @@ -23,17 +23,15 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.7.4 (Latest release) - - master (default when pulling, unreleased bugfixes) + - 1.8.0 (Latest release) + - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.7.4 - 1.7.3 - 1.7.2 - 1.7.1 - 1.7.0 - - 1.6.2 - - 1.6.1 - - 1.6.0 - - pre-1.6.0 + - pre-1.7.0 validations: required: true - type: input diff --git a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml index cabfda4990..ae2752be6a 100644 --- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml +++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml @@ -23,17 +23,15 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.7.4 (Latest release) - - master (default when pulling, unreleased bugfixes) + - 1.8.0 (Latest release) + - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.7.4 - 1.7.3 - 1.7.2 - 1.7.1 - 1.7.0 - - 1.6.2 - - 1.6.1 - - 1.6.0 - - pre-1.6.0 + - pre-1.7.0 validations: required: true - type: input diff --git a/.github/ISSUE_TEMPLATE/04_other_errors.yaml b/.github/ISSUE_TEMPLATE/04_other_errors.yaml index 33c85c15fb..de6b18030a 100644 --- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml +++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml @@ -23,17 +23,15 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.7.4 (Latest release) - - master (default when pulling, unreleased bugfixes) + - 1.8.0 (Latest release) + - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.7.4 - 1.7.3 - 1.7.2 - 1.7.1 - 1.7.0 - - 1.6.2 - - 1.6.1 - - 1.6.0 - - pre-1.6.0 + - pre-1.7.0 validations: required: true - type: input diff --git a/CHANGELOG.md b/CHANGELOG.md index f8e0c66e20..e74fd67340 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Pokeemerald-Expansion Changelogs +## Version 1.8.x +### [Version 1.8.0](docs/changelogs/1.8.0.md) - Feature Release + ## Version 1.7.x ### [Version 1.7.4](docs/changelogs/1.7.4.md) - Bugfix Release ### [Version 1.7.3](docs/changelogs/1.7.3.md) - Bugfix Release diff --git a/README.md b/README.md index dcb9861615..c1c14b1266 100644 --- a/README.md +++ b/README.md @@ -25,24 +25,23 @@ Based off RHH's pokeemerald-expansion v1.7.3 https://github.com/rh-hideout/pokee - Physical/Special/Status Category (configurable). - New moves and abilities up to Scarlet and Violet. - Custom Contest data up to SwSh, newer moves are WIP. ([source](https://pokemonurpg.com/info/contests/rse-move-list/)) - - Mega Evolution - - Primal Reversion - - Ultra Burst - - Z-Moves - - Gen 8+ damaging moves are given power extrapolated from Gen 7. - - Gen 8+ status moves have no additional effects, like Healing Wish. - - Dynamax - - Gigantamax forms + - Battle gimmick support: + - Mega Evolution + - Primal Reversion + - Ultra Burst + - Z-Moves + - Gen 8+ damaging moves are given power extrapolated from Gen 7. + - Gen 8+ status moves have no additional effects, like Healing Wish. + - Dynamax and Gigantamax - Initial battle parameters - Queueing stat boosts (aka, Totem Boosts) - Setting Terrains. - Mid-turn speed recalculation. - Quick Poké Ball selection in Wild Battles - - Press `R` to use last selected Poké Ball. - Hold `R` to change selection with the D-Pad. + - Press `R` to use last selected Poké Ball. - Run option shortcut - - Faster battle intro - - Message and animation/cry happens at the same time. + - Faster battle intro - Message and animation/cry happens at the same time. - Faster HP drain. - Battle Debug menu. - Accessed by pressing `Select` on the "Fight/Bag/Pokémon/Run" menu. @@ -105,7 +104,8 @@ Based off RHH's pokeemerald-expansion v1.7.3 https://github.com/rh-hideout/pokee - HP Threshold (eg. Darmanitan) - Weather (eg. Castform) - End of turn (eg. Morpeko) - - Time of day (Shaymin) + - Time of day (eg. Shaymin) + - Fusions (eg. Kyurem) - ***Breeding Improvements*** - Incense Baby Pokémon now happen automatically (configurable). - Level 1 eggs (configurable). @@ -138,7 +138,6 @@ Based off RHH's pokeemerald-expansion v1.7.3 https://github.com/rh-hideout/pokee - *Dark Mode*. - [Nature Colors](https://github.com/DizzyEggg/pokeemerald/tree/nature_color) in summary screen by @DizzyEggg - [Dynamic Multichoice](https://github.com/SBird1337/pokeemerald/tree/feature/dynmulti) by @SBird1337 - - [Guillotine](https://github.com/aarant/pokeemerald/tree/guillotine) (Decapitalization) by @aarant - ***Other features*** - Pressing B while holding a Pokémon drops them like in modern games (configurable). - Running indoors (configurable). @@ -165,7 +164,7 @@ With this, you'll get the latest version of pokeemerald-expansion, plus a couple ## **How do I update my version of pokeemerald-expansion?** - If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. -- Once you have your remote set up, run the command `git pull RHH expansion/1.7.4`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.8.0`. ### Please consider crediting the entire [list of contributors](https://github.com/rh-hideout/pokeemerald-expansion/wiki/Credits) in your project, as they have all worked hard to develop this project :) diff --git a/docs/changelogs/1.8.0.md b/docs/changelogs/1.8.0.md new file mode 100644 index 0000000000..afe6a03bf1 --- /dev/null +++ b/docs/changelogs/1.8.0.md @@ -0,0 +1,704 @@ +# Version 1.8.0 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.8.0`. +``` + +## 🌋 *IMPORTANT CHANGES* 🌋 +* ***Python is now a required for the Expansion***. + * Run the `command -v python3` command to see if you have it. If you don't, please check INSTALL.md to see how to install it. +* **Support for PoryMap v5.1.1 and lower has been dropped.** + * [Please update your PoryMap version](https://github.com/huderlem/porymap/releases). + * Specifically, we have removed the commented-out `gMonIconTable` table used to associate species IDs with icon images by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3896 + * From PoryMap v5.2.0 onwards, these icons are autodetected based on file/directory names instead. + * To continue using older versions of PoryMap, you may restore the commented-out table, though you'll need to keep it up to date with any new items you add. +* **Backwards-compatible `BoxPokemon` Refactor** by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3438 + * HP and Status is now kept when depositing Pokémon in the PC + * Previous behavior can be restored by setting `OW_PC_HEAL`. + * Nature Mints are now fully functional. + * Nature colors in summary screen are based on the changed nature by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3898 + * Gigantamax Factor and Dynamax Level fully supported. + * Cannot be seen in summary screen. + * Dynamax Candy effect added. + * Gigantamax Factor prevents Duraludon from evolving, like Pikachu, Eevee and Meowth beforehand. + * Added `hasgigantamaxfactor` and `togglegigantamaxfactor` overworld script commands. + * Gigantamax Factor cannot be toggled for Mythical Pokémon (vanilla behavior). + * Hyper Training is now fully supported. + * Cannot be seen in summary screen. + * Added `canhypertrain` and `hypertrain` overworld script commands. + * Shininess can be toggled with `MON_DATA_IS_SHINY`. + * Added Tera Type field is added for future-proofing. + * It can be seen in the summary screen by turning `P_SHOW_TERA_TYPE` on. + * Added `isShadow` field for future-proofing. + * Added options for Tera Type, Dynamax Level, Gigantamax Factor and Shadow flag in tests. + * Cleanup by + * @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3832 + * @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4017 + +* **Move Refactors**: + * ***Move data unification*** by @LOuroboros, with help from @Bassoonian, @cfmnephrite and @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3999 + * Renamed `gBattleMoves` to `gMovesInfo`. + * Moved move names to `gMovesInfo`. + * Added `GetMoveName` to get all move names, removing the need for `GetMaxMoveName` and `GetZMoveName`. + * Moved move descriptions to `gMovesInfo`. + * Moved contest data to `gMovesInfo`. + * ***Secondary/primary effects overhaul*** by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3577 + * Secondary effects such as stat stage modifiers and status via are now set via `additionalEffects` field. + * Eg. + ```c + [MOVE_THUNDER_FANG] = + { + .effect = EFFECT_FLINCH_STATUS, + .secondaryEffectChance = 10, + .argument = STATUS1_PARALYSIS, + ... + }, + ``` + Now becomes: + ```c + [MOVE_THUNDER_FANG] = + { + .effect = EFFECT_HIT, + .additionalEffects = ADDITIONAL_EFFECTS( + { .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 10, }, + { .moveEffect = MOVE_EFFECT_FLINCH, .chance = 10, } + ), + ... + }, + ``` + With customizable independent chances for each effect. Because of this, `secondaryEffectChance` has been removed. + * For more info, check the wiki article on [How to add a new move](https://github.com/rh-hideout/pokeemerald-expansion/wiki/How-to-add-a-new-move-(Version-1.8.0-and-higher)). + * Cleanup by: + * @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/3986 + * @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4003 + * By @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/4137 + * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4277 + * ***Renamed Battle Move "Split" to the proper "Category" term*** by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3774 + ```diff + -.split = SPLIT_PHYSICAL, + +.category = DAMAGE_CATEGORY_PHYSICAL, + ``` + * Z-move power override (eg. Mega Drain) was moved from a switch in `GetZMovePower` to move data. It's part of an union alongsize with Z-move status effect by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3575 + * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4201 + * Removed `EFFECT_RECOIL_x` effects in favor of new `recoil` field by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3575 + * Removed critical-hit move effects in favor of new `criticalHitStage` by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3779 + * Added `alwaysCriticalHit` move flag. + * Converted `EFFECT_x` defines to an enum by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3975 + * Move data now uses ternaries for data that was changed only once across generations by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3987 + ```diff + [MOVE_SWORDS_DANCE] = + { + - #if B_UPDATED_MOVE_DATA >= GEN_6 + - .pp = 20, + - #else + - .pp = 30, + - #endif + .effect = EFFECT_ATTACK_UP_2, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + + .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 30, + ``` + * Moved effect script array to `src/data/battle_move_effects.h` by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3994 + * AI's `sEncouragedEncoreEffects` and Battle TV's `sPoints_MoveEffect` are now handled in this struct. + * Some move flags were moved to this array instead + * Semi-invulnerable flag (`semiInvulnerableEffect`) in https://github.com/rh-hideout/pokeemerald-expansion/pull/4062 + * Cleanup by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/4150 + * Flag to define Two-turn effects (`twoTurnEffect`) in https://github.com/rh-hideout/pokeemerald-expansion/pull/4062 + * Flag for increasing the protection counter (`usesProtectCounter`) in https://github.com/rh-hideout/pokeemerald-expansion/pull/4062 + * Removed `sheerForceBoost` in favor of checking their actual secondary effects by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/4096 + * To force Sheer Boost acting for a move without secondary effect, you can add `SHEER_FORCE_HACK` in the `additionalEffects` field. +* ***Learnset refactors*** + * ***Level up learnsets can now be switched by generational config*** by @MartyKen in https://github.com/rh-hideout/pokeemerald-expansion/pull/4049 + * Adds a file for each generation with data for all species. + * Gen 1: Yellow + * Gen 2: Crystal + * Gen 3: RSE + * Gen 4: HGSS + * Gen 5: B2W2 + * Gen 6: ORAS + * Gen 7: USUM + * Gen 8: + * Species from Gens 1-4: BDSP + * Species from Legends: Arceus: Use that game's data. + * Species from Gens 5-8: SwSh if they exist there. Otherwise, default to Gen 7's data. + * Gen 9: + * If they exist in SV, use that game's data. + * Otherwise, default to Gen 8's data. + * If a Pokémon doesn't exist in the respective generation, it uses the first instance it appears in. + * Eg. Chikorita uses its Gen 2 learnset if the config is set to Gen 1. + * ***IMPORTANT:*** Since the expansion's default had most movesets correspond to USUM's, conflicts will arise in `data/pokemon/level_up_learnsets/gen_7.h` if you modified the level learnsets. Be sure to backup your `data/pokemon/level_up_learnsets.h` before merging and then do the following after merging to keep your changes: + ```diff + +#include "data/pokemon/level_up_learnsets.h" + +#if FALSE + + + #if P_LVL_UP_LEARNSETS >= GEN_9 + #include "data/pokemon/level_up_learnsets/gen_9.h" + #elif P_LVL_UP_LEARNSETS >= GEN_8 + #include "data/pokemon/level_up_learnsets/gen_8.h" + #elif P_LVL_UP_LEARNSETS >= GEN_7 + #include "data/pokemon/level_up_learnsets/gen_7.h" + #elif P_LVL_UP_LEARNSETS >= GEN_6 + #include "data/pokemon/level_up_learnsets/gen_6.h" + #elif P_LVL_UP_LEARNSETS >= GEN_5 + #include "data/pokemon/level_up_learnsets/gen_5.h" + #elif P_LVL_UP_LEARNSETS >= GEN_4 + #include "data/pokemon/level_up_learnsets/gen_4.h" + #elif P_LVL_UP_LEARNSETS >= GEN_3 + #include "data/pokemon/level_up_learnsets/gen_3.h" + #elif P_LVL_UP_LEARNSETS >= GEN_2 + #include "data/pokemon/level_up_learnsets/gen_2.h" + #elif P_LVL_UP_LEARNSETS >= GEN_1 + #include "data/pokemon/level_up_learnsets/gen_1.h" + #endif + +#endif + ``` + * Cleanup by + * @MartyKen in https://github.com/rh-hideout/pokeemerald-expansion/pull/4267 + * @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4275 + * Added `sUniversalMoves`, a near-universal teachable move array by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4052 + * This removes the need to add moves such as Hidden Power to almost every species. + * Adds `tmIlliterate` flag that controls when specific species cannot learn these moves, such as Magikarp, Caterpie and Ditto. + * ***Auto-generate teachable learnset data from JSON data*** by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3856 + - Scans the repository for TMs and tutor moves. + - Checks JSON files (same format as PoryMoves, with minor label adjustments for an easier time) for compatibility. + - Creates a `teachable_learnsets.h` file with the smallest size possible by only including the moves found in the scan. + - Users can easily delete/add JSON files to reference less/more data as they see fit. + - Eg. they can remove hgss.json to remove those games' compatibility list from being considered. + - Any changes in `teachable_learnsets.h` made before this tool runs for the first time will be saved in `custom.json` for flawless migration. + * Updated `teachable_learnsets.h` using this script by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4064 + * Further updated with new Indigo Disk data compatibility by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4155 + * Can be disabled via `P_LEARNSET_HELPER_TEACHABLE`. + * Removed previously untutorable moves from Mew's unteachable moves by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/4142 + +* **Ability Refactor: new struct called `Ability` that stores both name and description of abilities** by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3861 + * AI ability scores moved to this struct by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3862 + * Added ability flags to replace arrays and switch statements by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3886 + * `cantBeCopied`: Cannot be copied by Role Play or Doodle. + * `cantBeSwapped`: Cannot be swapped with Skill Swap or Wandering Spirit. + * `cantBeTraced`: Cannot be copied by Trace. + * `cantBeSuppressed`: Cannot be negated by Gastro Acid or Neutralizing Gas. + * `cantBeOverwritten`: Cannot be overwritten by Entrainment, Worry Seed or Simple Beam. Mummy/Lingering Aroma checks for `cantBeSuppressed` instead. + * `breakable`: Can be bypassed by Mold Breaker-like abilities. + * `failsOnImposter`: Currently unused. + * Cleanup by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3889 + +* **Type info consolidation by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/4185** + * New struct called `TypeInfo` that stores: + * Name + * Generic move name + * Icon Palette index number + * Type Z-Move + * Type Max Move + * Commented out data to assist users that desire to use it in their own hacks and as a reference for them to add items of new types. + * Type-enhancing item (eg. Charcoal) + * Type-resist berry + * Type Gems + * Z-Crystal + * Tera Shard + * Arceus form + * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4276 + +## 🧬 General 🧬 +### Added +* Added optional high-quality RNG by @tertu-m in https://github.com/rh-hideout/pokeemerald-expansion/pull/3780 + * Can be toggled with `HQ_RANDOM`. + * Cleanup by + * @tertu-m in https://github.com/rh-hideout/pokeemerald-expansion/pull/3812 + * @tertu-m in https://github.com/rh-hideout/pokeemerald-expansion/pull/4218 + * @tertu-m in https://github.com/rh-hideout/pokeemerald-expansion/pull/4278 +* Added defines to RHH's rom header + * `MOVES_COUNT` and `NUM_SPECIES` by @Ninjdai1 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3831 + * Cleanup by @Ninjdai1 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3992 + * `ITEMS_COUNT` and `ITEM_NAME_LENGTH` by @Ninjdai1 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3988 +* IWRAM and EWRAM variables can now be assigned at boot by using `EWRAM_INIT` and `IWRAM_INIT` by @aronson in https://github.com/rh-hideout/pokeemerald-expansion/pull/3892 + * For example: + ```c + EWRAM_INIT u32 gFoo = 1337; + IWRAM_INIT u32 gFastFoo = 31337; + ``` + * Cleanup by @aronson in https://github.com/rh-hideout/pokeemerald-expansion/pull/3903 +* Level Caps by @AlexOn1ine, @SBird1337 and PokemonCrazy in https://github.com/rh-hideout/pokeemerald-expansion/pull/3632 + * Types of caps (set in `B_EXP_CAP_TYPE`): + * None (`EXP_CAP_NONE`): Regular behavior, no level caps are applied. + * Hard (`EXP_CAP_HARD`): Pokémon with a level equal or above cap cap cannot gain any experience. + * Soft (`EXP_CAP_SOFT`): Pokémon with a level equal or above cap will gain reduced experience. + * Cap level can be set using either: + * `LEVEL_CAP_FLAG_LIST`: Level cap is chosen according to the first unset flag in `sLevelCapFlagMap`. + * `LEVEL_CAP_VARIABLE`: Uses a defined variable to dynamically change level cap. + * Additional options include: + * `B_RARE_CANDY_CAP`: If set to true, Rare Candies can't be used to go over the level cap. + * `B_LEVEL_CAP_EXP_UP`: If set to true, mons under level cap will receive more experience. + * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4275 +* Added new metaprogram macros by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3968 + * Allows to set up default data without explicitily defining it. + * Eg. setting Poké Balls as the default ball for all trainer classes. +* Elite Four/Champion transitions can now easily be applied to any trainer in their data by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/4000 + * Based off @ShinyDragonHunter's [BetterMugshots](https://github.com/ShinyDragonHunter/pokeemerald/tree/BetterMugshots) branch. + * To use, use these in `src/data/trainers.h`: + * Use`mugshotEnabled` to enable it for the specific trainer. + * Use `mugshotColor` to choose the color of the background for the transition between the following: + * `MUGSHOT_COLOR_PURPLE` + * `MUGSHOT_COLOR_GREEN` + * `MUGSHOT_COLOR_PINK` + * `MUGSHOT_COLOR_BLUE` + * `MUGSHOT_COLOR_YELLOW` + * Cleanup using metaprogram by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/4140 +* Added `OW_DOUBLE_APPROACH_WITH_ONE_MON` config to allow being spotted by two trainers with one mon in party for a 2v1 battle by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4007 +* Added configs to enable metric system units by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4183 + * Toggled by `UNITS` in `include/config.h`. + * Cleanup by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4193 +* ***Implemented custom GiveMon scripting command*** by @LOuroboros, with help from @ghoulslash and @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3924 + * Based off @ghoulslash's [custom_givemon](https://github.com/ghoulslash/pokeemerald/tree/custom_givemon) branch. + * In addition to Species, Level and Held Item, users can now specify: + * Poké Ball + * Nature + * Ability number + * You can pass `NUM_ABILITY_PERSONALITY` to generate the ability based on personality by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4192 + * Gender + * EVs + * IVs + * Moves + * Shininess + * Gigantamax Factor + * Tera Type +* Save-compatible SaveBlock3, with 1624 bytes by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/4112 + * ***IMPORTANT:*** This is incompatible with the "[Extra save space with two lines of code](https://github.com/pret/pokeemerald/wiki/Extra-save-space-with-two-lines-of-code)" tutorial, which allocates that additional space to `SaveBlock1`, `SaveBlock2`, and `PokemonStorage` instead. To preserve save compatibility, change `SAVE_BLOCK_3_CHUNK_SIZE` to 0 and keep `SECTOR_DATA_SIZE` as 4084. +* Trainer Control + * Trainer data encapsulation by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4216 + * Added options for `TrainerMon`: + * By @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3438 + * Dynamax Level (`dynamaxLevel`) + * Gigantamax Factor (`gigantamaxFactor`) + * By @Nopinou in https://github.com/rh-hideout/pokeemerald-expansion/pull/4169 + * AI flags to signal when to Dynamax (`shouldDynamax`) + * AI flags to signal when to Terastalize (`shouldTerastal`) + * Sets neutral nature and ability to 0 as default by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4172 +* Added `randompercentage` and `randomelement` script commands by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/4189 + * Allows to do the following: + ``` + @ VAR_RESULT is one of Treecko, Torchic, or Mudkip + randomelement SPECIES_TREECKO, SPECIES_TORCHIC, SPECIES_MUDKIP + @ Gives a random one of Treecko, Torchic, or Mudkip. + givemon VAR_RESULT, 5 + ``` + ``` + @ VAR_RESULT is TRUE 25% of the time, and FALSE 75% of the time. + randompercentage 25 + @ Gives a Wobbuffet that is shiny 25% of the time. + givemon SPECIES_WOBBUFFET, 20, isShiny=VAR_RESULT + ``` +### Changed +* Simplified creation of Object Events by adding `overworld_ascending_frames` for sequential `overworld_ascending`s by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3625 +* Comparison functions now follow -1, 1, 0 convention by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3777 +* Centralized Trainer sprites by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3597 +* Standarized usage of array shuffling to use `Shuffle` function by @tertu-m in https://github.com/rh-hideout/pokeemerald-expansion/pull/3801 +* Turned nature names into compound strings by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3871 +* `TrainerMoney` struct is renamed to `TrainerClass` and now includes Trainer Class name by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3875 +* Improve error message with unsupported cpp by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4272 +### Fixed +* Fixed potential compiler errors by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4252 +* Fixed `ScriptGiveMonParameterized` not recognizing the state of `P_FLAG_FORCE_SHINY` and `P_FLAG_FORCE_NO_SHINY` by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4256 +* Fixed a graphical issue when catching a form of a Pokémon for the first time by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4279 +* Fixed `ScriptGiveMonParameterized` randomizing nature even when being set by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4271 + +## ✨ Feature Branches ✨ +### ***Incorporated @SBird1337's Dynamic Multichoices*** by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3826 +* This allows to set up custom multichoices much easier! +* Allows you to control what options appear based custom conditions (such as them being based on what items you have currently, or even completely at random!). +* Event callbacks can be added as well, to fully customize what happens with your multichoices. + * Included there's `DYN_MULTICHOICE_CB_SHOW_ITEM`, which shows icons of the items defined by your script. +* Compatible with Poryscript. +* For more information and how to use it, please visit the [Pokécommunity thread](https://www.pokecommunity.com/threads/event-scripts-dynamic-multichoice.489984/). +### ***Incorporated @ghoulslash's save block branch*** by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4113 +* Differences from the the standalone branch: + - Moved configs to dedicated file (`include/config/save.h`). + - Fixed comments to the proper amount of space saved. + - Added `FREE_MYSTERY_GIFT`, saving 876 bytes in `SaveBlock1`. + * Added new `FREE_EXTRA_SEEN_FLAGS_SAVEBLOCK2` to Pokedex struct to save an extra 108 in `SaveBlock2` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4213 + * Renamed `FREE_EXTRA_SEEN_FLAGS` to `FREE_EXTRA_SEEN_FLAGS_SAVEBLOCK1` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4213 + - Converted `#ifndef` configs to the config format the rest of expansion uses + - Cleaned up the code and fixed to work on `modern`. +### ***TheXaman's Debug Menu***: +#### Added +* *"Give Pokémon Complex"* option can now set EVs by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3566 + * Fix by @gabrielcowley in https://github.com/rh-hideout/pokeemerald-expansion/pull/3930 +* Added *"Clear bag"* option by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/ +* Added new party debug options by @LOuroboros, with help from @ghoulslash and @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3924 + * *"Check IV"*: Checks the selected Pokémon's IVs. + * *"Check EV"*: Checks the selected Pokémon's EVs. + * *"Clear Party"*: Deletes all Pokémon from the Player's party. + * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4275 +* Upgraded "Poison Party" to "Inflict Status1" by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4235 + * Now it can also inflict: Paralysis, Sleep, Burn, Freeze and Frostbite. + * Can be applied to a single member or the whole party. + * Built using SBird's Multichoice. +#### Changed +* Cleaned up text and adjusted size to support longer text by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3919 +* Reorganization and better naming by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3926 +* Removed duplicated "Give all TMs" option by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4025 +#### Fixed +* Fixed sound effect clipping when giving an item via debug menu by using a shorter sound by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4025 + +## 🐉 Pokémon 🐉 +### Added +* Added Indigo Disk Pokémon data: + * Doesn't break saves since it uses the reserved IDs used in 1.7.0 + * Species data by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3878 + * Cleanup by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3974 + * Sprites from [PokéCommunity's 64x64 DS-Style thread](https://www.pokecommunity.com/threads/ds-style-gen-vii-and-beyond-pok%C3%A9mon-sprite-repository-in-64x64.368703/post-10786160) by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4117 + * Front/Back sprites for: Gouging Fire, Raging Bolt, Iron Boulder, Iron Crown, Archaludon, Hydrapple. + * Icon for: Hydrapple. + * Cries by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4164 +* Added `P_FOOTPRINTS` config to disable Pokémon footprints, saving around 35KB of ROM space by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3902 + * Cleanup by + * @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3925 + * @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4251 +* Added missing `P_UPDATED_EVS` config that allows setting the EV yield changes across generations by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3993 +* Added missing `P_UPDATED_EXP_YIELDS` config that allows setting the Experience yield changes across generations by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3995 +* Added evolution methods that require custom trackers (`MON_DATA_EVOLUTION_TRACKER`) by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4087 + * `EVO_LEVEL_MOVE_TWENTY_TIMES`: + * Stantler can now evolve into Wyrdeer by using Psyshield Bash 20 times. + * Primeape can now evolve into Annihilape by using Rage Fist 20 times. + * `EVO_LEVEL_RECOIL_DAMAGE_MALE`/`EVO_LEVEL_RECOIL_DAMAGE_FEMALE` + * White-Striped Basculin can now evolve into Basculegion when leveling up after receiving 294HP of recoil damage and being the corresponding gender. +* Added missing Paldean Wooper icon by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4260 +* Added missing data for placeholder Pokémon by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4281 + * Internal Mothim forms used for accurate breeding. + * Internal Scatterbug/Spewpa forms that can be used to specify Vivillon form in previous stages. + * Totem Pokémon + * Partner Pikachu/Eevee +### Changed +* ***Made all species IDs absolute instead of relative, to avoid confusion when adding new species*** by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4281 +* Moved shared Pokédex text descriptions to their own file by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4281 +* Renamed `species_info/gen_X.h` to `species_info/gen_X_families.h` +* Added missing entries for Hidden Abilities that default to `ABILITY_NONE`. +* Updated Gen 9 mon sprites from [PokéCommunity's 64x64 DS-Style thread](https://www.pokecommunity.com/threads/ds-style-gen-vii-and-beyond-pok%C3%A9mon-sprite-repository-in-64x64.368703/post-10786160) by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3969 + - Brute Bonnet + - Chi-Yu + - Flutter Mane + - Iron Bundle + - Sandy Shocks + - Scream Tail + - Skeledirge + - Slither Wing +* Added `MON_TYPES` and `MON_EGG_GROUPS` metaprogram macros by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4154 + * They're used to define a single type/egg group without needing to define it twice. + ```diff + -.types = { TYPE_WATER, TYPE_WATER }, + +.types = MON_TYPES(TYPE_WATER), + ... + -.eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + +.eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_3), + ``` + Still supports double types: + ```diff + -.types = { TYPE_GROUND, TYPE_ROCK }, + +.types = MON_TYPES(TYPE_GROUND, TYPE_ROCK), + ... + -.eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD }, + +.eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_FIELD), + ``` +* ***To avoid confusion, reverted gSpeciesInfo "INFO" macros*** by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4230 + +## ⚔️ Battle General ⚔️ ## +### Added +* Implemented optional Gen1 type immunity logic. by @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/3627 +* Added Calyrex's blue Dynamax aura by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4018 +* Expanded `VAR_TERRAIN` functionality + * Added `B_VAR_STARTING_STATUS_TIMER` to allow `VAR_TERRAIN` (now called `B_VAR_STARTING_STATUS`) to last only a certain amount of turns instead of permanently by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4132 + * Further expanded by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4176 + * Can be used to set up these as well: + * Trick Room + * Magic Room + * Wonder Room + * Tailwind (for player or opponent sides independenly) + * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4237 + +* AI score debug menu can now cycle through battlers by pressing L/R by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4134 +### Changed +* Simplified Battle Partners code (eg. Steven) by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3592 + * Based off @ShinyDragonHunter's [CustomMultiBattles](https://github.com/ShinyDragonHunter/pokeemerald/tree/CustomMultiBattles) branch. + * Removed specialized code for Steven partner cases. + * Partners are now stored in their own array. + * Fixed infinite loop by @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/3808 +* B_VAR_TERRAIN_TIMERRenamed VAR_TERRAIN to B_VAR_TERRAIN and added a var-based field terrain timer by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4132 +### Fixed +* Fixed AI calculations potentially stomping data when emiting data by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3784 +* Fixed Battle AI debug screen showing shiny sprites by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3922 +* Fixed Gigantamax Factor not changing form by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4108 +* Fixed Quick Draw having increased chances of activation in double battles by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4266 + +## 🤹 Moves 🤹 +### Added +* Added missing move effects: + * Ally Switch by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3533 + * Cleanup by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3835 + * Doodle by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3609 + * Cleanup by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3800 + * Fillet Away by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3616 + * Shed Tail by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4016 + * Last Respects by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4151 + * Tidy Up by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4136 +* Added Indigo Disk Moves + * Data by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3704 + * Moves with existing effects by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3704 + * Thunderclap + * Mighty Cleave + * Tachyon Cutter + * Hard Press + * Temper Flare + * Animation by @ZnogyroP in https://github.com/rh-hideout/pokeemerald-expansion/pull/4145 + * Supercell Slam + * Malignant Chain + * New move effects + * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3853 + * Burning Bulwark (uses Protect's animation as placeholder) + * Alluring Voice (and animation) + * Fickle Beam + * Electro Shot + * Animation by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4148 + * Psychic Noise by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4005 + * Animation by @ZnogyroP in https://github.com/rh-hideout/pokeemerald-expansion/pull/4145 + * Cleanup by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4021 + * Upper Hand (and animation) by @ZnogyroP in https://github.com/rh-hideout/pokeemerald-expansion/pull/4085 + * Dragon Cheer by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4122 + * Cleanup by @AlexOn1ine, based on comments by @Skeli789 and @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/4136 +* Added move animations for existing moves: + * By @ZnogyroP, with adjustments from @AlexOn1ine and @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/3989 + * Raging Bull + * Gigaton Hammer + * Ice Spinner + * Aqua Cutter + * Jet Punch by @PCG06 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4067 + * By @ZnogyroP in https://github.com/rh-hideout/pokeemerald-expansion/pull/4145 + * Last Respects + * Lumina Crash + * Kowtow Cleave + * Torch Song + * Aqua Step + * Hydro Steam + * Tidy Up + * Pounce + * Trailblaze + * Chilling Water + * Rage Fist + +### Changed +* Updated move data to Gen 9 with configs by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3704 + * Added `sketchBanned` move flag, given to: + * Sketch, Dark Void, Hyperspace Fury, Revival Blessing, Torque moves. + * Luster Purge: 70 Power -> 95 Power + * Mist Ball: 70 Power -> 95 Power + * Aeroblast: Added Wind Move flag. +* Ivy Cudgel's type now changes based on Ogerpon's form rather than held item by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3865 +* Renamed `healBlockBanned` flag to `healingMove` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3981 +* Removed some hardcoded move IDs + * By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3982 + * `MOVE_EXPLOSION`, `MOVE_SELF_DESTRUCT`, `MOVE_FRUSTRATION`, `MOVE_AURA_WHEEL`, `MOVE_PRESENT`, `MOVE_BLIZZARD`. + * By @ZnogyroP in https://github.com/rh-hideout/pokeemerald-expansion/pull/4085 + * `MOVE_SUCKER_PUNCH`. +* Removed now redundant `EFFECT_HURRICANE` in favor of `EFFECT_THUNDER` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3982 +* Renamed `constants/z_move_effects.h` to `constants/battle_z_move_effects.h` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3982 +* Updated Draco Meteor's animation to use @Skeli789's from CFRU, by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3989 +* Improved Double Shock's animation by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3989 +* Set `EFFECT_PLACEHOLDER` as the default move effect by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4079 +* Renamed `EFFECT_FAKE_OUT` to `EFFECT_FIRST_TURN_ONLY` due to the flinch effect separation by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4081 +* Renamed `EFFECT_WRING_OUT` to `EFFECT_VARY_POWER_BASED_ON_HP` and now it uses `argument` to set its base power by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4180 +### Fixed +* Fixed `GetBattleAnimMoveTargets` function that caused multiple animation issues, such as Overheat's animation by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4139 +* Fixed hardcoded battle strings by @ZnogyroP in https://github.com/rh-hideout/pokeemerald-expansion/pull/4147 + * Hospitality had Sinistcha's name hardcoded. + * Battler prefixes (eg. "The opposing") were hardcoded in some places. +* Fixed Supreme Overlord's incorrect effect by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4151 +* Fixed Hard Press' base power by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4180 +* Fixed Teeter Dance not being copyable by Dancer in singles by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4129 + * *Known issue*: In doubles, it copies the move, but only confuses a single Pokémon. + +## 🎭 Abilities 🎭 +### Added +* Added Mind's Eye by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3782 +* Added Hospitality by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3818 + * Fixed Dynamax interaction by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3821 +* Added Embody Aspect (all 4 versions) by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3821 +* Added Supersweet Syrup by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4115 + * Cleanup by + * @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4170 + * @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4171 +* Indigo Disk Abilities + * Data by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3838 +### Changed +* Updated ability banlists to Indigo Disk data by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3609 +### Fixed +* Fixed Tangling Hair preventing Rocky Helmet from triggering interaction by @AlexOn1ine, with help from @ZnogyroP in https://github.com/rh-hideout/pokeemerald-expansion/pull/4219 + +## 🧶 Items 🧶 +### Added +* Added Meteorite item form change functionality for Deoxys by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3770 +* Added item price configs by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3834 + * `I_PRICE` and `I_BERRY_PRICE`. + * Fixed missing data by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3836 +* Added Pokemon Box Link functionality by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3837 +* Added Indigo Disk item data by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3854 + * Metal Alloy + * Stellar Tera Shard +* Added Legends: Arceus item data by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3825 + * Jubilife Muffin - Local specialty (Full Heal) + * Remedy - Medicine (Potion) + * Fine Remedy - Medicine (Super Potion) + * Super Remedy - Medicine (Hyper Potion) + * Aux items + * Aux Evasion + * Aux Power + * Aux Guard + * Aux Powerguard + * Sprites based off [lichen's sprites from Relic Castle](https://reliccastle.com/resources/1287/) by @MartyKen in https://github.com/rh-hideout/pokeemerald-expansion/pull/4160 + * Choice Dumpling + * Swap Snack + * Twice Spiced Radish + * Pokéshi Doll +* ***Berry Expansion*** by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3618 + * Berry Mutations (from XY): Planting a Berry tree next to another has a `BERRY_MUTATION_CHANCE` (25% by default) chance of causing a mutation (as dictated by `sBerryMutations`). Mutations mean that besides the usual output, the Berry plant will have a single Berry of the mutation (e.g. planting a Iapapa Berry next to a Mago Berry will cause it to have a single Pomeg Berry on top of its usual output). + * Enabled via `OW_BERRY_MUTATIONS` config. + * Easier Berry Debugging: Add berry manipulation functions to the debug menu to allow for forced growth and more. + * Mulch (from Gen IV and XY): Using it on soil affects the growth, watering and production values of the plants. + * Enabled via `OW_BERRY_MULCH_USAGE` config. + * Gradient watering (from Gen IV and XY) (`OW_BERRY_MOISTURE` and `OW_BERRY_ALWAYS_WATERABLE`): rather than keeping track of if each stage has been watered like Gen III, the humidity of the soil is kept track of separately. + * Enabled via `OW_BERRY_MOISTURE` config. + * Switch between Gen4/6 via `OW_BERRY_ALWAYS_WATERABLE` config. + * Rate of drying set by `OW_BERRY_DRAIN_RATE` config. + * Weeding from XY: Berries may require unweeding for additional produce. + * Enabled via `OW_BERRY_WEEDS` config. + * Pests (from XY): Bug-type Pokémon may appear to feast on your plants. + * Enabled via `OW_BERRY_PESTS` config. + * Customisable stages: XY has six stages rather than four, so with this easy toggle you can choose the amount of stages without influencing the growth time. + * Enabled via `OW_BERRY_SIX_STAGES` config. + * Growth configs: Pick a generation whose Berry growth rates to use + * Changed via `OW_BERRY_GROWTH_RATE` config. + * Yield configs: Pick a generation whose Berry yields to use + * Changed via `OW_BERRY_YIELD_RATE` config. + * Cleanup by + * @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3931 + * @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/4028 + * @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4275 +* Added missing pre-Gen7 Power Item config (giving 4 EVs instead of 8) by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3961 +* Added LGPE+ Premier Ball Bonus config by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4191 + * Originally based off [pret's tutorial](https://github.com/pret/pokeemerald/wiki/LGPE-Style-Bonus-Premier-Balls), but with the following changes: + - If there's no space for the full amount of Premier Balls that would've been given, give the partial amount. + - Shows the amount of Premier Balls given. +### Changed +* ***Raised the limit of max items per stack to 999*** by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3923 +* ***Unified item data*** + * Move descriptions are now defined in `src/data/items.h` instead of `src/data/text/item_descriptions.h` by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3432 + * Cleanup by + * @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3797 + * @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4088 + * Moved Item Effects (`gItemEffectTable`) to `gItemsInfo` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3991 + * Renamed `gItems` to `gItemsInfo` by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4068 +* Item Balls now can be defined in the map's JSON (or using PoryMap) via the common script `Common_EventScript_FindItem` instead of needing to define a new script for it by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/3942 + ```diff + "trainer_type": "TRAINER_TYPE_NONE", + - "trainer_sight_or_berry_tree_id": "0", + - "script": "AbandonedShip_CaptainsOffice_EventScript_ItemStorageKey", + + "trainer_sight_or_berry_tree_id": "ITEM_STORAGE_KEY", + + "script": "Common_EventScript_FindItem", + "flag": "FLAG_ITEM_ABANDONED_SHIP_CAPTAINS_OFFICE_STORAGE_KEY" + ``` + * Item count can also be defined by using the `movement_range_x` field: + ```diff + "trainer_sight_or_berry_tree_id": "ITEM_NUGGET", + "script": "Common_EventScript_FindItem", + "flag": "FLAG_ITEM_AQUA_HIDEOUT_B1F_NUGGET" + + "movement_range_x": 2, + ``` + * Existing scripts have been adapted to use this new format. +* Added plural item name support with new `pluralName` field in `gItemsInfo` by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/3942 + * When obtaining multiples of an item and the field is not defined, it appends an `s` at the end instead (eg. "Brendan got 40 Potion***s***!"). + * Python migration script available in `migration_scripts/item_ball_refactor.py` by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/3997 + * Deprecated `GetBerryCountString` by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4012 + * Cleanup by + * @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4001 + * @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4015 +* Combined `CannotUseBagBattleItem` and `CannotUsePartyBattleItem` into `CannotUseItemsInBattle` by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3524 +### Fixed +* Fixed some ball multiplier data by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3939 + * Fixed `B_SPORT_BALL_MODIFIER` config being ignored and always applying a 1.5x multiplier. + * Added missing `B_SAFARI_BALL_MODIFIER` that makes Safari Balls have a 1x multiplier from Gen7 onwards. + * Added missing `B_LURE_BALL_MODIFIER` state that sets Lure Ball's multiplier to 4x from Gen8 onwards. +* Fixed Quick Claw having increased chances of activation in double battles by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4266 + +## 🤖 Battle AI 🤖 +### Added +* Added `AI_CalcMoveScore` function to more easily control score increases by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3984 +* Added `AI_FLAG_POWERFUL_STATUS` AI flag, replacing `AI_FLAG_SCREENER` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4125 + * It's meant to force the AI to do status instead of fainting the target (eg. setting up Trick Room to support the rest of the team) +### Changed +* AI flags are now saved by battler position instead of per side by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/3003 + * Cleanup by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4114 +### Fixed +* Improved AI score changes handling by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4036 + * AI will not further increase Attack / Sp. Atk stat if it knows it faints to target. + * AI will not use Throat Chop if opposing mon has a better move. + * AI will select Throat Chop if the sound move is the best damaging move from opposing mon. + * Cleanup by + * @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4074 + * @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4075 + * @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4199 +* Fixed AI not setting sets up double flags correctly by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4228 +* Move most damage `AI_BadMove` checks to `AI_CalcDamage` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4238 + * Fixes AI trying to use Burn Up after losing its fire type. + * Fixes AI trying to use Electric moves when the target has Volt Absorb. +* Fixed AI vs AI battles would crash during the throw animation by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4240 +* Fixed AI considering Mold Breaker but not Turboblaze/Teravolt for flinch-related decisions by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4244 + +## 🧹 Other Cleanup 🧹 +* Removed hardcoded uses of `MOVE_STUFF_CHEEKS` and `MOVE_ME_FIRST` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3950 +* Cleaned up `CheckMoveLimitations` to use less horizontal space by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3950 +* Small `CanFirstMonBoostHeldItemRarity` optimization by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4008 +* Tag previously-unused icon pals as such in code. by @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/4072 +* Converted a bunch of `#if/#else` to regular conditions by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4071 +* Clean up contest strings by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3876 +* Fixed inconsistent braces style by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4023 +* Replaced some `AI_GetMoveEffectiveness` instances with `AI_CanStatus` for speeding up calculations by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4166 +* Remove some unused data by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4239 +* Use `u32` instead of `u8`/`u16` in gflib files by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4250 +* Unify monSpritesGfx bytes/ptr field by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4252 +* `gHeap` can go in the middle of ram by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4253 +* Corrected initial value of `targetSpecies` variable in `GetEvolutionTargetSpecies` by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4269 +* Replaces `MOVE_FIRST_IMPRESSION` argument with a check for Fake Out for 100% flinch effect by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4274 + +## 🧪 Test Runner 🧪 +### Added +* Added option to set flags in tests by @fakuzatsu in https://github.com/rh-hideout/pokeemerald-expansion/pull/3786 +* Added missing Illuminate and Keen Eye Tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3782 +* Added missing Belly Drum tests by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3616 +* Added missing Stuff Cheeks by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3950 +* Added Teeter Dance + Dancer test for doubles by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4274 +### Changed +* Updated tests to use Gen 9 mon for appropiate abilities by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3740 +* Tests no longer allow to use SEND_OUT if the chosen mon is fainted by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3752 +### Fixed +* Consistent `BENCHMARK` timing by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3866 +* Fixed Teatime test checking for Wonder Room instead of Magic Room by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3950 +* Fixed test battle move category assumptions by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4051 +* Fixed Tri Attack status ability immunity test by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4229 +* Fixed Dauntless Shield test names by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4229 + +## 📦 Pret merges 📦 +* 2023/12/30 by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3869 +* 2024/02/10 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4173 +* 2024/03/07 by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4255 + +## New Contributors +* @cfmnephrite made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3575 +* @tertu-m made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3780 +* @aronson made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3892 +* @MartyKen made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/4049 +* @ZnogyroP made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/4085 +* @Nopinou made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/4169 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.7.4...expansion/1.8.0 + + diff --git a/docs/changelogs/template.md b/docs/changelogs/template.md index f67520c388..57edc6ec6a 100644 --- a/docs/changelogs/template.md +++ b/docs/changelogs/template.md @@ -17,6 +17,14 @@ ### Fixed * N/A +## ✨ Feature Branches ✨ +### Added +* N/A +### Changed +* N/A +### Fixed +* N/A + ## 🐉 Pokémon 🐉 ### Added * N/A diff --git a/include/constants/expansion.h b/include/constants/expansion.h index 63f262aeee..49998a20d3 100644 --- a/include/constants/expansion.h +++ b/include/constants/expansion.h @@ -1,12 +1,13 @@ #ifndef GUARD_CONSTANTS_EXPANSION_H #define GUARD_CONSTANTS_EXPANSION_H +// 1.8.0 #define EXPANSION_VERSION_MAJOR 1 -#define EXPANSION_VERSION_MINOR 7 -#define EXPANSION_VERSION_PATCH 4 +#define EXPANSION_VERSION_MINOR 8 +#define EXPANSION_VERSION_PATCH 0 // FALSE if this this version of Expansion is not a tagged commit, i.e. // it contains unreleased changes. -#define EXPANSION_TAGGED_RELEASE FALSE +#define EXPANSION_TAGGED_RELEASE TRUE #endif From 6b283506498e08ee9d984051fd3909cc4f6ba761 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sun, 17 Mar 2024 13:19:32 -0300 Subject: [PATCH 54/55] Non-tagged --- include/constants/expansion.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/constants/expansion.h b/include/constants/expansion.h index 49998a20d3..9b733a14f1 100644 --- a/include/constants/expansion.h +++ b/include/constants/expansion.h @@ -8,6 +8,6 @@ // FALSE if this this version of Expansion is not a tagged commit, i.e. // it contains unreleased changes. -#define EXPANSION_TAGGED_RELEASE TRUE +#define EXPANSION_TAGGED_RELEASE FALSE #endif From 920289641a2e5961ca22964092d18f23dbc6b41a Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Sun, 17 Mar 2024 16:03:40 -0500 Subject: [PATCH 55/55] Add evolution method for Gimmighoul, EVO_LEVEL_ITEM_COUNT_999 (#4261) * Add evolution method for Gimmighoul, EVO_LEVEL_COLLECT_999 * Change to EVO_LEVEL_ITEM_COUNT_999 * Make logic use less duplicate code * Update gen_9_families.h * Update party_menu.c * Address reviews --- include/constants/pokemon.h | 12 +++++----- src/battle_main.c | 11 ++++++++-- .../pokemon/species_info/gen_9_families.h | 4 ++-- src/party_menu.c | 22 ++++++++++++++++--- src/pokedex_plus_hgss.c | 6 +++++ src/pokemon.c | 21 ++++++++++++++++++ 6 files changed, 64 insertions(+), 12 deletions(-) diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 186ef5de59..1adefd4938 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -294,14 +294,16 @@ #define EVO_LEVEL_MOVE_TWENTY_TIMES 47 // Pokémon levels up after having used a move for at least 20 times #define EVO_LEVEL_RECOIL_DAMAGE_MALE 48 // Pokémon levels up after having suffered specified amount of non-fainting recoil damage as a male #define EVO_LEVEL_RECOIL_DAMAGE_FEMALE 49 // Pokémon levels up after having suffered specified amount of non-fainting recoil damage as a female +#define EVO_LEVEL_ITEM_COUNT_999 50 // Pokémon levels up after trainer has collected 999 of a specific item // Evolution 'modes,' for GetEvolutionTargetSpecies #define EVO_MODE_NORMAL 0 -#define EVO_MODE_TRADE 1 -#define EVO_MODE_ITEM_USE 2 -#define EVO_MODE_ITEM_CHECK 3 // If an Everstone is being held, still want to show that the stone *could* be used on that Pokémon to evolve -#define EVO_MODE_BATTLE_SPECIAL 4 -#define EVO_MODE_OVERWORLD_SPECIAL 5 +#define EVO_MODE_CANT_STOP 1 +#define EVO_MODE_TRADE 2 +#define EVO_MODE_ITEM_USE 3 +#define EVO_MODE_ITEM_CHECK 4 // If an Everstone is being held, still want to show that the stone *could* be used on that Pokémon to evolve +#define EVO_MODE_BATTLE_SPECIAL 5 +#define EVO_MODE_OVERWORLD_SPECIAL 6 #define MON_PIC_WIDTH 64 #define MON_PIC_HEIGHT 64 diff --git a/src/battle_main.c b/src/battle_main.c index e023080d3e..5e5f8187bb 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -5848,16 +5848,23 @@ static void TryEvolvePokemon(void) { u16 species; u8 levelUpBits = gLeveledUpInBattle; + bool32 evoModeNormal = TRUE; levelUpBits &= ~(gBitTable[i]); gLeveledUpInBattle = levelUpBits; - species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_NORMAL, levelUpBits, NULL); + species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_NORMAL, ITEM_NONE, NULL); + if (species == SPECIES_NONE) + { + species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_CANT_STOP, ITEM_NONE, NULL); + evoModeNormal = FALSE; + } + if (species != SPECIES_NONE) { FreeAllWindowBuffers(); gBattleMainFunc = WaitForEvoSceneToFinish; - EvolutionScene(&gPlayerParty[i], species, TRUE, i); + EvolutionScene(&gPlayerParty[i], species, evoModeNormal, i); return; } } diff --git a/src/data/pokemon/species_info/gen_9_families.h b/src/data/pokemon/species_info/gen_9_families.h index 43c72fa2c5..06653c20de 100644 --- a/src/data/pokemon/species_info/gen_9_families.h +++ b/src/data/pokemon/species_info/gen_9_families.h @@ -5217,7 +5217,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .levelUpLearnset = sGimmighoulLevelUpLearnset, .teachableLearnset = sGimmighoulTeachableLearnset, .formSpeciesIdTable = sGimmighoulFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_GHOLDENGO}), + .evolutions = EVOLUTION({EVO_LEVEL_ITEM_COUNT_999, ITEM_GIMMIGHOUL_COIN, SPECIES_GHOLDENGO}), }, [SPECIES_GIMMIGHOUL_ROAMING] = @@ -5271,7 +5271,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .levelUpLearnset = sGimmighoulLevelUpLearnset, .teachableLearnset = sGimmighoulTeachableLearnset, .formSpeciesIdTable = sGimmighoulFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_GHOLDENGO}), + .evolutions = EVOLUTION({EVO_LEVEL_ITEM_COUNT_999, ITEM_GIMMIGHOUL_COIN, SPECIES_GHOLDENGO}), }, [SPECIES_GHOLDENGO] = diff --git a/src/party_menu.c b/src/party_menu.c index 19f50b7c88..7044244709 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5548,20 +5548,28 @@ void ItemUseCB_RareCandy(u8 taskId, TaskFunc task) if (cannotUseEffect) { u16 targetSpecies = SPECIES_NONE; + bool32 evoModeNormal = TRUE; // Resets values to 0 so other means of teaching moves doesn't overwrite levels sInitialLevel = 0; sFinalLevel = 0; if (holdEffectParam == 0) + { targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_NORMAL, ITEM_NONE, NULL); + if (targetSpecies == SPECIES_NONE) + { + targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_CANT_STOP, ITEM_NONE, NULL); + evoModeNormal = FALSE; + } + } if (targetSpecies != SPECIES_NONE) { RemoveBagItem(gSpecialVar_ItemId, 1); FreePartyPointers(); gCB2_AfterEvolution = gPartyMenu.exitCallback; - BeginEvolutionScene(mon, targetSpecies, TRUE, gPartyMenu.slotId); + BeginEvolutionScene(mon, targetSpecies, evoModeNormal, gPartyMenu.slotId); DestroyTask(taskId); } else @@ -5735,12 +5743,20 @@ static void CB2_ReturnToPartyMenuUsingRareCandy(void) static void PartyMenuTryEvolution(u8 taskId) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; - u16 targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_NORMAL, ITEM_NONE, NULL); + u16 targetSpecies = SPECIES_NONE; + bool32 evoModeNormal = TRUE; // Resets values to 0 so other means of teaching moves doesn't overwrite levels sInitialLevel = 0; sFinalLevel = 0; + targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_NORMAL, ITEM_NONE, NULL); + if (targetSpecies == SPECIES_NONE) + { + targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_CANT_STOP, ITEM_NONE, NULL); + evoModeNormal = FALSE; + } + if (targetSpecies != SPECIES_NONE) { FreePartyPointers(); @@ -5748,7 +5764,7 @@ static void PartyMenuTryEvolution(u8 taskId) gCB2_AfterEvolution = CB2_ReturnToPartyMenuUsingRareCandy; else gCB2_AfterEvolution = gPartyMenu.exitCallback; - BeginEvolutionScene(mon, targetSpecies, TRUE, gPartyMenu.slotId); + BeginEvolutionScene(mon, targetSpecies, evoModeNormal, gPartyMenu.slotId); DestroyTask(taskId); } else diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c index db80b2dc19..6a2d16caee 100644 --- a/src/pokedex_plus_hgss.c +++ b/src/pokedex_plus_hgss.c @@ -247,6 +247,7 @@ static const u8 sText_EVO_ITEM_HOLD[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}"); static const u8 sText_EVO_LEVEL_MOVE_TWENTY_TIMES[] = _("{LV}{UP_ARROW} after 20x {STR_VAR_2}"); static const u8 sText_EVO_LEVEL_RECOIL_DAMAGE_MALE[] = _("{LV}{UP_ARROW} with {STR_VAR_2} recoil, male"); static const u8 sText_EVO_LEVEL_RECOIL_DAMAGE_FEMALE[] = _("{LV}{UP_ARROW} with {STR_VAR_2} recoil, female"); +static const u8 sText_EVO_LEVEL_ITEM_COUNT_999[] = _("{LV}{UP_ARROW} with 999 {STR_VAR_2} in bag"); static const u8 sText_EVO_UNKNOWN[] = _("Method unknown"); static const u8 sText_EVO_NONE[] = _("{STR_VAR_1} has no evolution."); @@ -6653,6 +6654,11 @@ static u8 PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, 3); StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_RECOIL_DAMAGE_FEMALE); break; + case EVO_LEVEL_ITEM_COUNT_999: + item = evolutions[i].param; + CopyItemName(item, gStringVar2); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_ITEM_COUNT_999); + break; default: StringExpandPlaceholders(gStringVar4, sText_EVO_UNKNOWN ); break; diff --git a/src/pokemon.c b/src/pokemon.c index ab36c3e7fb..614adf6c5c 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4389,6 +4389,27 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s } } break; + case EVO_MODE_CANT_STOP: + level = GetMonData(mon, MON_DATA_LEVEL, 0); + friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, 0); + + for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) + { + if (SanitizeSpeciesId(evolutions[i].targetSpecies) == SPECIES_NONE) + continue; + + switch (evolutions[i].method) + { + case EVO_LEVEL_ITEM_COUNT_999: + if (CheckBagHasItem(evolutions[i].param, 999)) + { + targetSpecies = evolutions[i].targetSpecies; + RemoveBagItem(evolutions[i].param, 999); + } + break; + } + } + break; case EVO_MODE_TRADE: for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) {